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

📄 3.asm

📁 基于8051单片机的16*16点阵proteus仿真
💻 ASM
字号:
 ORG     0000H

START:        MOV     A,#0000H     ;清除屏幕

              MOV     P0,A

              MOV     P2,A

              ACALL   DISP       ;调用显示子程序

              ACALL   MOVE       ;调用左移子程序

              AJMP    START

;*********************************************************

DISP:         MOV     R2,#02H    ;每个画面2个字,4个字分2次显示

              MOV     20H,#00H   ;取码指针暂存地址20H初值为00H

D4:           MOV     R4,#00H    ;74154扫描指针初值

              MOV     R1,#0FFH   ;每幕停留的时间

D5:           MOV     R6,#32     ;每幕2个字,32个数据

              MOV     R0,20H     ;取码指针存入R0

D2:           ACALL   READ1      ;调用取码子程序

              INC     R4         ;扫描下一列

              DJNZ    R6,D2      ;显示1幕?

              MOV     R4,#00     ;清除74154扫描指针为00

              DJNZ    R1,D5      ;每幕停留时间到了?

              MOV     20H,R0     ;保留取码指针存入20H地址

              DJNZ    R2,D4      ;2幕显示完毕了?

              RET

;********************************************************

READ1:        MOV     A,R4       ;扫描指针载入A         

              MOV     P1,A       ;输出至P1扫描列 

              MOV     A,R0       ;取码指针载入A

              MOV     DPTR,#TAB  ;数据指针指到TAB

              MOVC    A,@A+DPTR  ;到TAB取上半部的数据码

              MOV     P0,A       ;输出至P0显示

              INC     R0         ;取下一个码

              MOV     A,R0       ;取码指针载入A

              MOV     DPTR,#TAB  ;数据指针指到TAB

              MOVC    A,@A+DPTR  ;到TAB取下半部的数据码

              MOV     P2,A       ;输出至P2显示

              INC     R0         ;取码值加1

              MOV     R3,#25     ;延时

              DJNZ    R3,$       

              MOV     A,#00H     ;清除屏幕

              MOV     P0,A       

              MOV     P2,A       

DELAY:        MOV     R3,#01     ;延时

D7:           MOV     R5,#50

              DJNZ    R5,$

              DJNZ    R3,D7

              RET 

;*************************************************

MOVE:         

              MOV     20H,#00     ;取码指针暂存地址20H初值为00H

              MOV     R4,#00H     ;74154扫描指针初值

M1:           MOV     R1,#1FH     ;每幕停留的时间

M2:           MOV     R6,#32      ;每幕2个字,32个数据

              MOV     R0,20H      ;取码指针存入R0

M3:           ACALL   READ1       ;调用取码子程序

              INC     R4          ;扫描下一列

              DJNZ    R6,M3       ;显示1幕?

              MOV     R4,#00      ;清除74154扫描指针为00

              DJNZ    R1,M2       ;每幕停留时间到了?

              MOV     A,20H       ;取码指针载入A

              ADD     A,#02       ;加2

              MOV     20H,A       ;再存入20H地址取码指针

              XRL     A,#66       ;4个字是否都左移完毕了?

              JNZ     M1          ;循环

              RET

;*************************************************              

 

DL5S:         MOV   R6,40H        ;delay program

DL1:          MOV   R5,#200

DL2:          MOV   R4,#125

DL3:          DJNZ  R4,$

              DJNZ  R5,DL2

              DJNZ  R6,DL1

              RET

;************************************************

;"欢迎光临"显示用ROM数据表

TAB:          ;欢

              DB   00H,20H,3CH,10H

              DB   44H,08H,84H,04H

              DB   04H,03H,04H,03H

              DB   84H,04H,44H,08H

              DB   3CH,10H,00H,20H

              DB   00H,00H,07H,20H

              DB   04H,10H,0F4H,0FH

              DB   04H,10H,1CH,20H  

              ;迎

              DB   00H,00H,49H,20H

              DB   6AH,10H,0DCH,0FH

              DB   08H,10H,00H,20H

              DB   0FEH,27H,02H,22H

              DB   02H,21H,81H,20H

              DB   00H,20H,02H,20H

              DB   0FEH,2FH,02H,22H

              DB   02H,22H,0FEH,21H

              ;光

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

              DB   22H,20H,24H,20H

              DB   28H,10H,30H,08H

              DB   0E0H,07H,3FH,00H

              DB   20H,00H,0F0H,3FH

              DB   28H,20H,24H,20H

              DB   22H,20H,20H,20H

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

              ;临

              DB   00H,00H,0F0H,03H

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

              DB   0FFH,3FH,00H,00H

              DB   40H,00H,20H,3FH

              DB   10H,21H,0FH,21H

              DB   14H,21H,24H,3FH

              DB   44H,21H,04H,21H

              DB   04H,21H,04H,3FH

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

              END                       ;程序结束
 

⌨️ 快捷键说明

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