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

📄 1.asm

📁 点阵,每外部中断一次在显示屏上相应显示不同的文字16*16点阵
💻 ASM
📖 第 1 页 / 共 2 页
字号:
	ORG 0000H             ;   ;初始化
	LJMP MAIN             ;  ;跳到主程序
	ORG 0003H              ;  ;外部中断0入口地址
	LJMP LOOP         
	ORG 0013H              ;   ;外部中断1入口地址
	LJMP LOOP1
	ORG 0030H              ;   ;主程序从0030H开始
MAIN:	
	MOV IE,#85H         ; ;开中断
	MOV TCON,#05H        ;    ;设计边沿触发方?
	MOV R6,#00H
	MOV R7,#00H
	CLR P3.4
	CLR P3.5
	CLR P1.4
	MOV R5,#00H          ;     ;选择第一列亮
SCAN:	
	MOV P1,R5
	MOV A,#01H
	MOV P0,A
Q0:	
	LCALL DELAY
	RL A                 ;  ;P0口从低位亮到高位
	MOV P0,A
	CJNE A,#80H,Q0
	MOV P2,A
Q1:	
	LCALL DELAY
	RR A                  ; ;P2口从高位亮到低位
	MOV P2,A
	CJNE A,#01H,Q1
Q2:
	RL A               ; ;P2口从低位亮到高位
	MOV P2,A
	LCALL DELAY
	CJNE A,#80H,Q2
	MOV P0,A
Q3:	
	LCALL DELAY
	RR A                 ;  ;P0口从高位亮到低位
	MOV P0,A
	CJNE A,#01H,Q3
	MOV P0,A
	MOV P2,A
Q4:
	LCALL DELAY
	RL A                ; ;P2、P0口从低位亮到高位
	MOV P0,A
	MOV P2,A
	LCALL DELAY
	CJNE A,#80H,Q4
Q5:
	RR A            ; ;P0、P2口从高位亮到低位
	MOV P0,A
	MOV P2,A
	LCALL DELAY
	CJNE A,#01H,Q5
	MOV P0,#0FFH         ;    ;P0、P2口交叉亮
	MOV P2,#00H
	LCALL DELAY
	MOV P0,#00H
	MOV P2,#0FFH
	LCALL DELAY
	MOV A,#01H
	MOV P0,A
	LCALL DELAY
	LCALL DELAY
	MOV P2,A
	LCALL DELAY
	LCALL DELAY
Q6:	
	RL A             ;  ;P0、P2口交叉从低位亮到高位
	MOV P0,A
	LCALL DELAY
	LCALL DELAY
	MOV P2,A
	LCALL DELAY
	LCALL DELAY
	CJNE A,#80H,Q6
	MOV R3,#03H        ; ;P0、P2口低位和高位交叉亮3次
	MOV A,#0FH
Q7:	
	MOV P0,A
	MOV P2,A
	LCALL DELAY
	SWAP A
	DJNZ R3,Q7
	MOV P0,#0FFH
	MOV P2,#0FFH
	LCALL DELAY
	LCALL DELAY
	CJNE R5,#0FH,L4       ;  ;亮到16列了吗?否转
	LJMP MAIN
L4:
	INC R5
	LJMP SCAN
DELAY:
	MOV R0,#100      ; ;延时40MS
DELAY1:
	MOV R1,#200
	DJNZ R1,$
	DJNZ R0,DELAY1
	RET
DELAY2:
	MOV R3,#248     ; ;延时123MS                                         
DELAY3:
	MOV R4,#248
	DJNZ R4,$
	DJNZ R3,DELAY3
	RET
	
LOOP:	
	PUSH ACC
	PUSH PSW
	INC R6
	SETB RS0
	MOV A, #0FFH     ; ;清除画面
	MOV P0,A         ;      ;清除P0口
	ANL P2,#00        ;      ;清除P2口
	MOV R2,#200 
D1:
	MOV R3,#248       ;  ;延时100MS
	DJNZ R3,$ 
	DJNZ R2,D1 
	MOV 20H , #00H       ;  ;取码指针的初值
l1:
	MOV R1,#100      ;   ;每个字的停留时间
L2: 
	MOV R6,#16       ;  ;每个字的16个码
	MOV R4, #00H      ;    ; ;扫描指针清零
	MOV R0, 20H        ;   ;取码指针存入R0
L3: 
	MOV A,R4        ;  ;扫描指针存入A
	MOV P1,A         ;    ;扫描输出
	INC R4            ;    ;扫描指针加1,扫描下一个
	MOV A,R0          ;      ;取码指针存入A
	LCALL BL    ;   ;取数据表的上半部份的代码
	MOVC A,@A+DPTR 
	MOV P0,A           ;  ;输出到P0
	INC R0               ; ;取码指针加1,取下一个码
	MOV A,R0 
	LCALL BL     ; ;取数据表的下半部份的代码
	MOVC A,@A+DPTR 
	MOV P2,A            ;   ;输出到P2
	INC R0 
	MOV R3,#02           ;  ;扫描1MS
D2:
	MOV R5,#248 
	DJNZ R5,$ 
	DJNZ R3,D2 
	MOV A, #00H          ;  ;清除屏幕
	MOV P0,A 
	ANL P2, #00H 
	DJNZ R6,L3           ;  ;一个字16个码是否完成?
	DJNZ R1,L2           ;  ;每个字的停留时间时间是否到了?
	MOV 20H ,R0          ;  ;取码指针存入20H
	CJNE R0,#224,L1       ; ;8个字256个码是否完成?
	MOV R7,#00H
	CLR RS0
	POP PSW
	POP ACC
	RETI
BL:	
	CLR RS0
	CJNE R6,#7,QQ7
	MOV R6,#00H
	SETB RS0
	MOV DPTR,#TAB7
	RET
QQ7:	
	CLR RS0
	CJNE R6,#6,QQ6
	SETB RS0
	MOV DPTR,#TAB6
	RET
QQ6:	
	CLR RS0
	CJNE R6,#5,QQ5
	SETB RS0
	MOV DPTR,#TAB5
	RET

QQ5:	CLR RS0
	CJNE R6,#4,QQ4
	SETB RS0
	MOV DPTR,#TAB4
	RET

QQ4:	CLR RS0
	CJNE R6,#3,QQ3
	SETB RS0
	MOV DPTR,#TAB3
	RET

QQ3:	CLR RS0
	CJNE R6,#2,QQ2
	SETB RS0
	MOV DPTR,#TAB2
	RET

QQ2:	CLR RS0
	CJNE R6,#1,QQ1
	SETB RS0
	MOV DPTR,#TAB1
	RET

QQ1:	CLR RS0
	MOV R6,#00H
	SETB RS0
	RET
LOOP1:
	PUSH ACC
	PUSH PSW
	INC R7
	SETB RS0
	MOV A, #0FFH   ; ;清除画面
	MOV P0,A            ;   ;清除P0口
	ANL P2,#00          ;   ;清除P2口
	MOV R2,#200 
D11:
	MOV R3,#248      ; ;延时100MS
	DJNZ R3,$ 
	DJNZ R2,D11 
	MOV 20H , #00H       ;  ;取码指针的初值
l11:	
	MOV R1,#100      ;  ;每个字的停留时间
L21:
	MOV R6,#16       ; ;每个字的16个码
	MOV R4, #00H      ;     ;扫描指针清零
	MOV R0, 20H          ;  ;取码指针存入R0
L31: 
	MOV A,R4        ;  ;扫描指针存入A
	MOV P1,A              ; ;扫描输出
	INC R4               ;   ;扫描指针加1,扫描下一个
	MOV A,R0              ; ;取码指针存入A
	LCALL BL1   ;  ;取数据表的上半部份的代码
	MOVC A,@A+DPTR 
	MOV P0,A             ;  ;输出到P0
	INC R0                ;  ;取码指针加1,取下一个码
	MOV A,R0             
	LCALL BL1    ; ;取数据表的下半部份的代码
	MOVC A,@A+DPTR 
	MOV P2,A              ; ;输出到P2
	INC R0 
	MOV R3,#02           ;  ;扫描1MS
D21:
	MOV R5,#248 
	DJNZ R5,$ 
	DJNZ R3,D21 
	MOV A, #00H          ;;清除屏幕
	MOV P0,A 
	ANL P2, #00H 
	DJNZ R6,L31         ; ;一个字16个码是否完成?
	DJNZ R1,L21         ; ;每个字的停留时间时间是否到了?
	MOV 20H ,R0         ; ;取码指针存入20H
	CJNE R0,#160,L11    ; ;8个字256个码是否完成?
	MOV R7,#00H
	CLR RS0
	POP PSW
	POP ACC
	RETI

BL1:	
	CLR RS0
	CJNE R7,#7,QQQ7
	MOV R7,#00H
	SETB RS0
	MOV DPTR,#TA7
	RET
QQQ7:	
	CLR RS0
	CJNE R7,#6,QQQ6
	SETB RS0
	MOV DPTR,#TA6
	RET
QQQ6:	
	CLR RS0
	CJNE R7,#5,QQQ5
	SETB RS0
	MOV DPTR,#TA5
	RET

QQQ5:	CLR RS0
	CJNE R7,#4,QQQ4
	SETB RS0
	MOV DPTR,#TA4
	RET

QQQ4:	CLR RS0
	CJNE R7,#3,QQQ3
	SETB RS0
	MOV DPTR,#TA3
	RET

QQQ3:	CLR RS0
	CJNE R7,#2,QQQ2
	SETB RS0
	MOV DPTR,#TA2
	RET

QQQ2:	CLR RS0
	CJNE R7,#1,QQQ1
	SETB RS0
	MOV DPTR,#TA1
	RET
QQQ1:	CLR RS0
	MOV R7,#00H
	SETB RS0
	RET

TAB7:
	;"此",
	DB 	 00H, 00H,0F8H, 00H, 00H,0FFH, 40H, 40H
	DB	 00H,0FFH, 40H, 20H, 10H, 18H, 00H, 00H
	DB	 20H, 20H, 3FH, 20H, 20H, 1FH, 10H, 10H
	DB	 00H, 3FH, 40H, 40H, 40H, 40H, 70H, 00H

	;"情",
	DB 	 80H, 70H, 00H,0FFH, 10H, 22H,0AAH,0AAH
	DB	 0AAH,0BFH,0AAH,0AAH,0AAH, 22H, 20H, 00H
	DB	 00H, 00H, 00H,0FFH, 00H, 00H,0FFH, 0AH
	DB	 0AH, 0AH, 4AH, 8AH, 7FH, 00H, 00H, 00H

	;"可",
	DB 	 00H, 02H, 02H,0F2H, 12H, 12H, 12H, 12H
	DB	 0F2H, 02H, 02H,0FEH, 02H, 02H, 02H, 00H
	DB	 00H, 00H, 00H, 07H, 04H, 04H, 04H, 04H
	DB	 07H, 40H, 80H, 7FH, 00H, 00H, 00H, 00H

	;"待",
	DB 	 00H, 10H, 88H,0C4H, 33H, 40H, 44H, 44H
	DB	 44H, 7FH, 44H,0C4H, 44H, 44H, 40H, 00H
	DB	 02H, 01H, 00H,0FFH, 00H, 02H, 0AH, 32H
	DB	 02H, 42H, 82H, 7FH, 02H, 02H, 02H, 00H

	;"成",
	DB 	 00H, 00H,0F8H, 88H, 88H, 88H, 88H, 08H
	DB	 7FH, 88H, 0AH, 0CH, 08H,0C8H, 00H, 00H
	DB	 40H, 20H, 1FH, 00H, 08H, 10H, 0FH, 40H
	DB	 20H, 13H, 1CH, 24H, 43H, 80H,0F0H, 00H

	;"追",
	DB 	 40H, 42H, 44H,0CCH, 00H, 00H,0FCH, 24H
	DB	 26H, 25H, 24H, 3CH, 00H, 00H, 00H, 00H
	DB	 00H, 40H, 20H, 1FH, 20H, 40H, 5FH, 51H
	DB	 51H, 51H, 51H, 51H, 5FH, 60H, 20H, 00H

	;"忆",
	DB 	 80H, 70H, 00H,0FFH, 10H, 20H, 04H, 84H
	DB	 44H, 24H, 14H, 0CH, 04H, 00H, 00H, 00H
	DB	 00H, 00H, 00H,0FFH, 00H, 3CH, 43H, 40H
	DB	 40H, 40H, 40H, 40H, 40H, 40H, 70H, 00H

TAB6:

	;"蓝",
	DB 	 00H, 04H,0E4H, 04H, 0FH,0F4H, 84H, 44H
	DB	 34H,0A4H, 2FH, 24H, 24H, 04H, 04H, 00H
	DB	 40H, 40H, 7CH, 44H, 44H, 7DH, 44H, 44H
	DB	 44H, 7CH, 45H, 44H, 7CH, 40H, 40H, 00H

	;"田",
	DB 	 00H, 00H,0FEH, 82H, 82H, 82H, 82H,0FEH
	DB	 82H, 82H, 82H, 82H,0FEH, 00H, 00H, 00H
	DB	 00H, 00H, 3FH, 20H, 20H, 20H, 20H, 3FH
	DB	 20H, 20H, 20H, 20H, 3FH, 00H, 00H, 00H

	;"日",
	DB 	 00H, 00H, 00H,0FEH, 82H, 82H, 82H, 82H
	DB	 82H, 82H, 82H,0FEH, 00H, 00H, 00H, 00H
	DB	 00H, 00H, 00H, 3FH, 20H, 20H, 20H, 20H
	DB	 20H, 20H, 20H, 3FH, 00H, 00H, 00H, 00H

	;"暖",
	DB 	 00H,0FCH, 84H, 84H,0FCH, 00H,0AAH,0B2H
	DB 	 0E6H,0BAH,0A2H,0B2H,0A9H,0A9H, 80H, 00H
	DB	 00H, 1FH, 10H, 10H, 5FH, 20H, 90H, 8CH
	DB	 47H, 2AH, 12H, 2AH, 46H, 40H, 40H, 00H

	;"玉",
	DB 	 00H, 02H, 82H, 82H, 82H, 82H, 82H,0FEH
	DB	 82H, 82H, 82H, 82H, 82H, 02H, 00H, 00H
	DB	 00H, 40H, 40H, 40H, 40H, 40H, 40H, 7FH
	DB	 40H, 44H, 48H, 58H, 40H, 60H, 40H, 00H

	;"生",
	DB 	 00H,0C0H, 30H, 1EH, 10H, 10H, 10H,0FFH
	DB	 10H, 10H, 10H, 10H, 10H, 10H, 00H, 00H
	DB	 01H, 40H, 42H, 42H, 42H, 42H, 42H, 7FH
	DB	 42H, 42H, 42H, 42H, 42H, 40H, 40H, 00H

	;"烟",
	DB  	 0E0H, 00H,0FFH, 20H, 10H,0FEH, 42H, 42H
	DB	 42H,0FAH, 42H, 42H, 42H,0FEH, 00H, 00H
	DB	 40H, 30H, 0FH, 10H, 20H, 7FH, 50H, 48H
	DB	 46H, 41H, 42H, 44H, 58H, 7FH, 00H, 00H
TAB5:

	;"沧",
	DB 	 10H, 62H, 04H, 8CH, 40H, 20H, 90H, 8CH
	DB	 83H, 8CH, 90H,0A0H, 40H, 40H, 00H, 00H
	DB	 10H, 08H, 1EH, 00H, 00H, 00H, 3FH, 40H
	DB	 40H, 44H, 48H, 47H, 40H, 70H, 00H, 00H

	;"海",
	DB 	 10H, 22H, 64H, 0CH, 10H, 08H,0F6H, 14H
	DB	 34H, 54H, 14H, 14H,0F4H, 04H, 00H, 00H
	DB	 10H, 0CH, 06H, 01H, 01H, 11H, 1FH, 11H
	DB	 13H, 15H, 51H, 91H, 7FH, 11H, 01H, 00H

	;"月",
	DB 	 00H, 00H, 00H, 00H,0FEH, 22H, 22H, 22H
	DB	 22H, 22H, 22H,0FEH, 00H, 00H, 00H, 00H
	DB	 00H, 80H, 40H, 30H, 0FH, 02H, 02H, 02H
	DB	 02H, 42H, 82H, 7FH, 00H, 00H, 00H, 00H

	;"明",
	DB 	 00H,0FCH, 44H, 44H, 44H,0FCH, 00H, 00H
	DB	 0FEH, 22H, 22H, 22H, 22H,0FEH, 00H, 00H
	DB	 00H, 07H, 04H, 04H, 04H, 87H, 40H, 30H
	DB	 0FH, 02H, 02H, 42H, 82H, 7FH, 00H, 00H

	;"珠",
	DB 	 04H, 44H, 44H,0FCH, 44H, 44H,0A0H, 9EH
	DB	 88H, 88H,0FFH, 88H, 88H, 88H, 80H, 00H
	DB	 08H, 08H, 08H, 0FH, 08H, 48H, 20H, 10H
	DB	 0CH, 03H,0FFH, 06H, 18H, 30H, 10H, 00H

	;"有",
	DB 	 04H, 04H, 04H, 84H,0E4H, 3CH, 27H, 24H
	DB	 24H, 24H, 24H,0E4H, 04H, 04H, 04H, 00H
	DB	 04H, 02H, 01H, 00H,0FFH, 09H, 09H, 09H

⌨️ 快捷键说明

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