No.58494 作者:cuittao 邮件:liantao999@163.com ID:10717 登陆:8次 文章数:12篇 最后登陆IP:116.22.65.6 最后登陆:2009/11/6 10:10:04 注册:2003/3/31 15:56:33 财富:90 发帖时间:2004/7/19 19:10:26 发贴者IP:218.13.3.134 标题:cuittao:有空的,没上班的,有兴趣的兄弟过来帮帮忙!! 摘要:No.58494有空的,没上班的,有兴趣的兄弟过来帮帮忙!! 说明:本程序通过定时器T0产生一个方波脉冲,同时用于一个小时定时 其它的键盘中断是实际中要做的相应操作。其中NOP语句为省略的操作性语句 与定时没有任何关系。晶振 f = 6MHz 问题如下: 定时器为什么不能定时(实际板子工作所得)??!!!(程序在Keil C51 V6.12下仿真能正常计数) 我现在的想法是:编程器出错!(可能,但可能性很低吧) 部分程序如下: ;定义 2AH.0 为开始计时标志,当 2AH.0= 1 时,计时开始 ; ;定义R4,R5为产生一秒的计数器 ;取基准时间为 1 ms SECOND EQU 21H ; 秒计数器 MINUTE EQU 22H ; 分种计数器 ORG 0000H AJMP MAIN ORG 000BH ;T0中断入口 AJMP INT_T0 ORG 0013H ;INT1键盘中断入口 AJMP KEY_INT ORG 0100H MAIN: CALL START CHECK: CALL CONCHECK JB 2AH.0,TIMESUM ;查询开始工作标志位 JMP CHECK TIMESUM: MOV A,SECOND ;检查1S单位 CLR C ;电路十秒延时 SUBB A,#10 JC TIMESUM MOV A,SECOND CJNE A,#10,TIMECON SETB P0.4 ; 关第一路 Power On 1 NOP TIMECON: MOV A,SECOND CJNE A,#3CH,MIDDLE ;不足60S,从头检查 MOV SECOND,#00H ;够60S,秒单元清零 INC MINUTE ;分单元加1 MIDDLE: MOV A,MINUTE ;检查分单元 CJNE A,#10D,NEXT_1 ;检查分单元是否够10分 SETB P3.6 ;打开74LS373 MOV P1,#0FCH ;打开10分灯 CLR P3.6 ;关闭74LS373 SETB 2DH.7 MOV P1,2DH ;恢复错误状态指示 NEXT_1: CJNE A,#20D,NEXT_2 SETB P3.6 MOV P1,#0F8H CLR P3.6 SETB 2DH.7 MOV P1,2DH ;恢复错误状态指示 NEXT_2: CJNE A,#30D,NEXT_3 SETB P3.6 MOV P1,#0F0H CLR P3.6 SETB 2DH.7 MOV P1,2DH ;恢复错误状态指示 NEXT_3: CJNE A,#40D,NEXT_4 SETB P3.6 MOV P1,#0E0H CLR P3.6 SETB 2DH.7 MOV P1,2DH ;恢复错误状态指示 NEXT_4: CJNE A,#50D,NEXT_5 SETB P3.6 MOV P1,#0C0H CLR P3.6 SETB 2DH.7 M ......
>>返回讨论的主题
|