鱼C论坛

 找回密码
 立即注册
查看: 1907|回复: 0

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

[复制链接]
发表于 2012-5-6 11:28:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
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
LJMP  MAIN
ORG   0003H        ;中断入口
LJMP  INTV0
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:      
LCALL  DELAY
MOV    R0, #30
MOV    R1, #30
SETB   00H
SETB   EA
SETB   EX1
SJMP   START
S:      
LCALL  DELAY
CJNE   R0, #40, V1
MOV    R0, #20
V1:     
INC    R0
JNB    P0.1, $
JNB    P3.6, J        ;J键按下并等待计数次数
SJMP   K2
J:      
LCALL  DELAY
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
LCALL  DATA1
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, $
LCALL  DELAY
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也有问题!请解答下,谢谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-20 04:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表