历史上的今天
今天是:2025年03月24日(星期一)
2021年03月24日 | 51单片机定时/计数器使用方法
2021-03-24 来源:eefocus
定时/计数器的使用方法:
1、根据要求选择方式,确定方式控制字,写入方式控制寄存器TMOD。
2、根据要求计算定时/计数器的计数值,再由计数值求得初值,写入初值寄存器TH0/TH1和TL0/TL1。
3、根据需要开放定时/计数器中断(后面需要编写中断服务程序)。
4、设置定时/计数器控制寄存器TCON的值,启动定时/计数器开始工作。
5、等待定时/计数器时间到,到则执行中断服务程序;如用查询处理则编写查询程序判断溢出标志,溢出标志等于1,则进行相应处理。
/******************************************************************************************/
/* */
/* 采用定时/计数器设计的60分钟倒计时程序,实现60分钟倒计时。利用4位数码管显示分、秒。*/
/* 数码管每秒更新一次,秒表由59倒计时到00,则分钟减1。 */
/* */
/******************************************************************************************/
#include #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++); } }
上一篇:详谈C51的编程规范
下一篇:不一样的51单片机学习教程
史海拾趣
|
一、 闭路监视电视系统简介: CCTV系统结构: 电视监控系统(Closed Circuit Television,简称CCTV),一般由以下三部分组成: 前端部分: 主要由黑白(彩色)摄像机、镜头、云台、防 ...… 查看全部问答> |
|
Altium Designer 使用 —— 快速制作原理图封装当制作引脚数比较多的器件的原理图封装时,可以使用AD提供的“smart grid insert”功能快速制作原理图封装库。本文以制作K9F1G08为例,进行简单说明。K9F1G08的引脚分布如图1所示:1. 打开 excel ,按 ...… 查看全部问答> |
|
一个划时代的伟大产品-超级硬件调试器横空出世 程序员中多年来一直流传着一种传说,除了市面上能够见到的为数不多的几种调试软件之外,还存在着一种神秘的硬件调试器,其功能强大无比。任何调试软件调不了的程序,硬件调试器都能搞 ...… 查看全部问答> |
|
本人从朋友那里得到一份cadence(allegro)视频教程15.5板本,是一个培训班的内部视频讲义,清晰度很高,很具体详细,是自学的好资料。如果您没时间看书或者想很快学会allegro的话就请联系:13783696474 或者QQ:20247125 ...… 查看全部问答> |
|
1.最近我用sci调试RS485的时候遇到一个怪现象: 有时候(不是全部,重新加载程序的时候一般都是)cpu明明有数据发出来,SCIRX,SCITX波形正常,可是485驱动芯片出来的两线信号发不出来,示波器只能看到负半波.只要我把与其通信的人机界面的通讯口拔出来 ...… 查看全部问答> |
|
MSP430Ware 入门介绍较以往其他版本,德州仪器 IDE CCS V5.1 程序更加简练有效,运行更加快捷,开发环境也更加直观。这里将着重介绍CCS v5.1一个新的组成部份- TI资源管理器(TI Resource Explorer)。TI资源管理器向客户提供一种直接简单的途径进 ...… 查看全部问答> |
|
/*来源于网络非原创*/ STM32-FSMC-LCD详解LCD有如下控制线: CS:Chip Select 片选,低电平有效 RS:Register Select 寄存器选择 WR:Write 写信号,低电平有效 RD:Read 读信号,低电平有效 RESET:重启信号,低电平有效 DB0-DB15:数据线 ...… 查看全部问答> |
|
最近在学习FPGA方面知识,对时钟触发有了了解,但有好多问题有些不明白。希望大虾解释 如: always(posedge CLK) begin //执行任务块 end 假如时钟的周期为50nS,占空比50%;所执行的任务块比较耗时间,超过50nS,而此时任务块尚未完全执行完 ...… 查看全部问答> |




