📄 pcf8591-da-lcd1602-asm.lst
字号:
A51 MACRO ASSEMBLER PCF8591_DA_LCD1602_ASM 12/20/2006 22:57:40 PAGE 1
MACRO ASSEMBLER A51 V7.08a
OBJECT MODULE PLACED IN PCF8591-DA-LCD1602-ASM.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE PCF8591-DA-LCD1602-ASM.asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1
2 ;*******************************************************************
3 ;* *
4 ;* ME500单片机开发系统演示程序 - PCF8591 D/A CONVERTER *
5 ;* *
6 ;* LCD1602 显示 *
7 ;* *
8 ;* K2-D/A CHOOSE *
9 ;* K3-ENTER K4-EXIT *
10 ;* *
11 ;* 版本: V1.0 (2006/11/20) *
12 ;* 作者: gguoqing (Email: gguoqing@willar.com) *
13 ;* 网站: www.willar.com(伟纳电子) www.mcusj.com(伟纳单片机世界) *
14 ;* 时间: 2006/07/01 *
15 ;* *
16 ;*【版权】Copyright(C)伟纳电子 www.willar.com All Rights Reserved *
17 ;*【声明】此程序仅用于学习与参考,引用请注明版权和作者信息! *
18 ;* *
19 ;*******************************************************************
20
00B7 21 BEEP EQU P3.7 ;蜂鸣器
0094 22 K1 EQU P1.4 ;K1键
0095 23 K2 EQU P1.5 ;K2键
0096 24 K3 EQU P1.6 ;K3键
0097 25 K4 EQU P1.7 ;K4键
26
0090 27 SCL EQU P1.0 ;PCF8591时钟线
0093 28 SDA EQU P1.3 ;PCF8591数据线
29
00A0 30 LCD_RS EQU P2.0 ;LCD 数据/命令选择端
00A1 31 LCD_RW EQU P2.1 ;LCD 读/写选择端
00A2 32 LCD_EN EQU P2.2 ;LCD 使能信号
006F 33 LCD_X EQU 6FH ;LCD 地址变量
0080 34 LCD_DATA EQU P0 ;LCD 数据端口
35
0040 36 DACOM EQU 40H ;D/A的控制命令
37 ;==========================================================
38
0000 39 ORG 0000H
0000 802E 40 JMP MAIN
0030 41 ORG 0030H
42
43 ;==========================================================
0030 44 MAIN:
0030 758170 45 MOV SP,#70H
0033 7580FF 46 MOV P0,#0FFH
0036 75A0FF 47 MOV P2,#0FFH
0039 1200F8 48 LCALL SET_LCD1 ;显示启动画面
003C 7D32 49 MOV R5,#50
003E 50 START:
003E 120292 51 LCALL DELAY ;延时5s
0041 DDFB 52 DJNZ R5,START
0043 53 START1:
0043 12012F 54 LCALL SET_LCD2 ;显示工作画面
0046 55 START2:
0046 2095FD 56 JB K2,START2
0049 120276 57 LCALL BEEP_BL
004C 3095FD 58 JNB K2,$
A51 MACRO ASSEMBLER PCF8591_DA_LCD1602_ASM 12/20/2006 22:57:40 PAGE 2
004F 120054 59 LCALL DA_OUT
0052 80EF 60 JMP START1
61
62 ;==========================================================
63
64 ;D/A 转换子程序
65
66 ;==========================================================
0054 67 DA_OUT:
0054 120166 68 LCALL SET_LCD4
0057 C201 69 CLR 20H.1 ;K4健(退出)有效标志
70 ;----------------------------------------------------------
71 ;正弦波输出
72 ;----------------------------------------------------------
0059 73 SINE1:
0059 309510 74 JNB K2,SQUARE0
005C 2096FA 75 JB K3,SINE1
005F 120276 76 LCALL BEEP_BL
0062 77 SINE2:
0062 200104 78 JB 20H.1,SINE_END
0065 51C1 79 ACALL SINE
0067 80F9 80 JMP SINE2
0069 81 SINE_END:
0069 C201 82 CLR 20H.1
006B 22 83 RET
84 ;----------------------------------------------------------
85 ;方波输出
86 ;----------------------------------------------------------
006C 87 SQUARE0:
006C 90019D 88 MOV DPTR,#INFOA ;指针指到显示信息9
006F 7402 89 MOV A,#2 ;显示在第二行
0071 510F 90 CALL LCD_SHOW
0073 120276 91 LCALL BEEP_BL
0076 3095FD 92 JNB K2,$
0079 93 SQUARE1:
0079 309511 94 JNB K2,TRIANGLE0
007C 2096FA 95 JB K3,SQUARE1
007F 120276 96 LCALL BEEP_BL
0082 97 SQUARE2:
0082 200105 98 JB 20H.1,SQUARE_END
0085 1203DF 99 LCALL SQUARE
0088 80F8 100 JMP SQUARE2
008A 101 SQUARE_END:
008A C201 102 CLR 20H.1
008C 22 103 RET
104 ;----------------------------------------------------------
105 ;三角波输出
106 ;----------------------------------------------------------
008D 107 TRIANGLE0:
008D 9001AE 108 MOV DPTR,#INFOB ;指针指到显示信息A
0090 7402 109 MOV A,#2 ;显示在第二行
0092 510F 110 CALL LCD_SHOW
0094 120276 111 LCALL BEEP_BL
0097 3095FD 112 JNB K2,$
009A 113 TRIANGLE1:
009A 309511 114 JNB K2,ECHELON0
009D 2096FA 115 JB K3,TRIANGLE1
00A0 120276 116 LCALL BEEP_BL
00A3 117 TRIANGLE2:
00A3 200105 118 JB 20H.1,TRIANGLE_END
00A6 120400 119 LCALL TRIANGLE
00A9 80F8 120 JMP TRIANGLE2
00AB 121 TRIANGLE_END:
00AB C201 122 CLR 20H.1
00AD 22 123 RET
124 ;----------------------------------------------------------
A51 MACRO ASSEMBLER PCF8591_DA_LCD1602_ASM 12/20/2006 22:57:40 PAGE 3
125 ;梯形波输出
126 ;----------------------------------------------------------
00AE 127 ECHELON0:
00AE 9001BF 128 MOV DPTR,#INFOC ;指针指到显示信息B
00B1 7402 129 MOV A,#2 ;显示在第二行
00B3 510F 130 CALL LCD_SHOW
00B5 120276 131 LCALL BEEP_BL
00B8 3095FD 132 JNB K2,$
00BB 133 ECHELON1:
00BB 309511 134 JNB K2,SAWTOOTH0
00BE 2096FA 135 JB K3,ECHELON1
00C1 120276 136 LCALL BEEP_BL
00C4 137 ECHELON2:
00C4 200105 138 JB 20H.1,ECHELON_END
00C7 12042E 139 LCALL ECHELON
00CA 80F8 140 JMP ECHELON2
00CC 141 ECHELON_END:
00CC C201 142 CLR 20H.1
00CE 22 143 RET
144 ;----------------------------------------------------------
145 ;锯齿波输出
146 ;----------------------------------------------------------
00CF 147 SAWTOOTH0:
00CF 9001D0 148 MOV DPTR,#INFOD ;指针指到显示信息C
00D2 7402 149 MOV A,#2 ;显示在第二行
00D4 510F 150 CALL LCD_SHOW
00D6 120276 151 LCALL BEEP_BL
00D9 3095FD 152 JNB K2,$
00DC 153 SAWTOOTH1:
00DC 309514 154 JNB K2,DA_OUT_END
00DF 2096FA 155 JB K3,SAWTOOTH1
00E2 120276 156 LCALL BEEP_BL
00E5 3095FD 157 JNB K2,$
00E8 158 SAWTOOTH2:
00E8 200105 159 JB 20H.1,SAW_END
00EB 120465 160 LCALL SAWTOOTH
00EE 80F8 161 JMP SAWTOOTH2
00F0 162 SAW_END:
00F0 C201 163 CLR 20H.1
00F2 22 164 RET
00F3 165 DA_OUT_END:
00F3 120276 166 LCALL BEEP_BL
00F6 0154 167 JMP DA_OUT
168
169 ;==========================================================
170
171 ; LCD 初始化显示子程序
172
173 ;==========================================================
174
00F8 175 SET_LCD1:
00F8 C2A2 176 CLR LCD_EN
00FA 31E1 177 CALL INIT_LCD ;初始化 LCD
00FC 5106 178 CALL DELAY1
00FE 90010D 179 MOV DPTR,#INFO1 ;指针指到显示信息1
0101 7401 180 MOV A,#1 ;显示在第一行
0103 510F 181 CALL LCD_SHOW
0105 90011E 182 MOV DPTR,#INFO2 ;指针指到显示信息2
0108 7402 183 MOV A,#2 ;显示在第二行
010A 510F 184 CALL LCD_SHOW
010C 22 185 RET
186
010D 20202020 187 INFO1: DB " PCF-8591 ",0 ;LCD 第一行显示信息
0111 5043462D
0115 38353931
0119 20202020
A51 MACRO ASSEMBLER PCF8591_DA_LCD1602_ASM 12/20/2006 22:57:40 PAGE 4
011D 00
188
011E 20204441 189 INFO2: DB " DA CONVERTER ",0 ;LCD 第二行显示信息
0122 20434F4E
0126 56455254
012A 45522020
012E 00
190
191 ;==========================================================
012F 192 SET_LCD2:
012F C2A2 193 CLR LCD_EN
0131 31E1 194 CALL INIT_LCD ;初始化 LCD
0133 5106 195 CALL DELAY1
0135 900144 196 MOV DPTR,#INFO3 ;指针指到显示信息1
0138 7401 197 MOV A,#1 ;显示在第一行
013A 510F 198 CALL LCD_SHOW
013C 900155 199 MOV DPTR,#INFO4 ;指针指到显示信息2
013F 7402 200 MOV A,#2 ;显示在第二行
0141 510F 201 CALL LCD_SHOW
0143 22 202 RET
203
0144 204B323A 204 INFO3: DB " K2: D/A CHOOSE ",0 ;LCD 第一行显示信息
0148 20442F41
014C 2043484F
0150 4F534520
0154 00
205
0155 4B333A45 206 INFO4: DB "K3:ENTER K4:EXIT",0 ;LCD 第二行显示信息
0159 4E544552
015D 204B343A
0161 45584954
0165 00
207
208 ;==========================================================
0166 209 SET_LCD4:
0166 C2A2 210 CLR LCD_EN
0168 31E1 211 CALL INIT_LCD ;初始化 LCD
016A 5106 212 CALL DELAY1
016C 90017B 213 MOV DPTR,#INFO7 ;指针指到显示信息1
016F 7401 214 MOV A,#1 ;显示在第一行
0171 510F 215 CALL LCD_SHOW
0173 90018C 216 MOV DPTR,#INFO9 ;指针指到显示信息2
0176 7402 217 MOV A,#2 ;显示在第二行
0178 510F 218 CALL LCD_SHOW
017A 22 219 RET
220
017B 20442F41 221 INFO7: DB " D/A CONVERTER ",0 ;LCD 第一行显示信息
017F 2020434F
0183 4E564552
0187 54455220
018B 00
222
018C 20202053 223 INFO9: DB " SINE WAVE ",0 ;LCD 第二行显示信息 正弦波
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -