51单片机内部拥有两个定时/计数器 T0和T1

两种工作模式:

(1)计数器工作模式

(2)定时器工作模式

 定时器/计数器的结构

TMOD:选择定时器/计数器T0、T1的工作模式和工作方式。

TCON:控制T0、T1的启动和停止计数,同时包含了T0、T1的状态。

单片机复位时,两个寄存器的所有位都被清0。

4种工作方式(方式0-方式3):

M1 M0 工 作 方 式

0 0 方式0,13位定时器/计数器。

0 1 方式1,16位定时器/计数器。

1 0 方式2,8位常数自动重新装载

1 1 方式3,仅适用于T0,T0分成两个8位计数器,T1停止计数。

对于定时器/计数器的介绍我就不做过多介绍,需要详细了解的小伙伴可以自己查询一下相关书籍资料。

今天为大家演示的是利用定时器/计数器T0实现计时60秒的秒表,程序的功能是单片机上电后,系统自动从0开始显示到59,然后在从新从开始,一直循环显示。

#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit we1=P2^6;
sbit we2=P2^7;
sbit le=P2^0;
unsigned char code tabl[]={0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71};
uchar num,num1 ,shi,ge;
void delayms(uint xms){//延时函数
uint i,j;
for(i=xms;i>0;i--)for(j=110;j>0;j--);}void display(){//显示函数we1=0;//表示左端第一个数码管公共端接低电平le=1;//打开锁存器P0=tabl[shi];//显示十位上的数字delayms(5);//延时5msle=0;关闭锁存器we1=1;P0=0xff;//消影we2=0;le=1;P0=tabl[ge];//显示个位上的数字delayms(5);le=0;we2=1;P0=0xff;}void main(){
TMOD=0X01;//设置T0的工作方式为1TH0=(65536-50000)/256;//初始化TL0=(65536-50000)%256;EA=1;//开总中断ET0=1;//开T0中断TR0=1;//启动中断while(1){display();}}void ex0_time()interrupt 1//中断函数{TH0=(65536-50000)/256;TL0=(65536-50000)%256;num++;//记数满20表示时间到达1Sif(num==20){num=0;num1++;//用来统计时间60sif(num1==60){num1=0;}shi=num1/10;//获取数码管十位上的显示数字下标值,用于在显示函数中对十位数字进行显示ge=num1%10;//获取数码管个位上的显示数字下标值,用于在显示函数中对个位数字进行显示}}

Protues仿真结果截图:

定时器/计数器使用示例(c语言程序)相关推荐

  1. c语言字符输出程序示例,C语言程序实例

    C语言程序实例 引导语:C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点.为了帮助大家更直观地了解C语言,以下是百分网小编介绍给大家的'C语言程序实例,希望大家喜欢! [例 ...

  2. 89c52单片机c语言延时程序计算 脉冲,89C52单片机定时器延时时间的计算与程序解析 - STC89C52单片机定时器/计数器详解(含程序和定时器2)...

    STC单片机STC89C52RC定时器延时时间的计算 延时时间要根据晶振频率计算,不同板子可能有所不同. 时钟周期: 1/时钟源,在我现在这块板子上,晶振频率是11.0592M,也就是时钟周期是 1/ ...

  3. 定时器驱动数码管c语言程序,74hc595驱动数码管时间程序

    74hc595驱动数码管时间程序 这里是电路图: 下面是51单片机驱动74hc595芯片的程序: #include                            //包含51单片机的头文件 # ...

  4. 定时器驱动数码管c语言程序,用c语言编写,实用定时器实现数码管15倒计时

    #include#define uchar unsigned char uchar miao,t0,flat,shiwei,gewei,; sbit dula = p2^6; sbit wela = ...

  5. 自加计数器c语言程序,计数器 加1 C语言 程序.doc

    #include #include #define uchar unsigned char #define uint unsigned int uchar Count,timecount; uchar ...

  6. 定时器计数器实验C语言程序,实验二 单片机定时器和计数器编程

    仲恺农业工程学院实验报告纸 信息学院 (院.系)专业班组单片机原理及接口技术课实验二单片机定时器/计数器编程 一.实验目的 1.掌握单片机定时器/计数器的工作方式: 2.掌握单片机定时器/计数器的编程 ...

  7. 定时器计数器实验C语言程序,单片机定时器计数器实验报告.docx

    单片机定时器计数器实验报告 单片机定时器计数器实验报告 篇一:单片机计数器实验报告 计数器实验报告 ㈠ 实验目的 1. 学习单片机内部定时/计数器的使用和编程方法: 2. 进一步掌握中断处理程序的编程 ...

  8. 52单片机定时器2使用(C语言程序)

    本文是关于52单片机定时器计数器2做为普通的16位自动重装定时器使用,类似于定时器计数器0和定时器计数器1工作在方式1下.以下程序在Keil 2和Keil 3下调时通过,下载在本校的实验板上达到预期效 ...

  9. STC89C51——定时器/计数器介绍及程序配置

    前言 本文介绍基于常见的51单片机,即如下图的芯片: AT89C51具备2个定时器/计数器,即定时器/计数器 0.定时器/计数器 1 ( 简称 T0 /  T1). T0 有 4 种工作方式,T1 有 ...

最新文章

  1. 清华朱军团队包揽三项冠军 | NIPS 2017对抗样本攻防竞赛总结(附学习资料)
  2. Xposed学习一:初探
  3. 管理之善,在于让员工有机会试错
  4. Python3 解题:字符串压缩
  5. 数据结构学习笔记(六)链表算法题
  6. Linux基础(3)--搭建最小的Linux系统
  7. [Spring-cloud-eureka]使用 gradle, spring boot,Spring cloud Eureka 搭建服务消费者
  8. 【报告分享】Facebook IQ 2020年热门话题和趋势报告.pdf(附下载链接)
  9. C++ 虚函数表解析(转)
  10. 【SpringMVC学习05】SpringMVC中的参数绑定总结——较乱后期准备加入 同一篇幅他人的参数绑定...
  11. 数组 / 伪数组 判断及方法调用 (权威指南笔记)
  12. 2019秋季学期第2周Java学习总结
  13. 在u-boot中自定义的命令
  14. linux登录显示 Error in service module错误
  15. java代码实现PDF转DOC文档
  16. 无法删除的文件夹怎么办?如何删除删不掉的文件夹
  17. 「快闪群」批量成交攻略
  18. 20190105 东非大裂谷
  19. Oracle aes128和aes256加解密
  20. 动态规划法和贪心算法

热门文章

  1. 想学习微信开发,需要会哪些技术?
  2. OpenCV10.自定义线性滤波
  3. js判断中出现两个!!是什么意思?
  4. WIN10 +小皮面板 部署CRMEB商城系统(详细步骤)
  5. 一位IT从业人员的心路历程 (转并修版)
  6. 群主如何设置不允许群内成员邀请其他成员进另一个群?
  7. config文件夹不见了
  8. ps界面为啥突然变大了_PS简单3步带你完成包装效果「09」
  9. 小白学习Flink系列--第一篇(知识图谱)
  10. Linux中的文件传输优化