📄 lchar.lst
字号:
A51 MACRO ASSEMBLER LCHAR 12/01/2004 13:05:08 PAGE 1
MACRO ASSEMBLER A51 V6.12
OBJECT MODULE PLACED IN D:\我的文档\MYWORK~1\单片机~1\原程序\字符液~1\LCHAR.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE D:\我的文档\MYWORK~1\单片机~1\原程序\字符液~1\LCHAR.ASM DB SB
LOC OBJ LINE SOURCE
1 ;2*16点阵字符液晶显示程序
2 ;Define addressable bit:
0090 3 RS BIT P1.0
0091 4 RW BIT P1.1
0092 5 ENABLE BIT P1.2
0080 6 DATABUS EQU P0; P0 port should be pulled up by 20k resistors
7 ;
0034 8 TIMER0 EQU 34H
0035 9 TIMER1 EQU 35H
0036 10 COUNTER EQU 36H
0040 11 N EQU 40H
12
13 ;
14 ;
0000 15 ORG 0000H
0000 0140 16 AJMP BEGIN
17 ;
18 ;
0040 19 ORG 0040H
0040 00 20 BEGIN: NOP
0041 00 21 NOP
0042 7580FF 22 MOV P0,#0FFH
0045 759003 23 MOV P1,#03H
0048 00 24 NOP
0049 758160 25 MOV SP,#60H
004C 00 26 NOP
004D 12025F 27 LCALL DELAY01
28
29 ;
30 ;
31 ;
0050 7438 32 ASTART: MOV A,#38H; 8-bit,2 lines,5X8 dots
0052 1200F7 33 LCALL AWRCTRL
0055 7406 34 MOV A,#06H; increament by 1, no shift
0057 1200F7 35 LCALL AWRCTRL
005A 120133 36 LCALL WRCGCODE; write CGRAM code
005D 00 37 NOP
005E 740C 38 DOT: MOV A,#0CH; display on, cursor off, blink off
0060 1200F7 39 LCALL AWRCTRL
0063 00 40 NOP
0064 7401 41 MOV A,#01H; clear disram, set DDRAM address 0
0066 1200F7 42 LCALL AWRCTRL
0069 120290 43 LCALL DELAY1S
006C 00 44 NOP
006D 00 45 NOP; write dots and square
006E 7400 46 MOV A,#00H; A is CCODE
0070 75F00B 47 MOV B,#11; write 11 CCODE
0073 7A50 48 DOT1: MOV R2,#80
0075 120117 49 DOT2: LCALL AWRDATA
0078 DAFB 50 DJNZ R2,DOT2
007A 120290 51 LCALL DELAY1S
007D B40702 52 CJNE A,#07H,DOT3
0080 7440 53 MOV A,#40H; 41H= "A" DCODE
0082 04 54 DOT3: INC A
0083 D5F0ED 55 DJNZ B,DOT1
0086 00 56 NOP
0087 00 57 NOP
0088 740F 58 LOOP1: MOV A,#0FH; display on, cursor blink
A51 MACRO ASSEMBLER LCHAR 12/01/2004 13:05:08 PAGE 2
008A 1200F7 59 LCALL AWRCTRL
008D 7401 60 MOV A,#01H; clear disram, set DDRAM address 0
008F 1200F7 61 LCALL AWRCTRL
0092 900154 62 MOV DPTR,#ATAB0; display successively
0095 120126 63 LCALL AWRITE
0098 00 64 NOP
0099 74C0 65 MOV A,#0C0H; line 2 start address 40H
009B 1200F7 66 LCALL AWRCTRL
009E 120126 67 LCALL AWRITE
00A1 120290 68 LCALL DELAY1S
00A4 00 69 NOP
00A5 00 70 NOP
00A6 75F003 71 MOV B,#3; shift 3 times
00A9 7418 72 LOOP4: MOV A,#18H; shift display left
00AB 1200F7 73 LCALL AWRCTRL
00AE 120290 74 LCALL DELAY1S
00B1 D5F0F5 75 DJNZ B,LOOP4
00B4 00 76 NOP
00B5 740C 77 LOOP41: MOV A,#0CH; display on, cursor off
00B7 1200F7 78 LCALL AWRCTRL
00BA 7401 79 MOV A,#01H; clear disram, set DDRAM address 0
00BC 1200F7 80 LCALL AWRCTRL
00BF 9001A6 81 MOV DPTR,#ATAB01
00C2 120126 82 LCALL AWRITE
00C5 00 83 NOP
00C6 74C0 84 MOV A,#0C0H; line 2 start address 40H
00C8 1200F7 85 LCALL AWRCTRL
00CB 120126 86 LCALL AWRITE
00CE 120290 87 LCALL DELAY1S
00D1 120290 88 LCALL DELAY1S
89
00D4 740C 90 MOV A,#0CH; display on, cursor off
00D6 1200F7 91 LCALL AWRCTRL
00D9 7401 92 MOV A,#01H; clear disram, set DDRAM address 0
00DB 1200F7 93 LCALL AWRCTRL
00DE 9001F8 94 MOV DPTR,#PHILCHAR
00E1 120126 95 LCALL AWRITE
00E4 00 96 NOP
00E5 74C0 97 MOV A,#0C0H; line 2 start address 40H
00E7 1200F7 98 LCALL AWRCTRL
00EA 120126 99 LCALL AWRITE
00ED 120290 100 LCALL DELAY1S
00F0 120290 101 LCALL DELAY1S
102
00F3 02005E 103 LJMP DOT
00F6 00 104 NOP;---------
00F7 12013F 105 AWRCTRL: LCALL ABUSY
00FA C290 106 AWRCTRL1: CLR RS
00FC C291 107 CLR RW
00FE F580 108 MOV DATABUS,A
0100 D292 109 SETB ENABLE
0102 00 110 NOP
0103 C292 111 CLR ENABLE
0105 00 112 NOP
0106 22 113 RET;---------
0107 00 114 ARDCTRL: NOP
0108 7580FF 115 MOV DATABUS,#0FFH
010B C290 116 CLR RS; RS=0
010D D291 117 SETB RW; R/W=1
010F D292 118 SETB ENABLE; eanble
0111 00 119 NOP
0112 E580 120 MOV A,DATABUS
0114 C292 121 CLR ENABLE
0116 22 122 RET;---------
0117 12013F 123 AWRDATA: LCALL ABUSY
011A D290 124 SETB RS
A51 MACRO ASSEMBLER LCHAR 12/01/2004 13:05:08 PAGE 3
011C C291 125 CLR RW
011E F580 126 MOV DATABUS,A
0120 D292 127 SETB ENABLE
0122 00 128 NOP
0123 C292 129 CLR ENABLE
0125 22 130 RET;--------
0126 E4 131 AWRITE: CLR A
0127 93 132 MOVC A,@A+DPTR
0128 A3 133 INC DPTR
0129 B4FF01 134 CJNE A,#0FFH,AWRITE1
012C 22 135 RET
012D 120117 136 AWRITE1: LCALL AWRDATA
0130 80F4 137 SJMP AWRITE
0132 00 138 NOP;---------
0133 7440 139 WRCGCODE: MOV A,#40H; set CGRAM address CCODE=00H
0135 1200F7 140 LCALL AWRCTRL
0138 90020A 141 MOV DPTR,#CODETAB1; write CGCODE
013B 120126 142 LCALL AWRITE
013E 22 143 RET;---------
013F C0E0 144 ABUSY: PUSH ACC; check busy flag
0141 7580FF 145 MOV DATABUS,#0FFH
0144 C290 146 CLR RS; RS=0
0146 D291 147 SETB RW; R/W=1
0148 D292 148 SETB ENABLE; eanble
014A E580 149 ABUSY1: MOV A,DATABUS
014C 20E7FB 150 JB ACC.7,ABUSY1
014F C292 151 CLR ENABLE
0151 D0E0 152 POP ACC
0153 22 153 RET;---------
0154 41424344 154 ATAB0: DB 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'; for line 1
0158 45464748
015C 494A4B4C
0160 4D4E4F50
0164 51525354
0168 55565758
016C 595A
016E 30313233 155 DB '0123456789'
0172 34353637
0176 3839
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -