|
菜鸟请教一个8051用作工业零件计数器的程序问题
[复制链接]
工业零件的计数器程序:(从0开始直到999)
GW equ 60h ;个位数据缓冲
SW equ 61h ;十位数据缓冲
BW equ 62h ;百位数据缓冲
Mov GW,#0 ;初始化全为0
Mov SW,#0
Mov BW,#0
Mov TMOD,#00000101b
;计数器0方式1
Mov TH0,#0
Mov TL0,#10
CLR EA ;禁止所有中断
Setb TR0 ;计数开始
START:
Mov R3,TL0 ;将计数值读入
Mov GW,R3
Mov R4,GW
Acall COMPARE
Clr GW ;个位=10清零
MOV TL0,#0 ;同时清计数值
Inc SW ;进位
Mov R4,SW
Acall COMPARE
Clr SW ;十位=10清零
Inc BW ;进百位
Mov R4,BW
Acall COMPARE
Clr BW ;计数到999重新开始
Ljmp DISPLAY
COMPARE: ;查看各位有无进位
Cjne R4,#10,DISPLAY
Ret
DISPLAY:
Mov R0,#GW ;数据缓冲区首地址 ;(即个位数据缓冲地址)
Mov R2,#01H ;个位开始显示
Mov A,R2
Mov DPTR,#TAB
LP0:
Mov P2,A ;位选择
Mov A,@R0 ;查表显示
Movc A,@A+DPTR
Mov P0,A
Acall D1MS ;1ms延时
Inc R0
Mov A,R2
Jb ACC.2,LP1
RL A
Mov R2,A
Ajmp LP0
LP1:Ljmp START
TAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
D1MS:Mov R7,#02h
DL: Mov R6,#0ffh
DL1:Djnz R6,DL1
Djnz R7,DL
Ret
END
在KEIL调试全速运行时提示:*** error 65: access violation at I:0x81 : no 'write' permission,但单步执行却没问题,请问是什么原因?(出错好像是在延时子程序上)
|
|