全球旧事资料 分类
就将30H中的数加1,若30H中的数没有到10,则给定时器0重新装入预置数,之后中断返回并继续等待中断;到10了,才进入显示程序,改变数码管的显示状态,执行完毕之后中断返回并继续等待中断。5显示程序将数码管的段选码放在数表TAB中。每次100ms计时完成后,将R0中的值(初值为0)送入A,然后自加1。若R0中的值没到10,则使用累加器A查表,并将查得的数码管段选码送入毫秒位数码管。之后将30H中的数置零,中断返回。若发现R0中的数到10了,则将R0置零,并转入秒位进位子程序SECOND,向秒位进位,之后,继续照常向毫秒位送数。在秒位进位子程序SECOND中,由于要用到累加器A,因此先将其推入堆栈保护。将R1中的值(初值为10)送入A,然后自加1。若R1中的值没到20,则使用累加器A查表,并将查得的数码管段选码送入秒位数码管。若发现R1中的数到20了,则将R1重置为10,并转入十秒位进位子程序SECOND1,向十秒位进位,之后,继续照常向秒位送数。完成后,弹出ACC和PSW,子程序返回。十秒位进位子程序与秒位进位子程序相似,只是没有向下一位进位的功能。6暂停计时
8
f若确认“暂停计时”键被按下,则跳转至程序标号“PAUSE”处,将定时器0计时允许控制位TR0置零,则定时器暂停运行。此动作完成后,返回按键检测程序,等待操作者的下一次指令。7秒表清零若确认“秒表清零”键被按下,则跳转至程序标号“STOP”处,将TR0置零,关闭定时器0运行。并且将数码管、工作寄存器、定时器0预置数全部重置,使其处于秒表计时的初始状态。此动作完成后,返回按键检测程序,等待操作者的下一次指令。8延时程序用于按键延时防抖,延时10ms。程序清单如下:ORG0000HAJMPSTARTORG000BHAJMPTIME0STARTMOVP30FFHMOVP03FHMOVP13FHMOVP20BFHMOV30H00HMOVR000HMOVR10AHMOVR200HMOVTMOD01HMOVTH00D8HMOVTL00FEHSETBEASETBET0READL1JBP32L2LCALLDELAYJBP32L1AJMPRUNL2JBP33L3LCALLDELAYJBP33L2AJMPPAUSEL3JBP34L1LCALLDELAYJBP34L3
程序开始跳转到主程序START定时器0中断的地址入口定时器0溢出,跳转到中断程序TIME0主程序输入端口P3全写1数码管初始化工作寄存器初始化定时器0工作于方式1定时器0预置数D8FEH55550D开总中断允许开定时器0中断允许读键程序按键延时防抖确认计时键被按下,开始继续计时按键延时防抖确认暂停键被按下,暂停计时按键延时防抖
9
fAJMPSTOP确认清零键被按下,秒表重置RUN计时键按下,跳转至此SETBr
好听全球资料 返回顶部