?? lcd12232.s
字號(hào):
.module LCD12232.C
.area data(ram, con, rel)
_b1::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile F:\新建文件夾\LCD12232APP\LCD12232.C
.dbsym e b1 _b1 c
_pianyi::
.blkb 1
.area idata
.byte 65
.area data(ram, con, rel)
.dbfile F:\新建文件夾\LCD12232APP\LCD12232.C
.dbsym e pianyi _pianyi c
_sz0::
.blkb 1
.area idata
.byte 65
.area data(ram, con, rel)
.dbfile F:\新建文件夾\LCD12232APP\LCD12232.C
.dbsym e sz0 _sz0 c
_sz1::
.blkb 1
.area idata
.byte 65
.area data(ram, con, rel)
.dbfile F:\新建文件夾\LCD12232APP\LCD12232.C
.dbsym e sz1 _sz1 c
_sz2::
.blkb 1
.area idata
.byte 65
.area data(ram, con, rel)
.dbfile F:\新建文件夾\LCD12232APP\LCD12232.C
.dbsym e sz2 _sz2 c
_sz3::
.blkb 1
.area idata
.byte 65
.area data(ram, con, rel)
.dbfile F:\新建文件夾\LCD12232APP\LCD12232.C
.dbsym e sz3 _sz3 c
_sz4::
.blkb 1
.area idata
.byte 65
.area data(ram, con, rel)
.dbfile F:\新建文件夾\LCD12232APP\LCD12232.C
.dbsym e sz4 _sz4 c
_sz5::
.blkb 1
.area idata
.byte 65
.area data(ram, con, rel)
.dbfile F:\新建文件夾\LCD12232APP\LCD12232.C
.dbsym e sz5 _sz5 c
.area text(rom, con, rel)
.dbfile F:\新建文件夾\LCD12232APP\LCD12232.C
.dbfunc e wcodel _wcodel fV
; status -> R22
; c -> R20
.even
_wcodel::
xcall push_gset2
mov R20,R16
.dbline -1
.dbline 30
; //-----------------------------------------------------------------------------
; //-----------------------------------------------------------------------------
; // LCD12232 Library for AVR
; // V0.1c
; // zhongwh
; // Copyright 2003-2005
; // Email: hfkj01@163.com
; // 2005-6-19 15:38:52
; // Compiled with Imagecraft C Compiler for the AVR series
; //-----------------------------------------------------------------------------
; //-----------------------------------------------------------------------------
; #include <iom16v.h>
; #define prepage 0xB8
; #define precol 0X00
; #define E1_H PORTD|=BIT(PD4);
; #define E1_L PORTD&=~BIT(PD4);
; #define A0_H PORTD|=BIT(PD7);
; #define A0_L PORTD&=~BIT(PD7);
; #define LCD_READ PORTD|=BIT(PD6);
; #define LCD_WRITE PORTD&=~BIT(PD6);
; #define E2_H PORTD|=BIT(PD5);
; #define E2_L PORTD&=~BIT(PD5);
; #define LCD_PCT DDRC
; #define LCD_IN PINC
; #define LCD_DATA PORTC
; #define uchar unsigned char
; uchar b1=0,pianyi=0x41,sz0=0x41,sz1=0x41,sz2=0x41,sz3=0x41,sz4=0x41,sz5=0x41;
; const char chartable[35][32];
; void wcodel (uchar c)
; { uchar status;
xjmp L3
L2:
.dbline 32
;
; while(1){
.dbline 33
; LCD_PCT=0X00;
clr R2
out 0x14,R2
.dbline 34
; E1_H
ldi R16,4
ldi R17,0
xcall _BIT
in R2,0x12
clr R3
or R2,R16
or R3,R17
out 0x12,R2
.dbline 35
; A0_L
ldi R16,7
ldi R17,0
xcall _BIT
movw R2,R16
com R2
com R3
in R4,0x12
clr R5
and R4,R2
and R5,R3
out 0x12,R4
.dbline 36
; LCD_READ
ldi R16,6
ldi R17,0
xcall _BIT
in R2,0x12
clr R3
or R2,R16
or R3,R17
out 0x12,R2
.dbline 37
; E1_L
ldi R16,4
ldi R17,0
xcall _BIT
movw R2,R16
com R2
com R3
in R4,0x12
clr R5
and R4,R2
and R5,R3
out 0x12,R4
.dbline 38
; status=LCD_IN;
in R22,0x13
.dbline 39
; status=status&0x80;
andi R22,128
.dbline 40
; if (status==0) break;
brne L5
.dbline 40
xjmp L4
L5:
.dbline 41
L3:
.dbline 32
xjmp L2
L4:
.dbline 42
; }
; LCD_PCT=0XFF;
ldi R24,255
out 0x14,R24
.dbline 43
; E1_H
ldi R16,4
ldi R17,0
xcall _BIT
in R2,0x12
clr R3
or R2,R16
or R3,R17
out 0x12,R2
.dbline 44
; LCD_WRITE
ldi R16,6
ldi R17,0
xcall _BIT
movw R2,R16
com R2
com R3
in R4,0x12
clr R5
and R4,R2
and R5,R3
out 0x12,R4
.dbline 45
; LCD_DATA=c;
out 0x15,R20
.dbline 46
; E1_L
ldi R16,4
ldi R17,0
xcall _BIT
movw R2,R16
com R2
com R3
in R4,0x12
clr R5
and R4,R2
and R5,R3
out 0x12,R4
.dbline -2
.dbline 48
;
; }
L1:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r status 22 c
.dbsym r c 20 c
.dbend
.dbfunc e wdatal _wdatal fV
; status -> R22
; d -> R20
.even
_wdatal::
xcall push_gset2
mov R20,R16
.dbline -1
.dbline 50
; void wdatal (uchar d)
; { uchar status;
xjmp L9
L8:
.dbline 52
;
; while(1){
.dbline 53
; LCD_PCT=0X00;
clr R2
out 0x14,R2
.dbline 54
; E1_H
ldi R16,4
ldi R17,0
xcall _BIT
in R2,0x12
clr R3
or R2,R16
or R3,R17
out 0x12,R2
.dbline 55
; A0_L
ldi R16,7
ldi R17,0
xcall _BIT
movw R2,R16
com R2
com R3
in R4,0x12
clr R5
and R4,R2
and R5,R3
out 0x12,R4
.dbline 56
; LCD_READ
ldi R16,6
ldi R17,0
xcall _BIT
in R2,0x12
clr R3
or R2,R16
or R3,R17
out 0x12,R2
.dbline 57
; E1_L
ldi R16,4
ldi R17,0
xcall _BIT
movw R2,R16
com R2
com R3
in R4,0x12
clr R5
and R4,R2
and R5,R3
out 0x12,R4
.dbline 58
; status=LCD_IN;
in R22,0x13
.dbline 59
; status=status&0x80;
andi R22,128
.dbline 60
; if (status==0) break;
brne L11
.dbline 60
xjmp L10
L11:
.dbline 61
L9:
.dbline 52
xjmp L8
L10:
.dbline 62
; }
; LCD_PCT=0XFF;
ldi R24,255
out 0x14,R24
.dbline 63
; E1_H
ldi R16,4
ldi R17,0
xcall _BIT
in R2,0x12
clr R3
or R2,R16
or R3,R17
out 0x12,R2
.dbline 64
; A0_H
ldi R16,7
ldi R17,0
xcall _BIT
in R2,0x12
clr R3
or R2,R16
or R3,R17
out 0x12,R2
.dbline 65
; LCD_WRITE
ldi R16,6
ldi R17,0
xcall _BIT
movw R2,R16
com R2
com R3
in R4,0x12
clr R5
and R4,R2
and R5,R3
out 0x12,R4
.dbline 66
; LCD_DATA=d;
out 0x15,R20
.dbline 67
; E1_L
ldi R16,4
ldi R17,0
xcall _BIT
movw R2,R16
com R2
com R3
in R4,0x12
clr R5
and R4,R2
and R5,R3
out 0x12,R4
.dbline -2
.dbline 69
;
; }
L7:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r status 22 c
.dbsym r d 20 c
.dbend
.dbfunc e wcoder _wcoder fV
; status -> R22
; c -> R20
.even
_wcoder::
xcall push_gset2
mov R20,R16
.dbline -1
.dbline 71
; void wcoder (uchar c)
; { uchar status;
xjmp L15
L14:
.dbline 73
;
; while(1){
.dbline 74
; LCD_PCT=0X00;
clr R2
out 0x14,R2
.dbline 75
; E2_H
ldi R16,5
ldi R17,0
xcall _BIT
in R2,0x12
clr R3
or R2,R16
or R3,R17
out 0x12,R2
.dbline 76
; A0_L
ldi R16,7
ldi R17,0
xcall _BIT
movw R2,R16
com R2
com R3
in R4,0x12
clr R5
and R4,R2
and R5,R3
out 0x12,R4
.dbline 77
; LCD_READ
ldi R16,6
ldi R17,0
xcall _BIT
in R2,0x12
clr R3
or R2,R16
or R3,R17
out 0x12,R2
.dbline 78
; E2_L
ldi R16,5
ldi R17,0
xcall _BIT
movw R2,R16
com R2
com R3
in R4,0x12
clr R5
and R4,R2
and R5,R3
out 0x12,R4
.dbline 79
; status=LCD_IN;
in R22,0x13
.dbline 80
; status=status&0x80;
andi R22,128
.dbline 81
; if (status==0)
brne L17
.dbline 82
; { break;}
.dbline 82
xjmp L16
L17:
.dbline 83
L15:
.dbline 73
xjmp L14
L16:
.dbline 84
; }
; LCD_PCT=0XFF;
ldi R24,255
out 0x14,R24
.dbline 85
; E2_H
ldi R16,5
ldi R17,0
xcall _BIT
in R2,0x12
clr R3
or R2,R16
or R3,R17
out 0x12,R2
.dbline 86
; LCD_WRITE
ldi R16,6
ldi R17,0
xcall _BIT
movw R2,R16
com R2
com R3
in R4,0x12
clr R5
and R4,R2
and R5,R3
out 0x12,R4
.dbline 87
; LCD_DATA=c;
out 0x15,R20
.dbline 88
; E2_L
ldi R16,5
ldi R17,0
xcall _BIT
movw R2,R16
com R2
com R3
in R4,0x12
clr R5
and R4,R2
and R5,R3
out 0x12,R4
.dbline -2
.dbline 90
;
; }
L13:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r status 22 c
.dbsym r c 20 c
.dbend
.dbfunc e wdatar _wdatar fV
; status -> R22
; d -> R20
.even
_wdatar::
xcall push_gset2
mov R20,R16
.dbline -1
.dbline 92
; void wdatar (uchar d)
; { uchar status;
xjmp L21
L20:
.dbline 94
;
; while(1){ LCD_PCT=0X00;
.dbline 94
clr R2
out 0x14,R2
.dbline 95
; E2_H
ldi R16,5
ldi R17,0
xcall _BIT
in R2,0x12
clr R3
or R2,R16
or R3,R17
out 0x12,R2
.dbline 96
; A0_L
ldi R16,7
ldi R17,0
xcall _BIT
movw R2,R16
com R2
com R3
in R4,0x12
clr R5
and R4,R2
and R5,R3
out 0x12,R4
.dbline 97
; LCD_READ
ldi R16,6
ldi R17,0
xcall _BIT
in R2,0x12
clr R3
or R2,R16
or R3,R17
out 0x12,R2
.dbline 98
; E2_L
ldi R16,5
ldi R17,0
xcall _BIT
movw R2,R16
com R2
com R3
in R4,0x12
clr R5
and R4,R2
and R5,R3
out 0x12,R4
.dbline 99
; status=LCD_IN;
in R22,0x13
.dbline 100
; status=status&0x80;
andi R22,128
.dbline 101
; if (status==0) break;
brne L23
.dbline 101
xjmp L22
L23:
.dbline 102
L21:
.dbline 94
xjmp L20
L22:
.dbline 103
; }
; LCD_PCT=0XFF;
ldi R24,255
out 0x14,R24
.dbline 104
; E2_H
ldi R16,5
ldi R17,0
xcall _BIT
in R2,0x12
clr R3
or R2,R16
or R3,R17
out 0x12,R2
.dbline 105
; A0_H
ldi R16,7
ldi R17,0
xcall _BIT
in R2,0x12
clr R3
or R2,R16
or R3,R17
out 0x12,R2
.dbline 106
; LCD_WRITE
ldi R16,6
ldi R17,0
xcall _BIT
movw R2,R16
com R2
com R3
in R4,0x12
clr R5
and R4,R2
and R5,R3
out 0x12,R4
.dbline 107
; LCD_DATA=d;
out 0x15,R20
.dbline 108
; E2_L
ldi R16,5
ldi R17,0
xcall _BIT
movw R2,R16
com R2
com R3
in R4,0x12
clr R5
and R4,R2
and R5,R3
out 0x12,R4
.dbline -2
.dbline 110
;
; }
L19:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r status 22 c
.dbsym r d 20 c
.dbend
.dbfunc e clear _clear fV
; page -> R20
; col -> R22
; symbol -> R10
.even
_clear::
xcall push_gset3
mov R10,R16
.dbline -1
.dbline 114
;
;
; void clear(uchar symbol)
; {
.dbline 115
; uchar page=0x00;
clr R20
.dbline 116
; uchar col=0x00;
clr R22
.dbline 117
; for (page=0x00;page<0x04;page++)
xjmp L29
L26:
.dbline 118
; {
.dbline 120
;
; wcodel(prepage+page);
mov R16,R20
subi R16,72 ; addi 184
xcall _wcodel
.dbline 122
;
; for (col=0x00;col<0x61;col++)
clr R22
xjmp L33
L30:
.dbline 123
.dbline 124
mov R16,R22
xcall _wcodel
.dbline 125
mov R16,R10
xcall _wdatal
.dbline 126
L31:
.dbline 122
inc R22
L33:
.dbline 122
cpi R22,97
brlo L30
.dbline 127
L27:
.dbline 117
inc R20
L29:
.dbline 117
cpi R20,4
brlo L26
.dbline 128
; {
; wcodel(precol+col);
; wdatal(symbol);
; }
; }
; for (page=0x00;page<0x04;page++)
clr R20
xjmp L37
L34:
.dbline 129
; {
.dbline 130
; wcoder(prepage+page);
mov R16,R20
subi R16,72 ; addi 184
xcall _wcoder
.dbline 132
;
; for (col=0x00;col<0x61;col++)
clr R22
xjmp L41
L38:
.dbline 133
.dbline 134
mov R16,R22
xcall _wcoder
.dbline 135
mov R16,R10
xcall _wdatar
.dbline 136
L39:
.dbline 132
inc R22
L41:
.dbline 132
cpi R22,97
brlo L38
.dbline 137
L35:
.dbline 128
inc R20
L37:
.dbline 128
cpi R20,4
brlo L34
.dbline -2
.dbline 138
; {
; wcoder(precol+col);
; wdatar(symbol);
; }
; }
; }
L25:
xcall pop_gset3
.dbline 0 ; func end
ret
.dbsym r page 20 c
.dbsym r col 22 c
.dbsym r symbol 10 c
.dbend
.dbfunc e addressl _addressl fV
; col -> R20
; page -> R22
.even
_addressl::
xcall push_gset2
mov R20,R18
mov R22,R16
.dbline -1
.dbline 141
; //
; void addressl(uchar page,uchar col)
; {
.dbline 142
; wcodel(prepage+page);
mov R16,R22
subi R16,72 ; addi 184
xcall _wcodel
.dbline 143
; wcodel(precol+col);
mov R16,R20
xcall _wcodel
.dbline -2
.dbline 144
; }
L42:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r col 20 c
.dbsym r page 22 c
.dbend
.dbfunc e addressr _addressr fV
; col -> R20
; page -> R22
.even
_addressr::
xcall push_gset2
mov R20,R18
mov R22,R16
.dbline -1
.dbline 147
; //
; void addressr(uchar page,uchar col)
; {
.dbline 148
; wcoder(prepage+page);
mov R16,R22
subi R16,72 ; addi 184
xcall _wcoder
.dbline 149
; wcoder(precol+col+3);
mov R16,R20
subi R16,253 ; addi 3
xcall _wcoder
.dbline -2
.dbline 150
; }
L43:
xcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r col 20 c
.dbsym r page 22 c
.dbend
.dbfunc e lcdinit _lcdinit fV
.even
_lcdinit::
.dbline -1
.dbline 153
; //
; void lcdinit(void)
; { PORTC=0XFF;
.dbline 153
ldi R24,255
out 0x15,R24
.dbline 154
; DDRC=0X00;
clr R2
out 0x14,R2
.dbline 155
; DDRD=0XFF;
out 0x11,R24
.dbline 156
; DDRA|=BIT(PA7);
ldi R16,7
ldi R17,0
xcall _BIT
in R2,0x1a
clr R3
or R2,R16
or R3,R17
out 0x1a,R2
.dbline 157
; PORTA|=BIT(PA7);
ldi R16,7
ldi R17,0
xcall _BIT
in R2,0x1b
clr R3
or R2,R16
or R3,R17
out 0x1b,R2
.dbline 158
; wcodel(0xe2);wcoder(0xe2);//reset
ldi R16,226
xcall _wcodel
.dbline 158
ldi R16,226
xcall _wcoder
.dbline 159
; wcodel(0xae);wcoder(0xae);//display off
ldi R16,174
xcall _wcodel
.dbline 159
ldi R16,174
xcall _wcoder
.dbline 160
; wcodel(0xA4);wcoder(0xA4);//display off
ldi R16,164
xcall _wcodel
.dbline 160
ldi R16,164
xcall _wcoder
.dbline 161
; wcodel(0xa9);wcoder(0xa9);//duty select :1/32
ldi R16,169
xcall _wcodel
.dbline 161
ldi R16,169
xcall _wcoder
.dbline 162
; wcodel(0xa0);wcoder(0xa0);//clock
ldi R16,160
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -