定时/计数器的使用方法:1、根据要求选择方式,确定方式控制字,写入方式控制寄存器TMOD。2、根据要求计算定时/计数器的计数值,再由计数值求得初值,写入初值寄存器TH0/TH1和TL0/TL1。3、根据需要开放定时/计数器中断(后面需要编写中断服务程序)。4、设置定时/计数器控制寄存器TCON的值,启动定时/计数器开始工作。5、等待定时/计数器时间到,到则执行中断服务程序;如用查询处理则编写查询程序判断溢出标志,溢出标志等于1,则进行相应处理。/******************************************************************************************//* *//* 采用定时/计数器设计的60分钟倒计时程序,实现60分钟倒计时。利用4位数码管显示分、秒。*//* 数码管每秒更新一次,秒表由59倒计时到00,则分钟减1。 *//* *//******************************************************************************************/#include <REG51.h>#define uint unsigned int#define uchar unsigned char#define LED P2 // 数码管段选// 数码管位选sbit WE1 = P0^0;sbit WE2 = P0^1;sbit WE3 = P0^2;sbit WE4 = P0^3;uint min = 59;uint sec = 59;uint i;uchar num_table[10] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; // 0~9十六进制代码。void display(); // 数码管显示程序void delay(uint x); // 延时程序void main() { TMOD = 0x01;// 使用方式1 TH0 = 0xD8;// 初值寄存器高8位 TL0 = 0xF0;// 初值寄存器低8位 EA = 1;// 允许中断请求总控制 ET0 = 1;// 定时/计数器T0溢出中断允许 TR0 = 1;// 定时/计数器T0的启动位 i = 0; while (1) { display(); }}void time0_int(void) interrupt 1 {// 中断服务程序 TH0 = 0xD8; TL0 = 0xF0; i++; if (i == 100) { sec--; i = 0; if (sec == 0) { sec = 59; min--; if (min == 0) min = 59; } }}void display() { uint min_s = min/10; uint min_g = min%10; uint sec_s = sec/10; uint sec_g = sec%10; WE1 = 1; LED = num_table[min_s]; delay(1); WE1 = 0; WE2 = 1; LED = ~(~num_table[min_g]|0x80); // 显示时后添加一个小数点 delay(1); WE2 = 0; WE3 = 1; LED = num_table[sec_s]; delay(1); WE3 = 0; WE4 = 1; LED = num_table[sec_g]; delay(1); WE4 = 0;}void delay(uint x) { uint i; while (x-- != 0) { for (i = 0; i < 300; i++); }}
导读:目前正在解读《51单片机定时/计数器使用方法》的相关信息,《51单片机定时/计数器使用方法》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《51单片机定时/计数器使用方法》的详细说明。
简介:本文介绍了51单片机定时/计数器使用方法,并给出相对应的程序。
提醒:《51单片机定时/计数器使用方法》最后刷新时间 2024-03-14 01:01:28,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《51单片机定时/计数器使用方法》该内容的真实性请自行鉴别。