?? clock_lcd1.lst
字號:
0176 740C 237 MOV A,#0CH ;開顯示,顯示光標,光標不閃爍
0178 31E4 238 CALL WCOM ;
017A 5108 239 call delay1
017C 7401 240 MOV A,#01H ;清除 LCD 顯示屏
017E 31E4 241 CALL WCOM ;
0180 5108 242 call delay1
0182 22 243 RET
244 ;----------------------------------------------------------
0183 245 ENABLE: ;寫指令
0183 C2A5 246 CLR RS ;RS=L,RW=L,E=高脈沖
0185 C2A6 247 CLR RW ;D0-D7=指令碼
0187 D2A7 248 SETB EN
A51 MACRO ASSEMBLER CLOCK_LCD1 08/17/2006 16:39:47 PAGE 5
0189 5108 249 ACALL DELAY1
018B C2A7 250 CLR EN
018D 22 251 RET
252 ;----------------------------------------------------------
018E 253 LCD_PRINT: ;在LCD的第一行或第二行顯示字符
254
018E B4010C 255 CJNE A,#1,LINE2 ;判斷是否為第一行
0191 7480 256 LINE1: MOV A,#80H ;設置 LCD 的第一行地址
0193 31E4 257 CALL WCOM ;寫入命令
0195 31B3 258 CALL CLR_LINE ;清除該行字符數據
0197 7480 259 MOV A,#80H ;設置 LCD 的第一行地址
0199 31E4 260 CALL WCOM ;寫入命令
019B 800A 261 JMP FILL
019D 74C0 262 LINE2: MOV A,#0C0H ;設置 LCD 的第二行地址
019F 31E4 263 CALL WCOM ;寫入命令
01A1 31B3 264 CALL CLR_LINE ;清除該行字符數據
01A3 74C0 265 MOV A,#0C0H ;設置 LCD 的第二行地址
01A5 31E4 266 CALL WCOM
01A7 E4 267 FILL: CLR A ;填入字符
01A8 93 268 MOVC A,@A+DPTR ;由消息區取出字符
01A9 B40001 269 CJNE A,#0,LC1 ;判斷是否為結束碼
01AC 22 270 RET
01AD 31E9 271 LC1: CALL WDATA ;寫入數據
01AF A3 272 INC DPTR ;指針加1
01B0 80F5 273 JMP FILL ;繼續填入字符
01B2 22 274 RET
275 ;-------------------------------------------------------
01B3 276 CLR_LINE: ;清除該行 LCD 的字符
01B3 7818 277 MOV R0,#24
01B5 7420 278 CL1: MOV A,#' '
01B7 31E9 279 CALL WDATA
01B9 D8FA 280 DJNZ R0,CL1
01BB 22 281 RET
282 ;-------------------------------------------------------
01BC 7FFA 283 DE: MOV R7,#250 ;延時500微秒
01BE DFFE 284 DJNZ R7,$
01C0 22 285 RET
286 ;-------------------------------------------------------
01C1 287 EN1:
01C1 C2A6 288 CLR RW
01C3 D2A7 289 SETB EN ;短脈沖產生啟用信號
01C5 31BC 290 CALL DE
01C7 C2A7 291 CLR EN
01C9 31BC 292 CALL DE
01CB 22 293 RET
294 ;------------------------------------------------------
01CC 295 INIT_LCD: ;8位I/O控制 LCD 接口初始化
01CC 758038 296 MOV P0,#38H ;雙列顯示,字形5*7點陣
01CF 3183 297 call enable
01D1 5108 298 call delay1
01D3 758038 299 MOV P0,#38H ;雙列顯示,字形5*7點陣
01D6 3183 300 call enable
01D8 5108 301 call delay1
01DA 758038 302 MOV P0,#38H ;雙列顯示,字形5*7點陣
01DD 3183 303 call enable
01DF 5108 304 call delay1
01E1 3170 305 CALL INIT_LCD1
01E3 22 306 RET
307 ;-----------------------------------------------------
01E4 308 WCOM: ;以8位控制方式將命令寫至LCD
01E4 F580 309 MOV P0,A ;寫入命令
01E6 3183 310 call enable
01E8 22 311 RET
312 ;-----------------------------------------------------
01E9 313 WDATA: ;以8位控制方式將數據寫至LCD
01E9 F580 314 MOV P0,A ;寫入數據
A51 MACRO ASSEMBLER CLOCK_LCD1 08/17/2006 16:39:47 PAGE 6
01EB D2A5 315 SETB RS ;設置寫入數據
01ED 31C1 316 CALL EN1
01EF 22 317 RET
318 ;-----------------------------------------------------
319 ;第二行顯示字符
320 ;-----------------------------------------------------
01F0 321 LCDP2: ;在LCD的第二行顯示字符
01F0 C0E0 322 PUSH ACC ;
01F2 E5F0 323 MOV A,B ;設置顯示地址
01F4 24C0 324 ADD A,#0C0H ;設置LCD的第二行地址
01F6 31E4 325 CALL WCOM ;寫入命令
01F8 D0E0 326 POP ACC ;由堆棧取出A
01FA 31E9 327 CALL WDATA ;寫入數據
01FC 22 328 RET
329 ;----------------------------------------------------
01FD 330 DELAY: ;延時10MS
01FD 7E32 331 MOV R6,#50
01FF 7F64 332 D1: MOV R7,#100
0201 DFFE 333 DJNZ R7,$
0203 DEFA 334 DJNZ R6,D1
0205 DDF6 335 DJNZ R5,DELAY
0207 22 336 RET
337 ;-----------------------------------------------------
0208 338 DELAY1: ;延時5MS
0208 7E19 339 MOV R6,#25
020A 7F64 340 D2: MOV R7,#100
020C DFFE 341 DJNZ R7,$
020E DEFA 342 DJNZ R6,D2
0210 22 343 RET
344 ;-----------------------------------------------------
0211 345 BZ: ;蜂鳴器
0211 7E64 346 MOV R6,#100
0213 511E 347 B1: CALL DEX
0215 B2B2 348 CPL BEEP
0217 DEFA 349 DJNZ R6,B1
0219 7D0A 350 MOV R5,#10
021B 31FD 351 CALL DELAY
021D 22 352 RET
021E 7FB4 353 DEX: MOV R7,#180
0220 00 354 DE1: NOP
0221 DFFD 355 DJNZ R7,DE1
0223 22 356 RET
357
358 ;-------------------------------------------------
0224 20534543 359 MMENU: DB " SECOND-CLOCK 0 ",0
0228 4F4E442D
022C 434C4F43
0230 4B203020
0234 00
0235 20424547 360 MADJ: DB " BEGIN COUNT 1 ",0
0239 494E2043
023D 4F554E54
0241 20203120
0245 00
0246 20504155 361 MADJ1: DB " PAUSE COUNT 2 ",0
024A 53452043
024E 4F554E54
0252 20203220
0256 00
0257 20424547 362 MADJ2: DB " BEGIN COUNT 3 ",0
025B 494E2043
025F 4F554E54
0263 20203320
0267 00
0268 20504155 363 MADJ3: DB " PAUSE COUNT 4 ",0
026C 53452043
A51 MACRO ASSEMBLER CLOCK_LCD1 08/17/2006 16:39:47 PAGE 7
0270 4F554E54
0274 20203420
0278 00
364 ;-------------------------------------------------
0279 365 MENU: ;LCD 顯示工作菜單消息
0279 900224 366 MOV DPTR,#MMENU
027C 7401 367 MOV A,#1
027E 318E 368 CALL LCD_PRINT
0280 22 369 RET
370 ;-------------------------------------------------
371 END
A51 MACRO ASSEMBLER CLOCK_LCD1 08/17/2006 16:39:47 PAGE 8
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
ACC. . . . . . . . D ADDR 00E0H A
B. . . . . . . . . D ADDR 00F0H A
B1 . . . . . . . . C ADDR 0213H A
BEEP . . . . . . . B ADDR 00B0H.2 A
BZ . . . . . . . . C ADDR 0211H A
CL1. . . . . . . . C ADDR 01B5H A
CLR_LINE . . . . . C ADDR 01B3H A
CONV . . . . . . . C ADDR 0124H A
D1 . . . . . . . . C ADDR 01FFH A
D2 . . . . . . . . C ADDR 020AH A
DE . . . . . . . . C ADDR 01BCH A
DE1. . . . . . . . C ADDR 0220H A
DELAY. . . . . . . C ADDR 01FDH A
DELAY1 . . . . . . C ADDR 0208H A
DEX. . . . . . . . C ADDR 021EH A
EN . . . . . . . . B ADDR 00A0H.7 A
EN1. . . . . . . . C ADDR 01C1H A
ENABLE . . . . . . C ADDR 0183H A
FILL . . . . . . . C ADDR 01A7H A
HOUR . . . . . . . N NUMB 0030H A
IE . . . . . . . . D ADDR 00A8H A
INIT . . . . . . . C ADDR 00ACH A
INIT_LCD . . . . . C ADDR 01CCH A
INIT_LCD1. . . . . C ADDR 0170H A
INIT_TIMER . . . . C ADDR 00C0H A
K1 . . . . . . . . B ADDR 00A0H.0 A
K2 . . . . . . . . B ADDR 00A0H.1 A
K3 . . . . . . . . B ADDR 00A0H.2 A
K4 . . . . . . . . B ADDR 00A0H.3 A
KEY_C. . . . . . . N NUMB 0037H A
KEY_S. . . . . . . N NUMB 0034H A
KEY_V. . . . . . . N NUMB 0035H A
LC1. . . . . . . . C ADDR 01ADH A
LCDP2. . . . . . . C ADDR 01F0H A
LCD_PRINT. . . . . C ADDR 018EH A
LINE1. . . . . . . C ADDR 0191H A
LINE2. . . . . . . C ADDR 019DH A
LMESS1 . . . . . . C ADDR 008AH A
LMESS2 . . . . . . C ADDR 009BH A
LOOP . . . . . . . C ADDR 001DH A
LOOP1. . . . . . . C ADDR 0032H A
LOOP2. . . . . . . C ADDR 0039H A
MADJ . . . . . . . C ADDR 0235H A
MADJ1. . . . . . . C ADDR 0246H A
MADJ2. . . . . . . C ADDR 0257H A
MADJ3. . . . . . . C ADDR 0268H A
MENU . . . . . . . C ADDR 0279H A
MIN. . . . . . . . N NUMB 0031H A
MMENU. . . . . . . C ADDR 0224H A
P0 . . . . . . . . D ADDR 0080H A
P2 . . . . . . . . D ADDR 00A0H A
P3 . . . . . . . . D ADDR 00B0H A
P_KEY. . . . . . . C ADDR 003AH A
P_KEY1 . . . . . . C ADDR 0050H A
P_KEY2 . . . . . . C ADDR 005FH A
P_KEY3 . . . . . . C ADDR 006EH A
P_KEY4 . . . . . . C ADDR 007CH A
RS . . . . . . . . B ADDR 00A0H.5 A
RW . . . . . . . . B ADDR 00A0H.6 A
SEC. . . . . . . . N NUMB 0032H A
A51 MACRO ASSEMBLER CLOCK_LCD1 08/17/2006 16:39:47 PAGE 9
SEC0 . . . . . . . N NUMB 0033H A
SET_LCD. . . . . . C ADDR 0159H A
SHOW_DIG2. . . . . C ADDR 0109H A
SKEY . . . . . . . C ADDR 007DH A
SP . . . . . . . . D ADDR 0081H A
START. . . . . . . C ADDR 000DH A
T0_INT . . . . . . C ADDR 00CDH A
TH0. . . . . . . . D ADDR 008CH A
THIGH. . . . . . . N NUMB 00DCH A
TL0. . . . . . . . D ADDR 008AH A
TLOW . . . . . . . N NUMB 000CH A
TMOD . . . . . . . D ADDR 0089H A
TR0. . . . . . . . B ADDR 0088H.4 A
TT . . . . . . . . C ADDR 0106H A
WCOM . . . . . . . C ADDR 01E4H A
WDATA. . . . . . . C ADDR 01E9H A
X. . . . . . . . . N NUMB 0036H A
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -