5R6的值进行十进制调整,即为跑表显示值,到9999则R5R6清零,重新开始计数。若STOP键按下,则R5R6停止计数。在跑表停止状态下,则返回显示当前时间。
2软件设计与说明
21主程序的设计
主程序
设置各中断服务程序的入口地址
相关寄存器清零
3
f存储单元赋初值P10开关
跑表显示单元清0调跑表显示P11开关
P12开关跑表显示单元
调时钟显示清0
图3主程序设计框图
1)程序的起始地址:MCS51单片机复位后,(PC)0000H,而0003H002BH
分别是各中断源的入口地址。所以,编程时应在0000H
处写一条跳转指令。当CPU接收到中断请求信号并予以响应后,CPU把当前
的PC内容压入栈中进行保护,然后转入响应的中断服务程序入口处执行。
2)主程序的初始化:将要用到的MCS51系列单片机内部部件或扩展芯
片进行初始工作设定。
Z8279EQU0FF82H
;8279状态命令入口地址
4
fD8279EQU0FF80HLEDMODEQU00HLEDFEQEQU2FHLEDCLSEQU0C1HLEDWR0EQU80HORG0000HLJMPMAINORG000BHLJMPINTT0ORG0030HMAINLCALLINIT8279MOVTMOD01HMOVTH03CHMOVTL00B0HMOVIE82HMOVR72MOV31H0MOV32H0MOV41H0MOVP10FFHSETBTR0LOOPJNBP10ZHONGMOVR50
;8279数据口地址;左边输入八位字符显示;扫描速度;清除显示RAM;设定的将要写入的显示RAM地址
;T0中断入口地址
;初始化8279;T0工作方式;T0初值
;开中断;中断两次;放后两位数字;放前两位数字;用在定时器计中断个数;开放P1口;启动定时器
;判开关P10信号,时钟与跑表切换。;跑表清0
5
fMOVR60TING
LCALLPAOJNBP11TINGJNBP12MOVR50MOVR60ZHONGMOV35H31H地址MOV36H32HLCALLDIVIDMOVA52HADDA10MOV52HALCALLDZSPLAYLJMPLOOPRET
;调跑表子程序;判P11信号,暂停跑表;判P12信号,转时钟;跑表清0
;用于时钟记数的31H32H送入显示
;时钟显示加小数点(分和秒之间)
;循环执行主程序
6
f228279初始化子程序
入口
置8279工作方式
置键盘扫描速率
清LCD显示
恢复现场
返回
图48279初始化框图
INT8279PUSHDPH
;8279初始化子程序
PUSHDPL
PUSHACC
MOVDPTRZ8279
MOVALEDMOD
;置8279工作方式
MOVXDPTRA
MOVALEDFEQ
;置键盘扫描速率
MOVXDPTRA
MOVALEDCLS
;清除LED显示
MOVXDPTRA
7
fPOPACCPOPDPLPOPDPHRET
23跑表计时程序模块的设计
1)60分钟与1000秒时间的产生。选择定时器T0,用工作方式1,定时50ms,R7先置2,T0定时50ms中断一次,利用R7寄存器减1,当R7寄存器的值0时,时间正好是01s,再利用R0寄存器计数,当R010时,时间刚好是1s,再利用R1寄存器计数60s,依次类推,r