MCS-51系列单片机系统及其应用
实验四:时钟实验
实验内容:
在实验三的基础上,利用LED显示字型的功能,应用单片机的定时器及定时器中断功能编制一程序,让LED数码显示器上显示出按精确秒信号的节律变化的字型,即电子时钟。
实验目的:
1:掌握在RAM区内开辟显示缓冲区的方法。
2:进一步熟悉用LED数码管显示字型程序的设计方法。
3废铜回收多少钱一斤:掌握定时器初始值的计算方法。
4:掌握定时器的用法以及定时器中断的控制。
5:明确中断子程序与一般子程序的区别及联系。
6:学会设计简单的数值比较程序,学会设计根据RAM中某一单元的内容进行查表的程序。
实验要求:
1:设计程序时,应在内部RAM中开辟显示缓冲区,缓冲区内首先设置时钟的初始时间(12-00-00 )。
2:利用定时器的计数溢出产生中断,从而产生秒信号。
3:将LED数字显示程序设计为子程序,将时、分、秒加“诗经名句1”的溢出判断在中断服务子程序中进行,主程序完成初始化后一直调用显示子程序。
程序的设计思路参考如下:
1:将内部的RAM中的78H—7FH这八个单元作为显示缓冲区,将时钟要显示的初值的数字(非字型代码)置入这八个单元中,等待显示子程序利用其中的数据去查出相应的字型代码,送出显示。
2:用有寄存器间接寻址功能的工作寄存器R0作为显示缓冲区的指示器,将显示缓冲区内的数据与查表类指令发生联系,以便按显示缓冲区内的数据查表。
3:主程序初始化时首先将定时器中断的总开关关闭,选择一个定时器,设定该定时器的工作方式,将该定时器的两个计数单元赋一预先设好的初始数据。开启所有与所选择的定时器有关的中断开关,但不启动计数器,作好准备。
4:当主程序初始化完毕之后,开始调用显示子程序之前开启计数器,此时主程序即进入无休止的调用显示子程序的状态,随时准备着被定时器所中断。
5:在中断子程序的入口处若有必要保护主程序在中断时主要寄存器的状态,请务必执行堆栈以保护中断时CPU的现场。并且关闭所选择的定时器的中断允许控制位,但不要让定时计数器停止计数,重新对定时器的定时单元进行赋值(与主程序初始化时所赋的值相同)。
6:靠定时器溢出一次,不可能产生秒信号,所以要在定时器溢出发生中断,程序条入中断服务程序后,不仅要给定时器重新赋值,而且要设计一个计数器,让定时器溢出若干次,
直到定时器定时的累积值达到1秒为止,然后对显示缓冲区的秒位加“1”,在加“1”之后还要判断是否产生进位,然后加以处理,结果让屏幕上所显示的数字为时钟的有效数值,即秒位与分位不能超出60,小时位则不能超出24(统一将时钟设计为24小时制)。
7:为了使所设计的程序简短,建议将程序中相同的部分都设计成子程序。
参考程序二例: (CJC7.ASM 、CJC8.ASM)
参考程序(CJC7.ASM与城市规划就业前景CJC8.ASM)的有关说明:程序一(CJC7.ASM)中编制了多个子程序,在程序的长度上与参考程序二(CJC8.ASM)相当。主程序略有不同,中断服务程序则大有差别,但都能实现同一个目的(电子时钟)。
参考程序一:
CJC7.ASM
ORG 0000H
AJMP 0030H
ORG 000BH ;定时器中断入口地址
AJMP INTT0 ;跳入中断服务子程序
每日一句英语MAIN: MOV 78H,#00H
MOV 79H,#00H
MOV 7AH,#0AH
MOV 7BH,#00H
MOV 7CH,#00H
MOV 7DH,#0AH
MOV 7EH,#02H
MOV 7FH,#01H ;显示缓冲区初始化;-----------------------------------------
MOV SP,#50H ;修改堆栈指针
MOV R0,独一无二的幽默网名#78H ;给定显示缓冲区首地址
社保卡里的钱怎么查询余额MOV TMOD,#01H ;设置定时器的定时方式
MOV TH0,#17H
MOV TL0,#0B8H ;预置定时初值
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论