推荐星级:
  • 1
  • 2
  • 3
  • 4
  • 5

单片机c51教程--定时器中断跑马灯

更新时间:2019-08-31 08:16:48 大小:85K 上传用户:杨义查看TA发布的资源 标签:51单片机 下载积分:0分 评价赚积分 (如何评价?) 收藏 评论(0) 举报

资料介绍

文档为单片机c51教程--定时器中断跑马灯总结文档,是一份不错的参考资料,感兴趣的可以下载看看,,,,,,,,,,,,,,

部分文件列表

文件名 大小
单片机c51教程--定时器中断跑马灯.pdf 85K

部分页面预览

(完整内容请下载后查看)
8 课,定时器中断跑马灯  
在第 3 课,我们用指令延时方式实现了跑马灯。这里我们用定时器方式再次实现,定  
时器方式有效率高,定时准确等优点。  
一个编程经验是,所有的中断都要尽快的运行和退出,中断服务程序越短越好,这样  
才不至于干扰主程序的工作和其他中断的运行。  
也就是,我们应该尽量把程序代码从中断服务函数里搬出来。  
对于定时器的中断的工作方式,我们可以建立一个全局的标记,在中断里置这个标记,  
然后就退出。在主程序里检查到这个标记之后,就运行相关的程序。对于 CPU 任务比较多  
的项目来说,这种工作方式可以获得最佳的工作效率。当然,对于非常实时的应用要求,  
比如时钟,还是建议在中断里做完,因为使用标记的方式时,主程序可能太忙而造成错过标  
记信号,就是这个标记还没有开始处理呢,下一个又来了。熟练的程序员还是可以避开这些  
异常的情况的。  
在我们的这个例程中,前一课的 1 秒钟输出信号,被换成了一个全局标记。在主程序  
中去检查这个标记,再清 0 标记和处理相应的工作。  
这一课的跑马灯输出方式也改变了,我们采用查表的方式,将要点亮的灯预先设置好,  
到了时间,就一起送到 P1 口。这样,程序的执行效率会更高。  
下面请认真学习和分析例程:  
以下是例程,请打开 lesson8 目录的工程,内容是一样的。  
―――――――――――――――――――――――――――――――――――――――  
#define uchar unsigned char //定义一下方便使用  
#define uint unsigned int  
#define ulong unsigned long  
#include <reg52.h>  
//包括一个 52 标准内核的头文件  
sbit P10 = P1^0; //头文件中没有定义的 IO 就要自己来定义了  
sbit P11 = P1^1;  
sbit P12 = P1^2;  
sbit P13 = P1^3;  
bit ldelay=0;  
//长定时溢出标记,预置是 0  
void main(void) // 主程序  
{
uchar code ledp[4]={0xfe,0xfd,0xfb,0xf7};//预定的写入 P1 的值  
uchar ledi; //用来指示显示顺序  
RCAP2H =0x10; //T2 的预置值 0x1000,溢出 20 次就是 1 秒钟  
RCAP2L =0x00;  
TR2=1;  
ET2=1;  
//启动定时器  
//打开定时器 2 中断  
EA=1;  
//打开总中断  
while(1) //主程序循环  

全部评论(0)

暂无评论