单片机学习小组
直播中

王利

7年用户 198经验值
私信 关注

单片机汇编程序8位轮流显示0~7,8~F



以为很简单,没想到遇到点麻烦。

;单片机的汇编程序 8 位轮流显示  0~7,8~F

;E:DPJ7SEG8CC7SEGCC8-2.ASM
;2011 11 14

ORG 00H
AJMP MAIN
ORG 30H

MAIN:
MOV DPTR,#TAB
MOV R4,#100    ;0~7,8~F 各显示100次

DISP:
MOV R0,#30   
MOV R3,#0FEH   ;R3存放位码
DISP1:
MOV A,@R0  ;@R0存放0~F
MOVC A,@A+DPTR
MOV P0,A  ;送段码
MOV P2,R3
ACALL D1MS  ;延时1MS,消鬼影
MOV P2,#0FFH   ;关显示
MOV A,R3
RL A
MOV R3,A
INC R0
INC R2  ;R2存放位数
MOV A,R2
MOV @R0,A
JB F0,D2  ;F0=0显示 0~7  F0=1显示 8~F  
CJNE    R2,#8,DISP1
MOV R0,#30
MOV R2,#0
DJNZ R4,DISP1
MOV R4,#100
MOV R0,#38
MOV R2,#8
SETB F0
D2:
CJNE    R2,#16,DISP1
MOV R0,#38
MOV R2,#8
DJNZ R4,DISP1
MOV R4,#100
MOV R0,#30
MOV R2,#0
CLR F0
AJMP DISP1

D1MS:
MOV R7,#5
MOV R6,#100
DJNZ R6,$
DJNZ R7,$-4
RET

TAB:
DB      3FH;0

DB      06H;1
DB      5BH;2
DB      4FH;3
DB      66H;4
DB      6DH;5
DB      7DH;6
END






2011 11 15 更新 睡了一觉,头脑清醒多了。修改一下,简洁了。

ORG 00H
AJMP MAIN
ORG 30H

MAIN:
MOV DPTR,#TAB
MOV R4,#100    ;0~7,8~F 各显示100次
MOV R3,#0FEH   ;R3存放位码
DISP:
MOV A,R0  ;R0 为0~F
MOVC A,@A+DPTR
MOV P0,A  ;送段码
MOV P2,R3
ACALL D1MS  ;延时1MS
MOV P2,#0FFH   ;关显示,消鬼影
MOV A,R3
RL A
MOV R3,A
INC R0
JB F0,D2  ;F0=0显示 0~7  F0=1显示 8~F  
CJNE R0,#8,DISP
MOV R0,#0
DJNZ R4,DISP
MOV R4,#100
MOV R0,#8
SETB F0
D2:
CJNE       R0,#16,DISP
MOV R0,#8
DJNZ R4,DISP
MOV R4,#100
MOV R0,#0
CLR F0
AJMP DISP

D1MS:
MOV R7,#5
MOV R6,#100
DJNZ R6,$
DJNZ R7,$-4
RET

TAB:
DB      3FH;0
DB      06H;1
DB      5BH;2
DB      4FH;3
DB      66H;4
DB      6DH;5
DB      7DH;6
DB      07H;7
DB      7FH;8
DB      6FH;9
DB      77H;A
DB      7CH;b
DB      39H;C
DB      5EH;d
DB      79H;E
DB      71H;F

END


更多回帖

发帖
×
20
完善资料,
赚取积分