📄 lcd.lst
字号:
A51 MACRO ASSEMBLER LCD 10/09/2007 17:14:12 PAGE 1
MACRO ASSEMBLER A51 V7.00a
OBJECT MODULE PLACED IN LCD.OBJ
ASSEMBLER INVOKED BY: D:\学习\Proteus_6_Professiona\keil中文版本\Keil\C51\BIN\A51.EXE LCD.ASM SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1 ;******************
00B0 2 RS EQU P3.0
00B1 3 RW EQU P3.1
00B2 4 E EQU P3.2
00A0 5 DATE EQU P2
00A7 6 BF EQU P2.7
0090 7 KEY EQU P1
0031 8 COUNT EQU 31H
0032 9 SCAN EQU 32H
0033 10 SCAN1 EQU 33H
0034 11 KEYCOUNT EQU 34H
0035 12 SHOWWHAT EQU 35H
0036 13 KEYF EQU 36H
14 ;*****************
0000 15 ORG 0000H
0000 0130 16 AJMP START
0030 17 ORG 0030H
0030 18 START:
19 ;*************************
20 ;初始化LCD
21 ;*********************
0030 75815F 22 MOV SP,#5FH
0033 75A001 23 MOV DATE,#00000001B ;清屏
0036 11CE 24 CALL WRITES
0038 75A038 25 MOV DATE,#00111000B ;8位2行5x7点阵
003B 11CE 26 ACALL WRITES
003D 75A00F 27 MOV DATE,#00001111B ;显示器开、光标开、闪烁开
0040 11CE 28 ACALL WRITES
0042 75A006 29 MOV DATE,#00000110B ;文字不动,光标自动右移
0045 11CE 30 ACALL WRITES
31 ;*************************
32 ;键盘扫描初始化
33 ;****************
0047 34 MAIN:
0047 7590F0 35 MOV KEY,#0F0H
004A 7530FE 36 MOV 30H,#0FEH
004D 753100 37 MOV COUNT ,#0
0050 753400 38 MOV KEYCOUNT,#0
0053 753600 39 MOV KEYF,#0
40 ;******************
0056 1172 41 CALL KEYSCAN
0058 E536 42 MOV A,KEYF
005A B401EA 43 CJNE A,#1,MAIN
005D 753600 44 MOV KEYF,#0
0060 75A000 45 MOV DATE,#00H
0063 11CE 46 ACALL WRITES
0065 9000FD 47 MOV DPTR,#TAB
0068 E535 48 MOV A,SHOWWHAT
006A 93 49 MOVC A,@A+DPTR
006B F5A0 50 MOV DATE,A
006D 11D9 51 ACALL READDATE
006F 020047 52 LJMP MAIN
53 ;*********************
54 ;键盘扫描程序
55 ;*********************
0072 56 KEYSCAN:
0072 E590 57 MOV A,KEY
0074 54F0 58 ANL A,#0F0H
A51 MACRO ASSEMBLER LCD 10/09/2007 17:14:12 PAGE 2
0076 B4F003 59 CJNE A,#0F0H,KEYWHAT
0079 020072 60 LJMP KEYSCAN
007C 61 KEYWHAT:
007C 11F4 62 CALL DELAY
007E E590 63 MOV A,KEY
0080 54F0 64 ANL A,#0F0H
0082 B4F003 65 CJNE A,#0F0H,KEYWHAT1
0085 020072 66 LJMP KEYSCAN
0088 67 KEYWHAT1:
0088 853090 68 MOV KEY,30H
008B E590 69 MOV A,KEY
008D 54F0 70 ANL A,#0F0H
008F B4F014 71 CJNE A,#0F0H,KEYWHAT2
0092 E530 72 MOV A,30H
0094 23 73 RL A
0095 F530 74 MOV 30H,A
0097 0531 75 INC COUNT
0099 E531 76 MOV A,COUNT
009B B404EA 77 CJNE A,#4,KEYWHAT1
009E 753100 78 MOV COUNT,#0
00A1 7530FE 79 MOV 30H,#0FEH
00A4 0172 80 AJMP KEYSCAN
00A6 81 KEYWHAT2:
00A6 C3 82 CLR C
00A7 C4 83 SWAP A
00A8 F532 84 MOV SCAN,A
00AA E532 85 K1:MOV A,SCAN
00AC 13 86 RRC A
00AD F532 87 MOV SCAN,A
00AF 500C 88 JNC K
00B1 0534 89 INC KEYCOUNT
00B3 AB34 90 MOV R3,KEYCOUNT
00B5 BB05F2 91 CJNE R3,#5,K1
00B8 753400 92 MOV KEYCOUNT,#0
00BB 01AA 93 AJMP K1
00BD 94 k:
00BD 853432 95 MOV SCAN,KEYCOUNT
00C0 E531 96 MOV A,COUNT
00C2 75F004 97 MOV B,#4
00C5 A4 98 MUL AB
00C6 2532 99 ADD A,SCAN
00C8 F535 100 MOV SHOWWHAT,A
00CA 753601 101 MOV KEYF,#1
00CD 22 102 RET
103 ;*****************
104 ;写控制命令子程序
105 ;**************
00CE 106 WRITES:
00CE C2B0 107 CLR RS
00D0 C2B1 108 CLR RW
00D2 C2B2 109 CLR E
00D4 11E4 110 CALL FAVOUR;判断是否忙
00D6 D2B2 111 SETB E
00D8 22 112 RET
113 ;*****************
114 ;写数据子程序
115 ;**************
00D9 116 READDATE:
00D9 D2B0 117 SETB RS
00DB C2B1 118 CLR RW
00DD C2B2 119 CLR E
00DF 11E4 120 ACALL FAVOUR
00E1 D2B2 121 SETB E
00E3 22 122 RET
123 ;***************
124 ;判断是否忙子程序
A51 MACRO ASSEMBLER LCD 10/09/2007 17:14:12 PAGE 3
125 ;******************
00E4 126 FAVOUR:
00E4 75A0FF 127 MOV DATE,#0FFH
00E7 C2B0 128 CLR RS
00E9 D2B1 129 SETB RW
00EB C2B2 130 CLR E
00ED 00 131 NOP
00EE D2B2 132 SETB E
00F0 20A7F1 133 JB BF,FAVOUR
00F3 22 134 RET
135 ;***************
00F4 136 DELAY:
00F4 78C8 137 MOV R0,#200
00F6 79FA 138 D1:MOV R1,#250
00F8 D9FE 139 DJNZ R1,$
00FA D8FA 140 DJNZ R0,D1
00FC 22 141 RET
142 ;*****************
00FD 143 TAB:
00FD 30313233 144 DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H,3AH,3BH,3CH,3DH
0101 34353637
0105 38393A3B
0109 3C3D
145 END
A51 MACRO ASSEMBLER LCD 10/09/2007 17:14:12 PAGE 4
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
B. . . . . . . . . D ADDR 00F0H A
BF . . . . . . . . B ADDR 00A0H.7 A
COUNT. . . . . . . N NUMB 0031H A
D1 . . . . . . . . C ADDR 00F6H A
DATE . . . . . . . D ADDR 00A0H A
DELAY. . . . . . . C ADDR 00F4H A
E. . . . . . . . . B ADDR 00B0H.2 A
FAVOUR . . . . . . C ADDR 00E4H A
K. . . . . . . . . C ADDR 00BDH A
K1 . . . . . . . . C ADDR 00AAH A
KEY. . . . . . . . D ADDR 0090H A
KEYCOUNT . . . . . N NUMB 0034H A
KEYF . . . . . . . N NUMB 0036H A
KEYSCAN. . . . . . C ADDR 0072H A
KEYWHAT. . . . . . C ADDR 007CH A
KEYWHAT1 . . . . . C ADDR 0088H A
KEYWHAT2 . . . . . C ADDR 00A6H A
MAIN . . . . . . . C ADDR 0047H A
P1 . . . . . . . . D ADDR 0090H A
P2 . . . . . . . . D ADDR 00A0H A
P3 . . . . . . . . D ADDR 00B0H A
READDATE . . . . . C ADDR 00D9H A
RS . . . . . . . . B ADDR 00B0H.0 A
RW . . . . . . . . B ADDR 00B0H.1 A
SCAN . . . . . . . N NUMB 0032H A
SCAN1. . . . . . . N NUMB 0033H A
SHOWWHAT . . . . . N NUMB 0035H A
SP . . . . . . . . D ADDR 0081H A
START. . . . . . . C ADDR 0030H A
TAB. . . . . . . . C ADDR 00FDH A
WRITES . . . . . . C ADDR 00CEH A
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -