?? wl009.lst
字號:
A51 MACRO ASSEMBLER WL009 04/05/2005 09:56:15 PAGE 1
MACRO ASSEMBLER A51 V7.10
OBJECT MODULE PLACED IN wl009.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE wl009.asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1 ;********************************************************************************
2 ;* 標題: 偉納電子ME300B單片機開發系統演示程序 - 1602LCD顯示演示程序 *
3 ;* 文件: wl009.asm *
4 ;* 日期: 2005-1-20 *
5 ;* 版本: 1.0 *
6 ;* 作者: 偉納電子 - Freeman *
7 ;* 郵箱: freeman@willar.com *
8 ;* 網站: http://www.willar.com *
9 ;********************************************************************************
10 ;* 描述: *
11 ;* 1602字符型LCD顯示演示程序 *
12 ;* 在第一行顯示 welcome *
13 ;* 在第一行顯示 www.willar.com *
14 ;* *
15 ;* *
16 ;********************************************************************************
17 ;* 【版權】 Copyright(C)偉納電子 www.willar.com All Rights Reserved *
18 ;* 【聲明】 此程序僅用于學習與參考,引用請注明版權和作者信息! *
19 ;********************************************************************************
20
21
22 ; 端口定義
00A0 23 RS EQU P2.0
00A1 24 RW EQU P2.1
00A2 25 EP EQU P2.2
26
0000 27 ORG 0000H
0000 020003 28 LJMP MAIN
29
30
0003 31 MAIN:
0003 120060 32 LCALL LCD_INIT ; 初始化LCD
0006 740F 33 MOV A,#15
0008 1200EB 34 LCALL DELAY_MS ;
35
000B 36 MAIN_LOOP:
37 ; 在第一行顯示字符串"welcome!"
000B 7404 38 MOV A,#4
000D 12009C 39 LCALL SET_LCD_POS ; 設置LCD光標到第一行的第5個字符
40
0010 900104 41 MOV DPTR,#TAB_WELCOME ; "welcome!"字串表格地址
0013 120050 42 LCALL DISPLAY_STRING ; 顯示字符串
43 ; 在第二行顯示字符串"www.willar.com"
0016 7441 44 MOV A,#41H ;
0018 12009C 45 LCALL SET_LCD_POS ; 設置LCD光標到第二行第二個字符
46
001B 9000F5 47 MOV DPTR,#TAB_WILLAR
001E 120050 48 LCALL DISPLAY_STRING
49
50 ; 閃爍顯示內容
0021 74C8 51 MOV A,#200 ;
0023 1200EB 52 LCALL DELAY_MS ;
53
0026 120086 54 LCALL LCD_TURN_OFF
0029 74C8 55 MOV A,#200 ;
002B 1200EB 56 LCALL DELAY_MS ;
57
002E 12007B 58 LCALL LCD_TURN_ON
A51 MACRO ASSEMBLER WL009 04/05/2005 09:56:15 PAGE 2
59
0031 74C8 60 MOV A,#200 ;
0033 1200EB 61 LCALL DELAY_MS ;
62
0036 120086 63 LCALL LCD_TURN_OFF
64
0039 74C8 65 MOV A,#200 ;
003B 1200EB 66 LCALL DELAY_MS ;
67
003E 12007B 68 LCALL LCD_TURN_ON
69
0041 74C8 70 MOV A,#200 ;
0043 1200EB 71 LCALL DELAY_MS ;
72 ;清屏
0046 120091 73 LCALL LCD_CLEAR
0049 7401 74 MOV A,#1
004B 1200EB 75 LCALL DELAY_MS
76 ; 重新顯示
004E 80BB 77 JMP MAIN_LOOP
78
79 ;顯示字符串函數
80 ;傳入參數:DPTR(字符串表格地址)
81 ;返回值:無
0050 82 DISPLAY_STRING:
0050 E4 83 CLR A
0051 93 84 MOVC A,@A+DPTR ;
0052 600B 85 JZ END_DISPLAY_STRING ; 如果遇到00H表示表格結束
0054 1200BC 86 LCALL LCD_WRITE_DATA ; 寫數據到LCD
0057 A3 87 INC DPTR ; 指向表格的下一字符
0058 74C8 88 MOV A, #200 ;
005A 1200EB 89 LCALL DELAY_MS ;
005D 80F1 90 SJMP DISPLAY_STRING ; 循環直到字符串結束
005F 91 END_DISPLAY_STRING:
005F 22 92 RET
93
94
95 ; 初始化LCD
0060 96 LCD_INIT:
97
98 ; 設置顯示格式---
0060 7438 99 MOV A,#38H ; 38H --- 16*2行顯示,5*7點陣,8位數據接口
0062 1200A2 100 LCALL LCD_WRITE_COMMAND
0065 7401 101 MOV A,#1
0067 1200EB 102 LCALL DELAY_MS
103 ;開顯示
006A 12007B 104 LCALL LCD_TURN_ON
105 ;讀寫后指針加1
006D 7406 106 MOV A,#06H ; 06H --- 讀寫后指針加1
006F 1200A2 107 LCALL LCD_WRITE_COMMAND
0072 7401 108 MOV A,#1
0074 1200EB 109 LCALL DELAY_MS
110 ; 清除LCD屏幕
0077 120091 111 LCALL LCD_CLEAR
007A 22 112 RET
113
114
115 ;開顯示
007B 116 LCD_TURN_ON:
007B 740C 117 MOV A,#0CH ; 0CH --- 開顯示,無光標
007D 1200A2 118 LCALL LCD_WRITE_COMMAND
0080 7401 119 MOV A,#1
0082 1200EB 120 LCALL DELAY_MS
0085 22 121 RET
122
123 ; 關顯示
0086 124 LCD_TURN_OFF:
A51 MACRO ASSEMBLER WL009 04/05/2005 09:56:15 PAGE 3
0086 7408 125 MOV A,#08H ; 08H --- 關顯示
0088 1200A2 126 LCALL LCD_WRITE_COMMAND
008B 7401 127 MOV A,#1
008D 1200EB 128 LCALL DELAY_MS
0090 22 129 RET
130
131 ; 清除LCD屏幕
0091 132 LCD_CLEAR:
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -