定时器/计数器使用示例(c语言程序)
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语言程序)相关推荐
- c语言字符输出程序示例,C语言程序实例
C语言程序实例 引导语:C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点.为了帮助大家更直观地了解C语言,以下是百分网小编介绍给大家的'C语言程序实例,希望大家喜欢! [例 ...
- 89c52单片机c语言延时程序计算 脉冲,89C52单片机定时器延时时间的计算与程序解析 - STC89C52单片机定时器/计数器详解(含程序和定时器2)...
STC单片机STC89C52RC定时器延时时间的计算 延时时间要根据晶振频率计算,不同板子可能有所不同. 时钟周期: 1/时钟源,在我现在这块板子上,晶振频率是11.0592M,也就是时钟周期是 1/ ...
- 定时器驱动数码管c语言程序,74hc595驱动数码管时间程序
74hc595驱动数码管时间程序 这里是电路图: 下面是51单片机驱动74hc595芯片的程序: #include //包含51单片机的头文件 # ...
- 定时器驱动数码管c语言程序,用c语言编写,实用定时器实现数码管15倒计时
#include#define uchar unsigned char uchar miao,t0,flat,shiwei,gewei,; sbit dula = p2^6; sbit wela = ...
- 自加计数器c语言程序,计数器 加1 C语言 程序.doc
#include #include #define uchar unsigned char #define uint unsigned int uchar Count,timecount; uchar ...
- 定时器计数器实验C语言程序,实验二 单片机定时器和计数器编程
仲恺农业工程学院实验报告纸 信息学院 (院.系)专业班组单片机原理及接口技术课实验二单片机定时器/计数器编程 一.实验目的 1.掌握单片机定时器/计数器的工作方式: 2.掌握单片机定时器/计数器的编程 ...
- 定时器计数器实验C语言程序,单片机定时器计数器实验报告.docx
单片机定时器计数器实验报告 单片机定时器计数器实验报告 篇一:单片机计数器实验报告 计数器实验报告 ㈠ 实验目的 1. 学习单片机内部定时/计数器的使用和编程方法: 2. 进一步掌握中断处理程序的编程 ...
- 52单片机定时器2使用(C语言程序)
本文是关于52单片机定时器计数器2做为普通的16位自动重装定时器使用,类似于定时器计数器0和定时器计数器1工作在方式1下.以下程序在Keil 2和Keil 3下调时通过,下载在本校的实验板上达到预期效 ...
- STC89C51——定时器/计数器介绍及程序配置
前言 本文介绍基于常见的51单片机,即如下图的芯片: AT89C51具备2个定时器/计数器,即定时器/计数器 0.定时器/计数器 1 ( 简称 T0 / T1). T0 有 4 种工作方式,T1 有 ...
最新文章
- 清华朱军团队包揽三项冠军 | NIPS 2017对抗样本攻防竞赛总结(附学习资料)
- Xposed学习一:初探
- 管理之善,在于让员工有机会试错
- Python3 解题:字符串压缩
- 数据结构学习笔记(六)链表算法题
- Linux基础(3)--搭建最小的Linux系统
- [Spring-cloud-eureka]使用 gradle, spring boot,Spring cloud Eureka 搭建服务消费者
- 【报告分享】Facebook IQ 2020年热门话题和趋势报告.pdf(附下载链接)
- C++ 虚函数表解析(转)
- 【SpringMVC学习05】SpringMVC中的参数绑定总结——较乱后期准备加入 同一篇幅他人的参数绑定...
- 数组 / 伪数组 判断及方法调用 (权威指南笔记)
- 2019秋季学期第2周Java学习总结
- 在u-boot中自定义的命令
- linux登录显示 Error in service module错误
- java代码实现PDF转DOC文档
- 无法删除的文件夹怎么办?如何删除删不掉的文件夹
- 「快闪群」批量成交攻略
- 20190105 东非大裂谷
- Oracle aes128和aes256加解密
- 动态规划法和贪心算法