导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→一个没法解释的问题?!!大侠帮忙

* 58697: 一个没法解释的问题?!!大侠帮忙

   cuittao 
cuittao发表的帖子 

 一个没法解释的问题?!!大侠帮忙
因在调试这部分程序时,出了这样一个问题:
程序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

  
回复该帖

本主题共有 3 帖,分页:>>>>>该主题的所有内容[3]条

 *树形目录 只列出部分跟帖的标题以及简单的摘要信息 该主题的部分跟帖如下:

  58738.[详细]MOV  SP,#60这句放错位置了
摘要:这句不能在子程序里面的......(22字)
- [wyx000][967次] 2004年7月22日

  58759.[详细]对,有这么一种可能,接受了,谢谢您
摘要:......(无内容)
- [cuittao][834次] 2004年7月22日

[上一篇帖子]:公头和母头是一样的吧,如果不是,两个头对连不就错了?
[下一篇帖子]:有带红外接口的单片机么,我用430软件仿真了一个SIR 9600的波特率 要不你