51单片机定时/计数器使用方法

来源:本站
导读:目前正在解读《51单片机定时/计数器使用方法》的相关信息,《51单片机定时/计数器使用方法》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《51单片机定时/计数器使用方法》的详细说明。
简介:本文介绍了51单片机定时/计数器使用方法,并给出相对应的程序。

定时/计数器的使用方法: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单片机定时/计数器使用方法》最后刷新时间 2024-03-14 01:01:28,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《51单片机定时/计数器使用方法》该内容的真实性请自行鉴别。