求单片机高手帮看下程序的错误(芯片是用AT89C2051,用keil编译)有几个错误不知道怎么改。

;//主程序//
ORG 000H
AJMP START
ORG 0003H
AJMP INTEX0
ORG 001BH
AJMP IT11
ORG 0030H
START: MOV SP,#75H ; 设置堆栈指针
MOV SCON,#00H ; 串行口工作方式
MOV GEWEI,#0AH ; 开机显示
MOV SHIWEI,#0AH
MOV BAIWEI,#0AH
MOV QIANWEI,#0AH
ACALL DIS11
SETB P3.2 ; 外中断0为输入查询方式
JB P3.2 ; 等待第一个有效脉冲(下降沿)到来
ACALL CLEARRAM ; 调用系统准备显示初始化子程序
STLOOP: JNB P1.0,ST1 ; p1.0=0,显示速度
ACALL DISPLAYS ; P1.0=1, 显示里程
SJMP STLOOP ; 循环显示
ST1: ACALL DISPLAYV ; 第一个下降沿来后显示速度
AJMP STLOOP ; 循环显示

;//T1定时器溢出时中断服务子程序//
IT11: PUSH ACC ; 堆栈保护
PUSH PSW
INC SJIAN1 ; 定时20毫秒溢出次数
MOV A,SJIAN1 ; 读一圈定时的次数
CJNE A,#0BBH,SUBT1 ; 速度太慢(<0.5),处理
AJMP SUBT2
SUBT1: JC SUBT2
INC 69H ; (69H)为奇数,LED显示"Erro"
MOV A,69H ; 再显示具体速度的值
JB ACC.0 ERRO ; (69H)为偶数,LED显示"Sudu"
MOV GEWEI,#05H ; 再显示具体速度的值
MOV SHIWEI,#0BH
MOV BAIWEI,#0DH
MOV QIANWEI,#0BH
MOV XIAOSHU,#0BH
ACALL DIS11
SJMP FS12
ERRO: MOV GEWEI,#0CH
MOV SHIWEI,#0BH
MOV BAIWEI,#0BH
MOV QIANWEI,#0DH
ACALL DIS21
; "Erro"或"sudu"和具体速度大值交替闪烁显示
FS12: MOV R2,#01H ;
CLR P1.5
ACALL DELAY2
SETB P1.5
ACALL DELAY2
DJNZ R2,FS12
SUBT2: MOV TH1,#0B1H
MOV TL1,#0DFH
SETB TR1
POP PSW
POP ACC
RETI
http://hi.baidu.com/huancheng2007/blog/item/187c05183d7148158618bffb.html
这个是全部程序。麻烦高手帮看下。。

AJMP INTEX0 没有相应的程序标号

ACALL DIS11
ACALL CLEARRAM
ACALL DISPLAYS
ACALL DISPLAYV

MOV GEWEI,#0AH ; 开机显示
MOV SHIWEI,#0AH
MOV BAIWEI,#0AH
MOV QIANWEI,#0AH
INC SJIAN1
你的第一类错误,很多变量在使用前都没有预先定义

ACALL DELAY2
第二类错误是,程序中用到的很多跳转标号和调用的子程序都没有定义

JB P3.2 JB是判断语句,后要有跳转的偏移地址
第三类错误就是,有些汇编指令的书写格式不对
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-05-12
你这程序哪弄的啊,好多变量没有定义啊,好多子程序也都没有啊,
相似回答