?? ex3-8.lst
字號(hào):
A51 MACRO ASSEMBLER EX3_8 06/23/2007 17:11:40 PAGE 1
MACRO ASSEMBLER A51 V7.09
OBJECT MODULE PLACED IN ex3-8.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE ex3-8.asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1 ;--------------程序信息-----------------
2 ;文件名 : ex3-8.asm
3 ;版本 : 1.0
4 ;作者 :
5 ;修改時(shí)間 :
6
7 ;--------------程序說明------------------
8 ;CHAP 3.8 簡單液晶顯示實(shí)例
9
10 ;-----------常量和變量聲明---------------
11
00B0 12 RS EQU P3.0; 控制位宏定義,數(shù)據(jù)地址選擇位
00B1 13 RW EQU P3.1; 數(shù)據(jù)命令選擇位
00B2 14 E EQU P3.2; LCD使能端
0090 15 LCDP EQU P1; LCD數(shù)據(jù)端口
0097 16 BF EQU LCDP.7; LCD忙標(biāo)志位
0000 17 LINEF BIT 00H; 換行標(biāo)志位
18
19
20 ;--------------預(yù)定義--------------------
21
0000 22 ORG 0000H
0000 020003 23 LJMP START
24
25 ;------------中斷入口地址分配------------
26 ;ORG 0003H
27 ;LJMP INT0PRG
28 ;ORG 000BH
29 ;LJMP INT1PRG
30 ;ORG 0013H;
31 ;LJMP
32 ;ORG 0030H
33
0003 34 START:
0003 1126 35 INIT: CALL LCDINIT;LCD INIT 液晶顯示器初始化
36 ;--------------初始化子程序--------------
0005 856081 37 MOV SP,60H;
38 ;--------------主程序--------------------
0008 39 MAIN:
0008 759001 40 MOV LCDP,#01H; 開屏幕
000B 1152 41 CALL WINSTR;
000D 7800 42 MOV R0,#00H; 初始化寄存器
000F 7900 43 MOV R1,#00H;
0011 8890 44 MAIN1: MOV LCDP,R0; 寫入數(shù)據(jù)
0013 115D 45 CALL WDATA; 時(shí)序使能
0015 11BB 46 CALL DELAY600MS; 顯示延時(shí)
47 ;CALL NEXTC; 顯示下一個(gè)字符
0017 09 48 INC R1;
0018 08 49 INC R0;
0019 B90F04 50 CJNE R1,#0FH,MAIN2; 判斷是否行尾
001C 7900 51 MOV R1,#00H;
001E 1177 52 CALL CHGLINE; 換行
0020 53 MAIN2:
0020 B800EE 54 CJNE R0,#00H,MAIN1; 判斷是否LCD結(jié)尾
55
56
0023 020008 57 LJMP MAIN
58
A51 MACRO ASSEMBLER EX3_8 06/23/2007 17:11:40 PAGE 2
59
60 ;----------------子程序------------------
61 ;---------------------------------
62 ; LCM顯示初始化程序
63 ;---------------------------------
0026 64 LCDINIT:
0026 759001 65 MOV LCDP,#01H; 液晶開顯示
0029 1152 66 CALL WINSTR;
002B 759006 67 MOV LCDP,#06H; 清屏
002E 1152 68 CALL WINSTR;
0030 759038 69 MOV LCDP,#38H; 設(shè)置行地址
0033 1152 70 CALL WINSTR;
0035 759080 71 MOV LCDP,#80H;
0038 1152 72 CALL WINSTR;
003A 75900F 73 MOV LCDP,#0FH; 設(shè)置光標(biāo)格式
003D 1152 74 CALL WINSTR;
003F D200 75 SETB LINEF;
0041 22 76 RET;
77
78
79
80 ;---------------------------------
81 ; 命令數(shù)據(jù)寫入時(shí)序等子程序部分
82 ;---------------------------------
0042 83 ISBF: ;LCD內(nèi)部DDRAM讀寫忙判斷子程序
0042 C2B0 84 ISBF1:CLR RS; 設(shè)定RS,RW讀寫和數(shù)據(jù)命令方式
0044 D2B1 85 SETB RW;
0046 C2B2 86 CLR E;
0048 11B2 87 CALL DELAYLCD; 時(shí)序等待延時(shí)
004A D2B2 88 SETB E; LCD使能
004C 2097F3 89 JB BF,ISBF1; 忙標(biāo)志位判斷
004F C2B1 90 CLR RW;
0051 22 91 RET;
92 ;寫入命令時(shí)序子程序
0052 C2B0 93 WINSTR:CLR RS ;設(shè)定RS,RW讀寫和數(shù)據(jù)命令方式
0054 C2B1 94 CLR RW
0056 C2B2 95 CLR E
0058 11B2 96 ACALL DELAYLCD ;時(shí)序等待延時(shí)
005A D2B2 97 SETB E ;LCD使能
005C 22 98 RET
99
005D C2B1 100 WDATA:CLR RW ;寫入數(shù)據(jù)令時(shí)序子程序
005F D2B0 101 SETB RS; 設(shè)定RS,RW讀寫和數(shù)據(jù)命令方式
0061 C2B2 102 CLR E;
0063 11B2 103 CALL DELAYLCD; 時(shí)序等待延時(shí)
0065 D2B2 104 SETB E; LCD使能
0067 C2B0 105 CLR RS;
0069 22 106 RET;
107
006A C2B0 108 RADDR: CLR RS; 讀數(shù)據(jù)時(shí)序子程序
006C D2B1 109 SETB RW; 設(shè)定RS,RW讀寫和數(shù)據(jù)命令方式
006E C2B2 110 CLR E;
0070 11B2 111 CALL DELAYLCD; 時(shí)序延時(shí)
0072 D2B2 112 SETB E; LCD使能
0074 C2B1 113 CLR RW;
0076 22 114 RET;
115
0077 200002 116 CHGLINE: JB LINEF,CHG1; LCD行末換行子程序
007A 8009 117 JMP CHG2; 如果是第二行末尾,則跳到第一行首,否則,跳到第一行
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -