用EDN的51实验板,做了个4位八段数码管显示1234的数字,程序用汇编语言编写,通电后按实验田板上第一个按键开关启动程序执行。此程序的原意是学会动态扫描显示,程序如下:
ORG 0000H ;地址 0000H
LJMP STAR0 ;转 STAR
ORG 0200H ;地址 0100H
STAR0: CLR 00 ;位 00 清 0
MOV P1,#0FFH ;#0FFH-->P1
MOV P2,#0FH ;#0FH-->P2
MOV P0,#0FFH ;#0FFH-->P0
MOV 30H,#0FFH ;#0FFH-->30H
MOV 31H,#0FFH ;#0FFH-->31H
MOV 32H,#0FFH ;#0FFH-->32H
MOV 33H,#0FFH ;#0FFH-->33H
STAR1: MOV P1,#0FFH ;#0FFH-->P1
MOV P1,#0FEH ;#0FEH-->P1
MOV P0,30H ;30H-->P0
MOV R0,#00H ;#00H-->R0
LCALL STS1 ;调延时子程序 STS1
MOV P1,#0FFH ;#0FFH-->P1
MOV P1,#0FDH ;#0FDH-->P1
MOV P0,31H ;31H-->P0
MOV R0,#00H ;#00H-->R0
LCALL STS1 ;调延时子程序 STS1
MOV P1,#0FFH ;#0FFH-->P1
MOV P1,#0FBH ;#0FBH-->P1
MOV P0,32H ;32H-->P0
MOV R0,#00H ;#00H-->R0
LCALL STS1 ;调延时子程序 STS1
MOV P1,#0FFH ;#0FFH-->P1
MOV P1,#0F7H ;#0F7H-->P1
MOV P0,33H ;33H-->P0
NOP ;空操作
LCALL STS1 ;调延时子程序 STS1
ST2: JNB P2.0,ST3 ;P2.0=0 转 ST3
CLR 00 ;位 00 清 0
SJMP STAR1 ;转STAR1
ST3: JNB 00,ST4 ;位 00=0 转 ST4
SJMP STAR1 ;转 STAR1
ST4: MOV 30H,#0F9H ;#0F9H-->30H
MOV 31H,#0A4H ;#0A4H-->31H
MOV 32H,#0B0H ;#0B0H-->32H
MOV 33H,#99H ;#99H-->33H
SETB 00 ;位 00 置 1
SJMP STAR1 ;转 STAR1
ORG 0100H
STS1: MOV R6,#03H ;#03H-->R6 (211)
DEL1: MOV R7,#0FFH ;#0FFH-->R7 (255)
DEL2: DJNZ R7,DEL2 ;R7-1=\0 DEL2
DJNZ R6,DEL1 ;R6-1=\0 DEL1
RET ;子程序调用返回
END ;结束
此程序在能在EDN-51的实验板上运行正常,但在仿真上执行不正常,还没找到原因。
下面的程序是能在仿真上能显示的程序。但在EDN-51的实验板上显示不正常。
用户1341432 2007-12-3 10:20
用户386504 2007-11-1 11:14
用户741296 2007-11-1 08:08