⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 16x16_80c52.asm

📁 提供了LED点阵显示的Proteus仿真电路
💻 ASM
字号:
	ZISHU		EQU	30H	;字数
	SHOWTIME	EQU	31H	;一个字重复扫描的次数
	SAOMIAO		EQU	32H	;扫描指针
	QUMA		EQU	33H	;取码指针
	DIS_BUF_C	EQU	34H	;缓冲区字数,这里是2
	OFFSET		EQU	35H	;取码指针偏移量
	;********************************************
	DIS_BUFL	EQU	40H	;显示缓冲低字节区(40H~60H攻32字节)
	DIS_BUFH	EQU	60H	;显示缓冲高字节区(60H~80H攻32字节)
	LOD_BUFL	EQU	80H	;加载缓冲低字节区(80H~90H)
	LOD_BUFH	EQU	90H	;加载缓冲高字节区(90H~A0H)
	ORG  	0000H
	LJMP	START
	ORG	0100H
START:		
	MOV 	SCON,#00H	;串行口初始化为方式0
	MOV	ZISHU,#14
	LCALL	CLRBUF		;把显示缓冲区清零
	MOV	DPTR,#TABLE
	MOV	R2,ZISHU
;	SETB	P1.4		;初始状态译码器无效
NEXT:	MOV	R0,#LOD_BUFL
	MOV	R1,#LOD_BUFH	
	LCALL	LOADING		;把字型码加载到加载缓冲区
	MOV	R3,#16		;这个字是否每一行都移动了?
LOOP3:	LCALL	SHIFT		;把显示缓冲区内的字型移位
	MOV	SHOWTIME,#10
LOOP2:	MOV	R4,#16		;一个字需要扫描的16次行
	MOV	SAOMIAO,#0H	;扫描指针清零
	MOV	QUMA,#0H	;取码指针清零
LOOP1:	MOV	A,SAOMIAO
	
	MOV	P1,A		;扫描指针输入
	INC	SAOMIAO		;扫描指针+1	
	MOV	DIS_BUF_C,#2H	;缓冲区有2个字
	LCALL	DIS_LINE
	INC	QUMA		;取码指针+1
	LCALL	DELAY
;	CLR	P1.4
	DJNZ	R4,LOOP1	;一个字需要扫描的16次行
	DJNZ	SHOWTIME,LOOP2	;一个字的显示时间是否完成?
	DJNZ	R3,LOOP3	;是否一个字的每一行的移动了
	DJNZ	R2,NEXT

	LJMP	$
;****************************************************************************
 DIS_LINE:			;输入一行子程序,入口参数DIS_BUF_C,与缓冲区字数相等
 	PUSH	PSW
	PUSH	ACC
	MOV	OFFSET,#0H	;取码指针偏移量,多一个字就多+16
NE1:	MOV	R0,#DIS_BUFL
	MOV	A,R0
	ADD	A,QUMA
	ADD	A,OFFSET
	MOV	R0,A
	MOV	A,@R0
	CLR	TI
	MOV 	SBUF,A
	JNB  	TI,$
  	CLR  	TI     		;清发送完标志	
	MOV	R0,#DIS_BUFH
	MOV	A,R0
	ADD	A,QUMA
	ADD	A,OFFSET
	MOV	R0,A
	MOV	A,@R0
	CLR	TI
	MOV 	SBUF,A
	JNB  	TI,$
  	CLR  	TI     		;清发送完标志

	MOV	A,OFFSET
	ADD	A,#16		;取下一个字需要加16的偏移量
	MOV	OFFSET,A
	DJNZ	DIS_BUF_C,NE1
	POP	ACC
	POP	PSW
	RET
	
;**********************************************************************************
;把显示缓冲区清零
CLRBUF:
	MOV	R0,#DIS_BUFL
L1:	MOV	@R0,#0
	INC	R0
	CJNE	R0,#80H,L1	
	RET
;**********************************************************************************
;把字型码加载到加载缓冲区
LOADING:
	PUSH	02h	;push r2
	MOV 	R2,#16
L2:
        MOV 	A,#0
        MOVC 	A,@A+DPTR
        MOV 	@R0,A	;把偶数个数字码存放在R0开始的缓冲区,共可以存放16个字码
        INC 	R0
        INC 	DPTR        
        CLR 	A
        MOVC 	A,@A+DPTR
        MOV 	@R1,A	;把奇数个数字码存放在R1开始的缓冲区,共可以存放16个字码
        INC 	R1
        INC 	DPTR
        DJNZ 	R2,L2	
	POP	02h	;pop r2
	RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;	
SHIFT:
	PUSH	PSW
	PUSH 	ACC
        SETB 	RS1		;选择另外一组工作寄存器
        MOV 	R3,#00H		;偏移量
        MOV 	R4,#16
LOOPS:
        CLR 	C		;清进位标志C
        MOV 	A,#LOD_BUFH
        ADD 	A,R3
        MOV 	R0,A
        MOV 	A,@R0
        RLC	A		;带进位左移,高字节的最高位移进Cy
        MOV 	@R0,A		;移位后放回缓冲区
        MOV 	A,#LOD_BUFL
        PUSH 	PSW		;保护Cy,避免ADD进位影响
        ADD 	A,R3	
        MOV 	R0,A
        MOV 	A,@R0
        POP 	PSW
        RLC 	A		;高字节最高位移进低字节最低位   低字节高位进入Cy
        MOV 	@R0,A

	MOV 	A,#DIS_BUFH
        PUSH 	PSW
        ADD 	A,R3
	ADD	A,#16		;取下一个字的高字节需要+16的偏移量
        MOV 	R0,A
        MOV 	A,@R0
        POP 	PSW
        RLC 	A
        MOV 	@R0,A

	MOV 	A,#DIS_BUFL
        PUSH 	PSW
        ADD 	A,R3
	ADD	A,#16
        MOV 	R0,A
        MOV 	A,@R0
        POP 	PSW
        RLC 	A
        MOV 	@R0,A

        MOV 	A,#DIS_BUFH	;显示缓冲区地址送A
        PUSH 	PSW
        ADD 	A,R3
        MOV 	R0,A
        MOV 	A,@R0
        POP 	PSW
        RLC 	A		;上缓冲区低字节的高位进入  这个缓冲区高字节低位,
        MOV 	@R0,A

        MOV 	A,#DIS_BUFL
        PUSH 	PSW
        ADD 	A,R3
        MOV 	R0,A
        MOV 	A,@R0
        POP 	PSW
        RLC 	A
        MOV 	@R0,A
	


        INC 	R3		;偏移量+1,准备移下一对字节(下一行)
        DJNZ 	R4,LOOPS 	;一个字的16行是否都移动了?
        CLR 	RS1
        POP 	ACC
	POP	PSW
	RET

;***********************************************************************************
DELAY:
	SETB	RS0
	MOV	R2,#200
J:	DJNZ	R2,J
	CLR	RS0
	RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

TABLE :
 	
	       DB 00H, 00H, 7fH, 0fcH, 7fH, 0fcH, 66H, 0ccH
               DB 66H, 0ccH, 66H, 0ccH, 66H, 0ccH, 66H, 0ccH
               DB 6eH, 0fcH, 7cH, 7cH, 78H, 0cH, 60H, 0cH
               DB 7fH, 0fcH, 7fH, 0fcH, 60H, 0cH, 00H, 00H  
               
               DB 00H, 00H, 18H, 0cH, 19H, 8cH, 19H, 8cH
               DB 19H, 8cH, 19H, 8cH, 19H, 8cH, 19H, 8cH
               DB 19H, 8cH, 19H, 8cH, 19H, 8cH, 31H, 8cH
               DB 31H, 8cH, 61H, 8cH, 40H, 0cH, 00H, 00H 

               DB 18h, 00h, 5ah, 0f8h, 5ah, 0f8h, 5ah, 0d8h
               DB 7eh, 0d8h, 00h, 0d8h, 0feh, 0d8h, 0feh, 0d8h
               DB 06h, 0d8h, 7eh, 0d8h, 60h, 0d8h, 6eh, 0d8h
               DB 7dh, 9ah, 73h, 1eh, 02h, 0eh, 00h, 00h

               DB 00h, 00h, 3fh, 0fch, 3fh, 0fch, 31h, 8ch
               DB 3fh, 0fch, 3fh, 0fch, 31h, 8ch, 3fh, 0fch
               DB 3fh, 0fch, 01h, 00h, 6dh, 8ch, 6ch, 86h
               DB 0cch, 32h, 0cfh, 0f0h, 07h, 0f0h, 00h, 00h

                           
               DB 18h, 60h, 18h, 60h, 59h, 0fch, 59h, 0fch, 7ch
               DB 60h, 0ffh, 0feh, 0dbh, 0feh, 18h, 18h
               DB 3dh, 0feh, 0f9h, 0feh, 0d8h, 18h, 19h, 98h
               DB 18h, 0d8h, 18h, 38h, 18h, 30h, 00h, 00h

               
               DB 00H, 00H, 0cH, 60H, 0cH, 60H, 0cH, 60H
	       DB 18H, 30H, 10H, 18H, 33H, 0cH, 63H, 06H
	       DB 46H, 00H, 06H, 60H, 0cH, 60H, 18H, 30H
	       DB 3fH, 0f8H, 3fH, 18H, 00H, 00H, 00H, 00H

	       DB 00H, 00H, 3fH, 0fcH, 3fH, 0fcH, 00H, 0cH
	       DB 7fH, 0ecH, 7fH, 0ecH, 00H, 0cH, 3fH, 0ccH
	       DB 3fH, 0ccH, 30H, 0ccH, 30H, 0ccH, 3fH, 0ccH
	       DB 3fH, 0ccH, 00H, 3cH, 00H, 38H, 00H, 00H 

	       DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H
               DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H
               DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H
               DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H

               DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H
               DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H
               DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H
               DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H

	       DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H
               DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H
               DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H
               DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H

	       DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H
               DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H
               DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H
               DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H

	       DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H
               DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H
               DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H
               DB 00H, 00H, 00H, 00H, 00H, 00H, 00H, 00H
               


DB  01H,00H,01H,00H,02H,80H,04H,40H
DB  08H,20H,12H,10H,21H,8EH,0C0H,84H
DB  00H,00H,1FH,0F0H,00H,10H,00H,20H
DB  00H,20H,00H,40H,00H,80H,01H,00H

;天
DB  00H,08H,7FH,0FCH,01H,00H,01H,00H
DB  01H,00H,01H,04H,0FFH,0FEH,01H,00H
DB  02H,80H,02H,80H,04H,40H,04H,40H
DB  08H,20H,10H,10H,20H,0EH,0C0H,04H

;是
DB  0FH,0E0H,08H,20H,08H,20H,0FH,0E0H
DB  08H,20H,08H,20H,0FH,0E0H,00H,04H
DB  0FFH,0FEH,01H,00H,09H,20H,09H,0F0H
DB  09H,00H,15H,00H,23H,00H,40H,0FEH

;空格
db 00H,00H,00H,00H,00H,00H,00H,00H
db 00H,00H,00H,00H,00H,00H,00H,00H
db 00H,00H,00H,00H,00H,00H,00H,00H
db 00H,00H,00H,00H,00H,00H,00H,00H
;年
DB  08H,00H,08H,08H,0FH,0FCH,11H,00H
DB  11H,00H,21H,10H,5FH,0F8H,11H,00H
DB  11H,00H,11H,04H,0FFH,0FEH,01H,00H
DB  01H,00H,01H,00H,01H,00H,01H,00H

;空格
db 00H,00H,00H,00H,00H,00H,00H,00H
db 00H,00H,00H,00H,00H,00H,00H,00H
db 00H,00H,00H,00H,00H,00H,00H,00H
db 00H,00H,00H,00H,00H,00H,00H,00H
;月
DB  00H,10H,0FH,0F8H,08H,10H,08H,10H
DB  08H,10H,0FH,0F0H,08H,10H,08H,10H
DB  08H,10H,0FH,0F0H,08H,10H,08H,10H
DB  10H,10H,10H,10H,20H,50H,40H,20H

;空格
db 00H,00H,00H,00H,00H,00H,00H,00H
db 00H,00H,00H,00H,00H,00H,00H,00H
db 00H,00H,00H,00H,00H,00H,00H,00H
db 00H,00H,00H,00H,00H,00H,00H,00H
;日
DB  00H,10H,1FH,0F8H,10H,10H,10H,10H
DB  10H,10H,10H,10H,10H,10H,1FH,0F0H
DB  10H,10H,10H,10H,10H,10H,10H,10H
DB  10H,10H,1FH,0F0H,10H,10H,00H,00H

;空格
db 00H,00H,00H,00H,00H,00H,00H,00H
db 00H,00H,00H,00H,00H,00H,00H,00H
db 00H,00H,00H,00H,00H,00H,00H,00H
db 00H,00H,00H,00H,00H,00H,00H,00H
;星
DB  00H,08H,3FH,0FCH,20H,08H,3FH,0F8H
DB  20H,08H,3FH,0F8H,01H,00H,21H,08H
DB  3FH,0FCH,21H,00H,41H,10H,0BFH,0F8H
DB  01H,00H,01H,04H,0FFH,0FEH,00H,00H

;期
DB  22H,04H,22H,7EH,22H,44H,7FH,44H
DB  22H,44H,3EH,7CH,22H,44H,3EH,44H
DB  22H,44H,22H,7CH,0FFH,0C4H,00H,44H
DB  24H,44H,22H,84H,41H,14H,82H,08H

;空格
db 00H,00H,00H,00H,00H,00H,00H,00H
db 00H,00H,00H,00H,00H,00H,00H,00H
db 00H,00H,00H,00H,00H,00H,00H,00H
db 00H,00H,00H,00H,00H,00H,00H,00H
;空格
db 00H,00H,00H,00H,00H,00H,00H,00H
db 00H,00H,00H,00H,00H,00H,00H,00H
db 00H,00H,00H,00H,00H,00H,00H,00H
db 00H,00H,00H,00H,00H,00H,00H,00H
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -