首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

单片机的应用的有关问题(紧急)

2012-03-14 
单片机的应用的问题(紧急!!)单片机才学没多久,写了个程序,死活有问题,头都大了,请大家帮忙啊!!是交通灯的,

单片机的应用的问题(紧急!!)
单片机才学没多久,写了个程序,死活有问题,头都大了,请大家帮忙啊!!

是交通灯的,要有P3.0,P3.1显示倒计时的秒数,同时红绿灯亮。并有INT0实现计时加一,INT1减一,T0确认。编写了以下的程序,可是在显示时出现问题,可以倒计时,可是灯不亮(一开始会亮一会)。

ORG           0000H
              AJMP         START
              ORG           0003H                             ;外部中断0
              AJMP         KINC                               ;
              ORG           000BH                             ;T0入口
              AJMP         CLK                                 ;
              ORG           0013H                             ;外部中断1
              AJMP         KDEC                               ;
              ORG           001BH                             ;T1入口
              AJMP         KENT                               ;
              ORG           0030H
START:   MOV           SP,#70H                         ;重新设置堆栈
              SETB         P3.0                               ;
              SETB         P3.5
              CLR           P3.1                               ;
              CLR           20H.1                             ;
              CLR           20H.0
              MOV           P1,#09H                         ;设置初值
              MOV           R4,#50
              ACALL       DELAY                             ;延时
              MOV           R5,#50                           ;


              MOV           R2,#30                           ;
              MOV           50H,#30                         ;
              MOV           31H,#0F2H                     ;
              MOV           30H,#0FCH                     ;
              MOV           TH0,#0B1H
              MOV           TL0,#0E0H
              MOV           TH1,#0FFH
              MOV           TL1,#0FFH
              MOV           IE,#10001111B             ;
              MOV           TMOD,#01010001B         ;
              MOV           TCON,#01010000B         ;
MAIN:             CLR           20H.1                             ;     红,绿
                      MOV           R0,#21H                         ;
STATUS1:       CJNE         R2,#5,L1
                      MOV           R0,#11H                 ;           红,黄
STATUS2:       CJNE         R2,#0,L1
                      MOV           R0,#0CH                 ;           绿,红
                      MOV           R2,50H                   ;
STATUS3:       CJNE         R2,#5,L1
                      MOV           R0,#0AH                 ;           黄,红
STATUS4:       CJNE         R2,#0,L1
                      MOV           R2,50H
                      JMP           MAIN                       ;
L1:         JB             TR0,L2                           ;     判断是否返回入口


              ACALL       CAZI
              JMP           L1
L2:         ACALL       CAZI
              JB             20H.1,MAIN
              CJNE         R3,#21H,L3
              JMP           STATUS1
L3:         ACALL       CAZI
              CJNE         R3,#11H,L4
              JMP           STATUS2
L4:         ACALL       CAZI
              CJNE         R3,#0CH,L5
              JMP           STATUS3
L5:         ACALL       CAZI
              CJNE         R3,#0AH,MAIN
              JMP           STATUS4

CLK:       PUSH         PSW                                 ;
              PUSH         ACC
              ACALL       CAZI
              MOV           TH0,#0B1H                       ;
              MOV           TL0,#0E0H                       ;
              DJNZ         R5,RETURN                       ;
              MOV           R5,#50                             ;
              DEC           R2
RETURN:POP           ACC
              POP           PSW
              RETI
CAZI:     MOV           A,R2                                 ;
              MOV           B,#10
              DIV           AB
              MOV           52H,A                               ;
              ACALL       CHABIAO                           ;
              MOV           31H,A                               ;


              MOV           A,B
              MOV           51H,B                               ;
              ACALL       CHABIAO
              MOV           30H,A                               ;
              ACALL       XIANSHI
              RET
CHABIAO:PUSH         PSW                                         ;查表程序
                MOV           DPTR,#TAB
                MOVC         A,@A+DPTR
                POP           PSW
                RET
TAB:         DB             3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,1EH,0CH,33H,21H
XIANSHI:MOV         P1,31H                                     ;
                CLR           P3.0
                MOV           R4,#5
                ACALL       DELAY                                       ;
                SETB         P3.0
                MOV           P1,30H
                CLR           P3.5
                MOV           R4,#5
                ACALL       DELAY                                       ;
                SETB         P3.5
                MOV           P1,R0
                CLR           P3.1
                MOV           R4,#5
                ACALL       DELAY                                         ;
                SETB         P3.1
                RET
KINC:     MOV           R4,#5                                       ;     加一子程序


              ACALL       DELAY
              JB             P3.2,OUT1
              JNB           P3.2,$
              CLR           TR0
              CJNE         R2,#99,K1                                 ;
              MOV           R2,#0
              MOV           50H,R2
              RETI
K1:         INC           R2
              MOV           50H,R2
              RETI                                                           ;


KDEC:     MOV           R4,#5                                       ;           减一子程序
              ACALL       DELAY
              JB             P3.3,OUT1
              JNB           P3.3,$
              CLR           TR0
              CJNE         R2,#0,K2
              MOV           R2,#99                                       ;
              MOV           50H,R2
              RETI
K2:         DEC           R2
              MOV           50H,R2
              RETI
KENT:     MOV           R4,#5                                       ;             确认子程序
              ACALL       DELAY
              JB             P3.5,OUT
              JNB           P3.5,$
              JB             20H.0,ALARM2                           ;
              JB             TR0,ALARM1                               ;


              SETB         TR0
              SETB         20H.1
OUT:       MOV           TH1,#0FFH
              MOV           TL1,#0FFH
OUT1:     RETI
ALARM1:   CLR           TR0                                           ;
                MOV           45H,R2                                     ;
                MOV           46H,R0
                MOV           R0,#25H
                SETB         20H.0
                JMP           OUT
ALARM2:   CLR           20H.0                                       ;
                SETB         TR0
                MOV           R0,46H
                MOV           R2,45H
                JMP           OUT
DELAY:     MOV           R0,#80
DEL1:       MOV           R6,#123
                NOP
                DJNZ         R6,$                                           ;
                DJNZ         R0,DEL1                                     ;
                DJNZ         R4,DELAY
                RET
                END


[解决办法]
建议用c

热点排行