一个没法解释的问题?!!大侠帮忙
因在调试这部分程序时,出了这样一个问题:
程序2的硬件测试结果在P0口处的P0.1--P0.5处(可能是P0.0--P0.7口全)加了一个极窄的
低电平脉冲,频率 f 约 = 200 KHz?!
程序1 的硬件测试结果正常!因为程序2出的问题,小弟我耗掉了一天时间!!
问题如下:为什么程序 2 会产生一个极窄的低电平脉冲??(说明:START部分程序内容完全一样)
程序1:
ORG 0030H
MAIN:
; START 部分程序
START:
MOV SP,#60H ;置堆栈初始位置
SETB EA ; 总中断允许
SETB EX1 ; 外部中断INT1允许
SETB ET0 ; 定时器 T0 中断允许
SETB PX1 ; 设外部中断INT1中断优先级别为高
MOV TMOD,#01H ; 计时器T0工作在方式 1
MOV TH0,#0FEH ; 65536 - 500 = 65036 = 0FE0CH
MOV TL0,#0CH ;
MOV R4,#0E0H ; 一秒计数器
MOV R5,#04 ; 0E0H = 250 250 * 4 * 1 ms = 1 S
MOV SECOND,#00H ;秒计数单位初始化
MOV MINUTE,#00H ;分计数单位初始化
MOV P0,#0FFH ;关AC_POWER,关POWER1-5,关START灯,关方波
SETB P3.6 ;初始化 573
MOV P1,#07FH ;关LED,关时间指示灯,关电路电源
CLR P3.6
MOV P2,#0FFH ;初始化键盘线,数据线
MOV P3,#0BFH ;初始化573、244控制口及关STOP指示灯
MOV 2AH,#0C0H ;默认电路中的热敏电阻没有连接
;同时置开始工作位标志 2AH.0 = 0,当2AH.0 = 1时,电路开始工作
MOV 2BH,#0FFH ;默认电路工作正常
MOV 2CH,#00 ;暂时标志位寄存
MOV 2DH,#07FH ;默认电路没有出错,LED灯熄灭
;; START 部分程序
CHECK:
CALL CONCHECK
JB 2AH.0,TIMEC ;查询开始工作标志位
JMP CHECK
程序2:
ORG 0030H
MAIN:
LCALL START
CHECK:
CALL CONCHECK
JB 2AH.0,TIMEC ;查询开始工作标志位
JMP CHECK
; START 部分程序
START:
MOV SP,#60H ;置堆栈初始位置
SETB EA ; 总中断允许
SETB EX1 ; 外部中断INT1允许
SETB ET0 ; 定时器 T0 中断允许
SETB PX1 ; 设外部中断INT1中断优先级别为高
MOV TMOD,#01H ; 计时器T0工作在方式 1
MOV TH0,#0FEH ; 65536 - 500 = 65036 = 0FE0CH
MOV TL0,#0CH ;
MOV R4,#0E0H ; 一秒计数器
MOV R5,#04 ; 0E0H = 250 250 * 4 * 1 ms = 1 S
MOV SECOND,#00H ;秒计数单位初始化
MOV MINUTE,#00H ;分计数单位初始化
MOV P0,#0FFH ;关AC_POWER,关POWER1-5,关START灯,关方波
SETB P3.6 ;初始化 573
MOV P1,#07FH ;关LED,关时间指示灯,关电路电源
CLR P3.6
MOV P2,#0FFH ;初始化键盘线,数据线
MOV P3,#0BFH ;初始化573、244控制口及关STOP指示灯
MOV 2AH,#0C0H ;默认电路中的热敏电阻没有连接
;同时置开始工作位标志 2AH.0 = 0,当2AH.0 = 1时,电路开始工作
MOV 2BH,#0FFH ;默认电路工作正常
MOV 2CH,#00 ;暂时标志位寄存
MOV 2DH,#07FH ;默认电路没有出错,LED灯熄灭
RET
;;START 部分程序
发表时间:2004年7月21日20:25:21