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

📄 ex9-10.sdi

📁 《单片机原理实用教程——基于Proteus虚拟仿真》一书的配套光盘
💻 SDI
字号:
,,,COM EQU 50H ; LCD指令寄存器
,,,DAT EQU 51H ; LCD数据寄存器
,,,
000B,,,RS EQU P2.1 ; LCD寄存器选择信号
000B,,,RW EQU P2.2 ; LCD读/写选择信号
000B,,,E EQU P2.3  ; LCD使能信号
,,,
,,,        ORG 0000H
0000,02 00 30,,        LJMP MAIN       ;主程序入口
,,,        ORG 0030H       ;主程序
0030,,MAIN,MAIN:
0030,75 81 60,,        MOV SP,#60H     ;主程序
0033,12 00 6B,,        LCALL INT       ;调LCD间接控制方式下的初始化子程序
0036,75 50 01,,                MOV COM,#01H  ;LCd清0命令
0039,12 00 BD,,                LCALL PR1     ;调写指令代码子程序
003C,75 50 06,,                MOV COM,#06H  ;输入方式命令,光标右移
003F,12 00 BD,,                LCALL PR1     ;调写指令代码子程序
0042,75 50 80,,                MOV COM,#080H ;设置DDRAM地址
0045,12 00 BD,,                LCALL PR1     ;调写指令代码子程序
0048,90 00 5B,,                MOV DPTR,#TAB ;DPTR指向显示字符表首地址
004B,7A 10,,                MOV R2,#10H       ;共显示16字符
004D,7B 00,,                MOV R3,#00H
004F,EB,WRIN,WRIN:   MOV A,R3
0050,93,,                MOVC A,@A+DPTR ;取出显示字符
0051,F5 51,,                MOV DAT,A
0053,12 00 DF,,                LCALL PR2     ;调写显示数据子程序
0056,0B,,                INC R3
0057,DA F6,,                DJNZ R2,WRIN
0059,80 FE,,                SJMP $
005B,48 65 6C 6C,TAB,TAB:    DB "Hello Everybody!";
,,,
,,,
,,,;LCD 间接控制方式下的初始化子程序
006B,12 00 9D,INT,INT:    LCALL DELAY ; 调延时子程序
006E,75 80 38,,                MOV P0,#38H ; 工作方式设置指令代码
0071,C2 A1,,                CLR RS      ; RS=0
0073,C2 A2,,                CLR RW      ; R/W=0
0075,7A 03,,                MOV R2,#03  ; 循环量=3
0077,D2 A3,INTT1,INTT1:  SETB E ; E=1
0079,C2 A3,,                CLR E         ; E=0
007B,DA FA,,                DJNZ R2,INTT1
007D,75 80 38,,                MOV P0,#38H ; 设置工作方式*
0080,D2 A3,,                SETB E      ; E=1
0082,C2 A3,,                CLR E       ; E=0
0084,75 50 38,,                MOV COM,#38H ; 设置工作方式
0087,12 00 BD,,                LCALL PR1
008A,75 50 01,,                MOV COM,#01H ; 清屏
008D,12 00 BD,,                LCALL PR1
0090,75 50 06,,                MOV COM,#06H ; 设置输入方式
0093,12 00 BD,,                LCALL PR1
0096,75 50 0E,,                MOV COM,#0EH ; 设置显示方式
0099,12 00 BD,,                LCALL PR1
009C,22,,                RET
,,,
009D,7E 0F,DELAY,DELAY:  MOV R6,#0FH ; 延时子程序
009F,7F 10,DELAY2,DELAY2: MOV R7,#10H
00A1,00,DELAY1,DELAY1: NOP
00A2,DF FD,,                DJNZ R7,DELAY1
00A4,DE F9,,                DJNZ R6,DELAY2
00A6,22,,                RET
,,,
,,,;LCD 间接控制方式的驱动子程序如下
,,,
,,,;1 读BF和AC值
00A7,C0 E0,PR0,PR0:    PUSH ACC
00A9,75 80 FF,,            MOV P0,#0FFH ; P0置位, 准备读
00AC,C2 A1,,            CLR RS       ; RS=0
00AE,D2 A2,,            SETB RW      ; R/W=1
00B0,D2 A3,,            SETB E       ; E=1
00B2,12 00 9D,,            LCALL DELAY
00B5,85 80 50,,            MOV COM,P0   ; 读BF和AC6-4值
00B8,C2 A3,,            CLR E        ; E=0
00BA,D0 E0,,            POP ACC
00BC,22,,            RET
,,,
,,,;2 写指令代码子程序
00BD,C0 E0,PR1,PR1:    PUSH ACC
00BF,C2 A1,,            CLR RS    ; RS=0
00C1,D2 A2,,            SETB RW   ; R/W=1
00C3,75 80 FF,PR11,PR11:   MOV P0,#0FFH; P0置位, 准备读
00C6,D2 A3,,            SETB E    ; E=1
00C8,12 00 9D,,            LCALL DELAY
00CB,00,,            NOP
00CC,E5 80,,            MOV A,P0
00CE,C2 A3,,            CLR E
00D0,20 E7 F0,,            JB ACC.7,PR11;BF=1?
00D3,C2 A2,,            CLR RW    ; R/W=0
00D5,85 50 80,,            MOV P0,COM
00D8,D2 A3,,            SETB E    ; E=1
00DA,C2 A3,,            CLR E     ; E=0; E=0
00DC,D0 E0,,            POP ACC
00DE,22,,            RET
,,,
,,,;3 写显示数据子程序
00DF,C0 E0,PR2,PR2:    PUSH ACC
00E1,C2 A1,,        CLR RS    ; RS=0
00E3,D2 A2,,        SETB RW   ; R/W=1
00E5,75 80 FF,PR21,PR21:   MOV P0,#0FFH
00E8,D2 A3,,        SETB E    ; E=1
00EA,12 00 9D,,        LCALL DELAY
00ED,E5 80,,        MOV A,P0  ; 读BF和AC6-4值
00EF,C2 A3,,        CLR E     ; E=0
00F1,20 E7 F1,,        JB ACC.7,PR21
00F4,D2 A1,,        SETB RS
00F6,C2 A2,,        CLR RW
00F8,85 51 80,,        MOV P0,DAT; 写入数据高4位
00FB,D2 A3,,        SETB E    ; RS=1
00FD,C2 A3,,        CLR E     ; R/W=0
00FF,D0 E0,,        POP ACC
0101,22,,        RET
,,,
,,,;4 读显示数据子程序
0102,C0 E0,PR3,PR3:    PUSH ACC
0104,C2 A1,,        CLR RS    ; RS=0
0106,D2 A2,,        SETB RW   ; R/W=1
0108,75 80 FF,PR31,PR31:   MOV P0,#0FFH ; P0置位, 准备读
010B,D2 A3,,        SETB E    ; E=1
010D,12 00 9D,,        LCALL DELAY
0110,E5 80,,        MOV A,P0  ; 读BF和AC6-4值
0112,C2 A3,,        CLR E     ; E=0
0114,20 E7 F1,,        JB ACC.7,PR31
0117,D2 A1,,        SETB RS   ; E=1
0119,D2 A2,,        SETB RW   ; R/W=1
011B,75 80 FF,,        MOV P0,#0FFH ; 读数据
011E,D2 A3,,        SETB E    ; E=1
0120,85 80 51,,        MOV DAT,P0
0123,C2 A3,,        CLR E     ; E=0
0125,D0 E0,,        POP ACC
0127,22,,        RET
000E,,,    END

⌨️ 快捷键说明

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