◇任务要求◇
利用单片机的定时器中断,实现电子钟的准确计时,在TG12864液晶显示屏的居中位置,分两行显示当天的日期和时间,显示效果如下:
◇任务准备◇
一、AT89S52单片机中断系统
1.中断的概念
所谓中断就是当CPU正在处理某项事务时,如果外界或者内部发生了紧急事件,要求CPU暂停正在处理工作而去处理这件紧急事件,待处理完后,再回到原来中断的地方,继续执行原来被中断的程序,这个过程称作中断。
2.中断的优点
(1)分时操作。CPU与低速的外部设备交换信息时,可以分时命令多个外设同时工作,外设工作的同时,CPU可以执行主程序,当外设完成工作时向CPU申请中断,CPU才转去执行中断服务程序,这样大大提高了CPU工作效率。
(2)实时处理。可以通过中断响应实时处理环境变化。
(3)故障处理。CPU可以通过中断自行处理运行过程中无法预料的故障问题。
3.中断源
引起并发出中断请求的源头(如某设备或事件)称为中断源。
51系列单片机有6个中断源:两个外部中断(INT0﹑INT1)﹑三个定时器/计数器中断(T0﹑T1﹑T2)和一个串行口中断。
中断源的判别方式有两种:
(1)查询中断:通过软件逐个查询各中断源的中断请求标志。
(2)向量中断:中断请求通过优先级排队电路,一旦响应转向对应的向量地址执行。
4.中断优先级
中断优先级越高,则响应优先权就越高。当CPU正在执行中断服务程序时,又有中断优先级更高的中断申请产生,这时CPU就会暂停当前的中断服务转而处理高级中断申请,待高级中断处理程序完毕,再返回原中断程序断点处继续执行,这一过程称为中断嵌套。
5.中断源、入口地址及C语言程序
中断源﹑入口地址及C语言程序格式表见表5-14。
表5-14 中断源、入口地址及C语言程序格式表
6.C语言中断服务函数格式说明
为了便于用C语言编写单片机中断服务程序,Keil C51编译器也支持51单片机的中断服务程序,而且用C语言编写中断服务程序比汇编语言方便得多。C语言写中断服务函数的格式如下:
函数类型 函数名(形式参数列表)interrupt n [using m]
其中,interrupt后面的n是中断编号,取值为0~5;using后面的m表示使用的工作寄存器组号,取值为0~3,若不声明using项,默认用第0组工作寄存器。
例如,定时器T0的中断服务函数:
void time_0(void)interrupt 1 using 0
二、AT89S52单片机定时器/计数器
AT89S52单片机有三个16位内部定时器/计数器(T0﹑T1﹑T2),这里主要介绍T0﹑T1,它们分别由两个8位计数器组成。
T0由TH0(高8位)﹑TL0(低8位)构成;T1由TH1(高8位)﹑TL1(低8位)构成。
如果是计数内部晶振驱动时钟,则它是定时器;如果是计数单片机输入引脚的脉冲信号,则它是计数器。
1.模式介绍
(1)定时器模式:设置为定时器模式时,加1计数器是对内部机器周期计数(1个机器周期等于12个振荡周期,即计数频率为晶振频率的1/12)。计数值N乘以机器周期Tcy就是定时时间t。当晶振为12 MHz时,计数频率为1 MHz,每1 μs计数值加1。
(2)计数器模式:设置为计数器模式时,外部事件计数脉冲由T0(P3.4)或T1(P3.5)引脚输入到计数器。当T0或T1引脚上负跳变时计数器加1。识别引脚上的负跳变需要2个机器周期,即24个振荡周期。所以T0或T1引脚输入的可计数外部脉冲的最高频率为fosc/24。当晶振为12 MHz时,最高计数频率为500 KHz,高于此频率将计数出错。
2.定时器/计数器的相关寄存器
(1)定时器/计数器的方式寄存器(TMOD)。
①GATE:门控位,用来确定对应的外部中断请求引脚是否参与T0或T1的操作控制。当GATE=0时,只要定时器/计数器控制寄存器(TCON)中的TR0或TR1为1,T0或T1被允许开始计数。
当GATE=1时,不仅要TCON中的TR0或TR1为1,还要P3口的/INT0或/INT1引脚为1才允许开始计数。
②C/T:计数器或定时器选择位。
C/T=1时,T0或T1为计数器模式。C/T=0时,T0或T1为定时器模式。
③M1和M0:工作方式选择位。
51单片机的定时器/计数器有4种工作方式,由M1﹑M0状态确定,见表5-15。
表5-15 定时器/计数器工作方式
(2)定时器/计数器控制寄存器(TCON)。
①TF1/TF0:溢出标志位。
当T0或T1溢出时,硬件置位(TF1/TF0=1),并向CPU申请中断。
当CPU响应中断时,由硬件清除(TF1/TF0=0)。
②TR1/TR0:运行控制位。
当TR1/TR0=1时,启动T0或T1。
当TR1/TR0=0时,关闭T0或T1。
③IE1/IE0:外部中断请求标志。
当外部信号产生中断时,由硬件置位(IE1/IE0=1)。
当CPU响应中断时,由硬件清除(IE1/IE0=0)。
④IT1/IT0:外部中断0﹑1的触发方式选择位,由软件设置。
当IT1/IT0=1时,下降沿触发方式。/INT0或/INT1引脚上由高到低的负跳变可引起中断。
当IT1/IT0=0时,电平触发方式。/INT0或/INT1引脚上低电平可引起中断。
3.中断系统相关寄存器
(1)中断允许寄存器(IE)。
EA:中断总开关控制位。EA=1时,CPU开中断;EA=0时,CPU关中断。
ET2﹑ES﹑ET1﹑Ex1﹑ET0﹑Ex0分别为T2﹑串口﹑T1﹑外部中断1﹑T0﹑外部中断0的中断开关控制位,置1时允许该项中断,清0时禁止该项中断产生。
要使单片机某项中断有效,必须使EA为1,同时该项中断开关控制也为1。
(2)中断优先级寄存器(IP)。
51单片机的6个中断源可以被设为两个不同的级别,CPU先响应中断级别高的中断源。中断优先级通过中断优先级寄存器IP中相应位的状态来设定。
PT2﹑PS﹑PT1﹑Px1﹑PT0﹑Px0分别为T2﹑串口﹑T1﹑外部中断1﹑T0﹑外部中断0的中断优先级控制位,各项置1时为高级中断,清0时为低级中断。
4.定时器/计数器的初始化
在使用定时器/计数器前,应对它进行初始化,主要是对TMOD和TCON编程,还需计算和装载计数初值。一般完成下列几个步骤:(www.daowen.com)
(1)确定定时器/计数器的工作方式:设定TMOD。
(2)计算计数初始值,并装载到TH和TL中。
(3)定时器/计数器在中断方式工作时,必须使EA为1,同时定时器中断开关控制也为1。
(4)启动定时器/计数器——编程TCON中的TR1或TR0位。
5.定时器计数初始值的计算
(1)当fosc=12 MHz时,计算定时器计数初始值。
当工作在定时器模式下,定时器/计数器是对机器周期脉冲计数的,一个机器周期为12/fosc=1μs,则定时器不同方式下的最大定时时间如下:
方式0:13位定时器最大定时间隔=213×1μs=8.192 ms
方式1:16位定时器最大定时间隔=216×1μs=65.536 ms
方式2:8位定时器最大定时间隔=28×1μs=256μs
若T0工作在方式1,要求定时1ms,计算计数初值。如设计数初值为x,则:
(216-x)×1μs=1000μs,
即x=216-1000。
可计数得到65536-1000=64536=0xfc18。因此TH0=0xfc,TL0=0x18。
(2)当fosc=11.0592 MHz时,计算定时器计数初始值
当fosc=11.0592 MHz时,一个机器周期为12/fosc=12/11.0592μs,如工作在方式1,要定时t(us),设计数初始值为x,则:
(216-x)×12/11.0592μs =t,
即x=216-11.0592 t/12。
例如:T0工作在方式1,要求定时10 ms,则x=216-110592/12,数据(216-110592/12)在单片机中存储时,占用2个字节,等效于(-110592/12),先将(-110592/12)强制转换为uint类型数据,再将其拆分为高﹑低8位,编译时可产生最精简汇编语句,提高定时精度。
因此,装载定时器计数初始值的C51语句为:
TL0=(uint)(-110592/12)%256;
//去掉(uint),将导致计算结果错误
TH0=(uint)(-110592/12)/256;
◇任务实施◇
一、硬件电路搭建
本项目需在YL-236型单片机实训平台上选用四个模块:主机模块﹑电源模块和显示模块,搭建TG 12864显示系统。
1.模块选择见表5-16。
表5-16 本任务所需模块
2.工具和器材选择见表5-17。
表5-17 任务所需工具和器材
3.电路搭建
结合YL-236型单片机实训平台主机模块和显示模块,按照图5-13所示连接电路。
图5-13 硬件接线图
主函数流程图如图5-14所示。
图5-14 主函数流程图
中断函数流程图如图5-15所示。
图5-15 中断函数流程图
二、程序代码的编写、编译
(1)启动Keil C51编程软件,新建工程﹑文件并均以“clock”为名保存在文件夹中。
(2)在clock.c文件的文本编辑器窗口中输入程序代码。
(3)编译源程序,排除程序输入错误,生成clock.hex文件。
参考程序:
三、系统调试
系统调试的步骤如下:
(1)使用程序下载专配USB线将计算机的USB接口与单片机主机模块程序下载接口连接起来。
(2)打开电源总开关,启动程序下载软件,下载可执行文件至单片机中。
(3)观察TG 12864液晶屏显示效果,若实现任务要求,则系统调试完成;否则,需要进行故障排除。
◇任务评价◇
一、工艺性评分标准
工艺性评分标准如表5-18所示。
表5-18 工艺性评分标准
二、功能评分标准
功能评分标准如表5-19所示。
表5-19 功能评分标准
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。