忘记过去 发表于 2012-5-6 11:28:41

汇编程序有错误改不出来!

L_RED      BIT P2.1
L_GREEN      BIT P2.2
L_YELLOW   BIT P2.3
H_RED      BIT P2.4
H_GREEN      BIT P2.5
H_YELLOW   BIT P2.6      
;主程序,选择设置红绿灯时间模式或自动调整模式
ORG   0000H
LJMPMAIN
ORG   0003H      ;中断入口
LJMPINTV0
ORG   0030H
MAIN:   
MOV   R3, #20       ;用于嵌套50ms软件方法计时1s
MOV    R0, #20       ;预设值红绿灯时间
MOV    R1, #20
CLR    EX0
K1:   
MOV    C, P3.7       ;等待检测何种模式按键按下
ANL    C, P3.2
JB   C, K1
JNB    P3.7, F      ;F键按下为自动模式,进入扫描
K2:   
JNB    P3.2, S      ;S键按下并等待计数次数
SJMP   K2
F:      
LCALLDELAY
MOV    R0, #30
MOV    R1, #30
SETB   00H
SETB   EA
SETB   EX1
SJMP   START
S:      
LCALLDELAY
CJNE   R0, #40, V1
MOV    R0, #20
V1:   
INC    R0
JNB    P0.1, $
JNB    P3.6, J      ;J键按下并等待计数次数
SJMP   K2
J:      
LCALLDELAY
CJNE   R1, #40, V2
MOV    R1, #20
V2:   
INC R1
JNB    P3.6, $
JNB    P3.7, START   ;设置完毕为设定时间模式,进入扫描
JNB    P3.6, J
MOV    P2, #0DDH    ;预设信号灯状态,时间和车向
MOV    R4, R0
SETB   01H
SETB   EX0
;程序开始,进行每50ms扫描
START:
MOV    TMOD, #01H
MOV    TH0, #3CH
MOV    TL0, #0B0H
CLR    TF0
SETB   TR0          ;开始50ms计时
DJNZ   R3, Y      ;1s是否计时完毕
MOV    R3, #20
DJNZ   R4, Y      ;本状态是否结束,并进行下一状态设置
MOV    A, P2
CJNE   A, #0DDH,D1
MOV    P2, #0BDH
MOV    R4, #5
D1:   
CJNE   A, 0BDH,D2
MOV    P2, #0EDH
MOV    R4, R1
CLR    01H
D2:   
CJNE   A, #0EDH,D3
MOV    P2, #0E7H
MOV    R4, #5
JNB    00H, D3
LCALLDATA1
D3:   
CJNE   A, #0E7H,Y
MOV    R2, #0DDH
MOV    R4, R0
SETB   01H
Y:      
MOV    A, R4         ;LED倒计时显示
MOV    B, #10
DIV    AB
MOV    DPTR, #LEDMAP
MOVC   A, @A+DPTR
MOV    P1, A
MOV    A, B
MOVC   A, @A+DPTR
MOV    P0, A
LEDMAP:
DB   0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
JNB    00H, WAIT    ;判断是否要计数车流量
JB   P3.3, WAIT   ;判断是否有车经过
WAIT:
JNB    TF0, WAIT    ;50ms一次扫描完毕
SJMP   START
INTV1:   
JNB    01H, U       ;判断车向
INC    R5
U:      
INC    R6
RETI
INTV0:   
SETB   P3.4         ;中断服务子程序,闯红灯或紧停按键
JB   P3.7, $
LCALLDELAY
CLR    P3.4
RETI
DATA1:   
MOV    A, R6         ;车流量数据处理及红绿灯时间调整
MOV    B, R0
MUL    AB
MOV    R6, A
MOV    A , R5
MOV    B, R1
MUL    AB
MOV    B, #10
MUL    AB
MOV    B, R6
DIV    AB
CJNE   A, #7,M1
M2:   
MOV    R2, #20
MOV    R1, #40
SJMP   OUT
M1:   
JB   C, M2
CJNE   A, #15,N1
N2:   
MOV    R0, #30
MOV    R1, #30
SJMP   OUT
N1:   
JB   C, N2
MOV    R0, #40
MOV    R1, #20
OUT:   
CLR    R5
CLR    R6
RET
DELAY:
MOV    R2, #14H      ;延时程序,用于按键消抖动
A1:   
MOV    R7, #0FFH
DJNZ   R2, $
DJNZ   R7, A1
RET
END
这是交通灯的程序,里面有程序错误,JB C,K1,不知道错到哪了?还有R4也有问题!请解答下,谢谢!
页: [1]
查看完整版本: 汇编程序有错误改不出来!