地进行变化在本设计中用到了这四种功能电子时钟的灵活调时功能就是通过对级别的屏蔽或开启来实现的8255A的主要功能的主要功能可编程外设接口芯片可由程序改变其功能通用性强使用灵活通过8255ACPU可直接同外设相连接其负责CPU和外设之间的数据传送8253的主要功能的主要功能可编程定时器计数器其定时与计数功能可由程序灵活地设定设定后与CPU并行工作不占用CPU的时间通道2工作在3方式下提供计算一秒的中断请求信号
25
程序框图
显示模块程序图
IRQ7中断中断服务程序IRQ7
COUNTCOUNT1
COUNT25
No
开始YesSS1时分转化为十进制存到内存单元
COUNT0
计算时分的各位数值在TABLE中对应编码
S60
No
Yes依次在61H段输出到LED显MM1S0
结束
M60
No
YesHH1M0
H24YesH0
No
f中断服务程序IRQ2
中断服务程序IRQ6IRQ6中断
IRQ2中断No
OFF1
OFFOFF1YesYes
OFF3MM1OFF2
No
NoNoYes
OFF1
YesM60Yes
HH1
No
H24
NoYes
OFF2
M0
YesH0
No
OFF0
屏蔽IRQ6中断
OFF0
屏蔽IRQ7中断
IRET
开IRQ2和IRQ7中断
开IRQ2和IRQ6中断
IRET
26
调试结果分析
将编写好的源程序输入编译后出现很多错误经过反复修改直到程序运行通过将生成的
可执行程序装入TND8688的内存里在监控状态下运行程序可是数码管显示的数字并不与理论计算值相符合并且显示的数字不停地闪动经过反复分析源程序发现问题出现在内存单元里时位和分位在转化为十进制时存储转化的结果的地址空间的顺序弄混了数字闪动的原因应该出在显示子程序里经过分析问题出在显示子程序里缺少延时程序编写延时子程序并在显示子程序调用它编译源程序装入生成的可执行文件并运行数码管显示的数字与理论值相符合并能正常计时但当按动KK1键时却不能启动对时功能按动KK2时也不能调时调分问题很
f可能出在两键控制的中断源上检查源程序也找不出错误当把IRQ5换成IRQ2后在进行调试结果成功
27
程序清单
MOVAX0000HMOVSI003EHMOVSIAXMOVAL0B6HOUT43HALMOVAL68HOUT42HALMOVAL0BAHOUT42HALPOPDSMOVAL7BHOUT21HALBEGINCALLDISSTIJMPBEGINIRQ7INCCOUNTCMPCOUNT25JNZRETURNMOVAX0MOVCOUNTAXMOVAXSINCAXMOVSAXCMPAX003CHJNZRETURNMOVAX0MOVSAXMOVBXMINCBXMOVMBXCMPBX003CHJNZRETURNMOVBX0MOVMBXMOVDXHINCDXMOVHDXCMPDX0018HJNZRETURNMOVDX0
STACKSEGMENTSTACKDW64DUPSTACKENDSDATASEGMENTHDW000CHMDW0000HSDW0000HCOUNTDW0000HOFFDW0000HTABLEDB3FH06H5BH4FH66H6DH7DH07H7FH6FHDATAENDSCODESEGMENTASSUMECSCODEDSDATASTARTMOVAXDATAMOVDSAXPUSHDSMOVAL81HOUT6r