| 在仿真的时候,通电后,单片机向2003送送信号,2003的输入端有信号输入,但是输出端不显示有信号输出,为什么会出现这种情况?仿真图如下图所示:
程序:ORG 0000H STOP: ORL P1,#0FFH ;步进电机停止 LOOP: JNB P1.0,FOR2 ;如果p1.0按下正转 JNB P1.1,REV2 ;如果p1.1按下反转 JNB P1.2,STOP1 ;如果p1.2按下停止? JMP LOOP ;反复监测键盘 FOR: LCALL XIAN MOV R0,#00H ;正转到tab取码指针初值 FOR1: CLR A MOV A,R0 ;取码 MOV DPTR,#TABLE MOVC A,@A+DPTR JZ FOR ;是否到了结束码00H CPL A MOV P2,A ;输出到p2开始正转 JNB P1.2,STOP1 ;如果p1.2按下停止 JNB P1.1,REV2 ;如果p1.1按下反转 LCALL DELAY ;转动的速度 INC R0 ;取下一个码 JMP FOR1 ;继续正转 REV: LCALL XIAN MOV R0,#05H ;反转到TAB取码指针初值 REV1: CLR A MOV A,R0 ;取码 MOV DPTR,#TABLE MOVC A,@A+DPTR JZ REV ;是否到了结束码00H CPL A MOV P2,A ;输出到p2开始反转 JNB P1.2,STOP1 ;如果p1.2按下停止 JNB P1.0,FOR2 ;如果p1.0按下正转 LCALL DELAY ;转动的速度 INC R0 ;取下一个码 JMP REV1 ;继续反转 STOP1: LCALL DELAY ;按p1.2的消除抖动 JNB P1.2,$ ;p1.2放开否? LCALL DELAY ;放开消除抖动 MOV SCON,#0 MOV A,#0 MOV SBUF,A JNB TI,$ CLR TI MOV SBUF,A JNB TI,$ CLR TI JMP STOP FOR2: LCALL DELAY ;按p1.0的消除抖动 JNB P1.0,$ ;p1.0放开否 LCALL DELAY ;放开消除抖动 JMP FOR REV2: LCALL DELAY ;按p1.1的消除抖动 JNB P1.1,$ ;p1.1放开否 LCALL DELAY ;放开消除抖动 JMP REV XIAN: MOV SCON,#0 ; 允许接受数据 MOV DPTR,#S ;查表 CLR A ;累加器清零 MOV A,#7 MOVC A,@A+DPTR MOV SBUF,A ; JNB TI,$ ; CLR TI CLR A MOV A,#4 MOVC A,@A+DPTR MOV SBUF,A ; JNB TI,$ ; CLR TI RET ;DELAY1: MOV R1,#255 ;延时20ms ;D11: MOV R2,#255 ; DJNZ R2,$ ; DJNZ R1,D11 DELAY: MOV R1,#40 ;延时20ms D1: MOV R2,#248 DJNZ R2,$ DJNZ R1,D1 RET S: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,67H TABLE: DB 03H,09H,0CH,06H ; 正转表 DB 00H ; 正转结束 DB 06H,0CH,09H,03H ; 反转表 DB 00H ; 反转结束 END |
|
文章评论(0条评论)
登录后参与讨论