📄 zywd.asm
字号:
AD_mem data 30h ;定义字节变量
AD_memh data 31h ;
valuelow data 32h ;
valuehigh data 33h ;
dispmem data 40h
con_0809 equ 09ff3h ;
con_8279 equ 05fffh ;
dat_8279 equ 05effh
ORG 0000H
SJMP START
ORG 0030H
START: MOV SP,#80H
MOV IE,#00H
ACALL INIT
MOV DPTR,#AD0809
ACALL SETDISP
ACALL DISPLAY
ACALL DELAY
MAIN: ACALL AD_0809
ACALL DISPLAY
ACALL DELAY
SJMP MAIN
;**********************INITIAL**************************
INIT: MOV DPTR,#CON_8279
MOV A,#00H
MOVX @DPTR,A
MOV A,#00110100B
MOVX @DPTR,A
MOV A,#11011100B
MOVX @DPTR,A
WAIT: MOVX A,@DPTR
JB ACC.7,WAIT
CLRRAM: MOV R0,#30H
MOV R7,#20H
MOV A,#00H
CLRRAM1:MOV @R0,A
DJNZ R7,CLRRAM1
RET
;**********************AD_SATRAT***************************
AD_START:MOV DPTR,#CON_0809
MOVX @DPTR,A
ADT: JB P1.3,ADT
NOP
MOVX A,@DPTR
MOV B,A
MOV A,#225
CLR C
SUBB A,B
CLR C
MOV AD_MEM,#0
MOV AD_MEM+1,#0
MOV VALUELOW,#1
MOV VALUEHIGH,#0
MOV R5,#08
NEXTAD: RRC A
PUSH ACC
JNC NEXTADD
MOV A,VALUELOW
ADD A,AD_MEM
DA A
MOV AD_MEM,A
MOV A,VALUEHIGH
ADDC A,AD_MEM+1
DA A
MOV AD_MEM+1,A
NEXTADD:MOV A,VALUELOW
ADD A,VALUELOW
DA A
MOV VALUELOW,A
MOV A,VALUEHIGH
ADDC A,VALUEHIGH
DA A
MOV VALUEHIGH,A
POP ACC
DJNZ R5,NEXTAD
RET
;*****************************AD_0809**************************
AD_0809:ACALL AD_START
MOV A,AD_MEM
ANL A,#0FH
MOV DPTR,#DISPTABLE
MOVC A,@A+DPTR
MOV DISPMEM+0,A
MOV A,AD_MEM
ANL A,#0F0H
SWAP A
MOVC A,@A+DPTR
MOV DISPMEM+1,A
MOV A,AD_MEM+1
ANL A,#0FH
MOVC A,@A+DPTR
MOV DISPMEM+2,A
RET
;*****************************SETDISP*****************************
setdisp:push acc ;向显存写入指定数据的子程序
mov r0,#dispmem ;由 DPTR 参数指定数据地址初值
mov b,#0
mov r7,#6h
nextbit:mov a,b
movc a,@a+dptr
mov @r0,a
inc r0
inc b
djnz r7,nextbit
pop acc
ret
;************************* display *************************
display:mov r4,#6h ;将显存数据送入8279进行显示的子程序
mov r1,#dispmem
mov dptr,#con_8279
mov a,#10010010b ;指定写入8279显示RAM的地址,
movx @dptr,a ; 8279显示RAM地址自动加1
disprel:mov a,@r1
mov dptr,#dat_8279
movx @dptr,a
INC r1
djnz r4,disprel
ret
;*************************DELAY*********************
DELAY: MOV R7,#7FH
DELAY1: MOV R6,#0FFH
DJNZ R6,$
DJNZ R7,DELAY1
RET
;*****************************TABLE********************************
AD0809: DB 17h,17h,17h,0bfh,0a1h,088h;
;0C0H,80H,0C0H,98H,0BFH,0FFH,0FFH,0FFH
DISPTABLE: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,98H
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -