;数码管 —- 意图:学习查表及直接寻址
CHIP SN8F27E65
//{{SONIX_CODE_OPTION
.Code_Option WDT_CLK Flosc/4
.Code_Option Reset_Pin P04
.Code_Option LVD LVD_Max ; 3.3V Reset
.Code_Option Watch_Dog Disable
.Code_Option Low_Fcpu Flosc/1
.Code_Option High_Clk IHRC_16M ; Internal 16M RC Oscillator
.Code_Option High_Fcpu Fhosc/1
.Code_Option Security Enable
.Code_Option Noise_Filter Enable
code down:http://www.51hei.com/f/shssmm.rar
//}}SONIX_CODE_OPTION
DATAC EQU P4M
DATA EQU P4
LEDC EQU P0M
LED EQU P0
ORG 0000H
JMP A0
ORG 0015H
A0: MOV A,#3;显现值
MOV 41H,A
MOV A,#2;显现值
MOV 42H,A
MOV A,#1;显现值
MOV 43H,A
MOV A,#0;显现值
MOV 44H,A
;*********************************************
;显现设置
;*********************************************
A1: MOV A,#11111110B ;显现位码
MOV 31H,A
MOV A,#4;显现位数
MOV 33H,A
B0MOV H,#0 ; 清“H”以寻址RAM bank 0。
B0MOV L,#41H ; 设定寄存器地址。
;*********************************************
;显现子程序
;*********************************************
A2: MOV A,#0FFH;清显现
B0MOV DATAC,A
B0MOV DATA,A
MOV A,#0FFH
B0MOV LEDC,A
MOV A,#0FFH
B0MOV LED,A
MOV A,#0FFH;设置为输出口
B0MOV DATAC,A
B0MOV Y,#Q1$M;编码表地址
B0MOV Z,#Q1$L;编码表地址
B0MOV A, @HL;直接寻址
ADD Z,A;寻觅要显现编码
MOVC ;查表高八位存在R低八位存在ACC
B0MOV DATA,A;数据输出
MOV A,#0FFH;设为输出口
B0MOV LEDC,A
MOV A,31H;位码
B0MOV LED,A
MOV A,31H;处理位码的数因为没有RL只要RLC现在这儿处理C
MOV 32H,A
RLC 32H
RLCM 31H;移动位码
INCMS L;显现数据操控寄存器处理
CALL M001;延时进步亮度
MOV A,#0FFH;清显现
B0MOV DATAC,A
B0MOV DATA,A
MOV A,#0FFH
B0MOV LEDC,A
MOV A,#0FFH
B0MOV LED,A
DECMS 33H;主动减1判别是否也显现完结
JMP A2
JMP A1
;******************************************
;延时子程序
;******************************************
M001: MOV A,#1
MOV 51H,A
M002: MOV A,#24
MOV 52H,A
M003: MOV A,#250
MOV 53H,A
M004: DECMS 53H
JMP M004
DECMS 52H
JMP M003
DECMS 51H
JMP M002
RET
;******************************************
;编码表
;******************************************
Q1: DW 00C0H ;0
DW 00F9H ;1
DW 00A4H ;2
DW 00B0H ;3
DW 0099H ;4
DW 0092H ;5
DW 0082H ;6
DW 00F8H ;7
DW 0080H ;8
DW 0090H ;9
DW 0088H ;A
DW 0083H ;B
DW 00C6H ;C
DW 00A1H ;D
DW 0086H ;E
DW 008EH ;F
endp