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

📄 16x16_164.asm

📁 提供了LED点阵显示的Proteus仿真电路
💻 ASM
字号:
	C_T0	EQU	30H	;C_T0中断次数
	OFFSET	EQU	31H	;取码偏移量
	ORG  	0000H
	ljmp	start
	ORG 	000BH
	LJMP	P_T0
	org	0100h
start:	
	SETB	EA		;开启总中断开关	
	SETB	ET0		;开T0中断
	MOV 	TMOD,#01H	;设置计时器模式  45536d,定时40毫秒
	MOV 	SCON,#00H	;串行口初始化为方式0
	MOV	TH0,#0b1H	;设置定时器初始值
	MOV 	TL0,#0E0H
	MOV	C_T0,#10
	MOV	OFFSET,#0	;偏移量清零
;	SETB	TR0		;启动T0定时器

;;;;;;;;;;;;;;;;;;;;;;;;;;R0=取码指针;R1=一个字需要扫描的次数;R2=扫描指针



LOOP: 	MOV 	R1,#16 ;每个字16个码
       	MOV 	R2,#00H ;扫描指针清零
       	MOV 	R0,#00H ;取码指针初始为0存入R0
L3:    	
	MOV 	A,R2  ;扫描指针存入A
       	MOV 	P1,A   ;扫描输出
       	INC 	R2     ;扫描指针加1,扫描下一个
       	MOV 	A,R0  ;取码指针存入A
	ADD	A,OFFSET	;加上偏移量
       	MOV 	DPTR,#TABLE;取数据表的上半部分的代码
       	MOVC 	A,@A+DPTR
	CLR	TI
	MOV 	SBUF,A
	JNB  	TI,$
  	CLR  	TI     ;清发送完标志	     
       	INC 	R0    ;取码指针加1,取下一个码。
       	MOV 	A,R0
	ADD	A,OFFSET	;加上偏移量
       	MOV 	DPTR,#TABLE ;取数据表下半部份的代码
       	MOVC 	A,@A+DPTR
	CLR	TI
	MOV 	SBUF,A
	JNB  	TI,$
  	CLR  	TI     ;清发送完标志
	
	MOV	A,OFFSET	;offset=offset+32
	ADD	A,#32
	MOV	OFFSET,A
	DEC	R0	;取码指针减一,开始取第二个字
	
	MOV 	A,R0  ;取码指针存入A
	ADD	A,OFFSET	;加上偏移量
       	MOV 	DPTR,#TABLE;取数据表的上半部分的代码
       	MOVC 	A,@A+DPTR
	CLR	TI
	MOV 	SBUF,A
	JNB  	TI,$
  	CLR  	TI     ;清发送完标志	     
       	INC 	R0    ;取码指针加1,取下一个码。
       	MOV 	A,R0
	ADD	A,OFFSET	;加上偏移量
       	MOV 	DPTR,#TABLE ;取数据表下半部份的代码
       	MOVC 	A,@A+DPTR
	CLR	TI
	MOV 	SBUF,A
	JNB  	TI,$
  	CLR  	TI     ;清发送完标志
	
	MOV	A,OFFSET	;offset=offset-32
	SUBB	A,#32
	MOV	OFFSET,A

       	INC	R0	
	lcall	DELAY
       	DJNZ 	R1,L3      ; ;一个字16个码是否完成?     
	LJMP	LOOP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;	
DELAY:
	SETB	RS0
;	MOV	R2,#01H
J:	MOV	R3,#100
K:	DJNZ	R3,K
;	DJNZ	R2,J	
	CLR	RS0
	RET

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
P_T0:		
	DJNZ	C_T0,QUIT
	MOV	A,OFFSET
	ADD	A,#2		;没隔一段时间偏移量加2,实现滚动
	MOV	OFFSET,A
	CJNE 	A,#192,LOOP3  	;若A不等于200,则loop3,形成cy标志
	LJMP	LOOP1	
LOOP3:  JNC 	LOOP1		;offset>200,清零
	MOV	C_T0,#10		;中断次数附初值
	LJMP	QUIT
LOOP1:	MOV	OFFSET,#0	;查表偏移量清零
	MOV	C_T0,#10		;中断次数附初值	
QUIT:		
	MOV	TH0,#0b1H	;设置定时器初始值
	MOV 	TL0,#0E0H	
	RETI		
TABLE :	
/*
;空格
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,04H,7FH,0FEH,44H,44H
DB  44H,44H,44H,44H,44H,44H,44H,44H
DB  44H,44H,44H,44H,48H,3CH,50H,04H
DB  40H,04H,7FH,0FCH,40H,04H,00H,00H
	
;川
DB  00H,04H,10H,04H,10H,84H,10H,84H
DB  10H,84H,10H,84H,10H,84H,10H,84H
DB  10H,84H,10H,84H,10H,84H,10H,84H
DB  10H,84H,20H,04H,40H,04H,00H,04H

;师
DB  08H,04H,0BH,0FEH,48H,20H,48H,20H
DB  48H,24H,49H,0FEH,49H,24H,49H,24H
DB  49H,24H,49H,24H,49H,24H,49H,24H
DB  11H,34H,11H,28H,20H,20H,40H,20H

;范
DB  08H,20H,08H,20H,7FH,0FCH,08H,20H
DB  20H,00H,13H,0F0H,4AH,10H,22H,10H
DB  22H,10H,0AH,50H,0F2H,20H,22H,00H
DB  22H,02H,22H,02H,21H,0FEH,20H,00H
;大
DB  01H,00H,01H,00H,01H,00H,01H,00H
DB  01H,04H,0FFH,0FEH,01H,00H,02H,80H
DB  02H,80H,02H,40H,04H,40H,04H,20H
DB  08H,10H,10H,0EH,60H,04H,00H,00H

;学
DB  22H,10H,11H,10H,11H,20H,00H,44H
DB  7FH,0FEH,40H,04H,80H,08H,1FH,0E0H
DB  00H,40H,01H,84H,0FFH,0FEH,01H,00H
DB  01H,00H,01H,00H,05H,00H,02H,00H

;!
DB  00H,00H,18H,00H,18H,00H,18H,00H
DB  18H,00H,18H,00H,18H,00H,18H,00H
DB  18H,00H,18H,00H,18H,00H,00H,00H
DB  18H,00H,18H,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 + -