📄 nokia_5110.s
字号:
.module nokia_5110.c
.area lit(rom, con, rel)
_font6x8::
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,47
.byte 0,0
.byte 0,0
.byte 7,0
.byte 7,0
.byte 0,20
.byte 127,20
.byte 127,20
.byte 0,36
.byte 42,127
.byte 42,18
.byte 0,'b
.byte 'd,8
.byte 19,35
.byte 0,54
.byte 'I,'U
.byte 34,'P
.byte 0,0
.byte 5,3
.byte 0,0
.byte 0,0
.byte 28,34
.byte 'A,0
.byte 0,0
.byte 'A,34
.byte 28,0
.byte 0,20
.byte 8,62
.byte 8,20
.byte 0,8
.byte 8,62
.byte 8,8
.byte 0,0
.byte 0,160
.byte 96,0
.byte 0,8
.byte 8,8
.byte 8,8
.byte 0,0
.byte 96,96
.byte 0,0
.byte 0,32
.byte 16,8
.byte 4,2
.byte 0,62
.byte 'Q,'I
.byte 'E,62
.byte 0,0
.byte 'B,127
.byte 64,0
.byte 0,'B
.byte 'a,'Q
.byte 'I,'F
.byte 0,33
.byte 'A,'E
.byte 'K,49
.byte 0,24
.byte 20,18
.byte 127,16
.byte 0,39
.byte 'E,'E
.byte 'E,57
.byte 0,60
.byte 'J,'I
.byte 'I,48
.byte 0,1
.byte 'q,9
.byte 5,3
.byte 0,54
.byte 'I,'I
.byte 'I,54
.byte 0,6
.byte 'I,'I
.byte 41,30
.byte 0,0
.byte 54,54
.byte 0,0
.byte 0,0
.byte 'V,54
.byte 0,0
.byte 0,8
.byte 20,34
.byte 'A,0
.byte 0,20
.byte 20,20
.byte 20,20
.byte 0,0
.byte 'A,34
.byte 20,8
.byte 0,2
.byte 1,'Q
.byte 9,6
.byte 0,50
.byte 'I,'Y
.byte 'Q,62
.byte 0,124
.byte 18,17
.byte 18,124
.byte 0,127
.byte 'I,'I
.byte 'I,54
.byte 0,62
.byte 'A,'A
.byte 'A,34
.byte 0,127
.byte 'A,'A
.byte 34,28
.byte 0,127
.byte 'I,'I
.byte 'I,'A
.byte 0,127
.byte 9,9
.byte 9,1
.byte 0,62
.byte 'A,'I
.byte 'I,'z
.byte 0,127
.byte 8,8
.byte 8,127
.byte 0,0
.byte 'A,127
.byte 'A,0
.byte 0,32
.byte 64,'A
.byte 63,1
.byte 0,127
.byte 8,20
.byte 34,'A
.byte 0,127
.byte 64,64
.byte 64,64
.byte 0,127
.byte 2,12
.byte 2,127
.byte 0,127
.byte 4,8
.byte 16,127
.byte 0,62
.byte 'A,'A
.byte 'A,62
.byte 0,127
.byte 9,9
.byte 9,6
.byte 0,62
.byte 'A,'Q
.byte 33,94
.byte 0,127
.byte 9,25
.byte 41,'F
.byte 0,'F
.byte 'I,'I
.byte 'I,49
.byte 0,1
.byte 1,127
.byte 1,1
.byte 0,63
.byte 64,64
.byte 64,63
.byte 0,31
.byte 32,64
.byte 32,31
.byte 0,63
.byte 64,56
.byte 64,63
.byte 0,'c
.byte 20,8
.byte 20,'c
.byte 0,7
.byte 8,'p
.byte 8,7
.byte 0,'a
.byte 'Q,'I
.byte 'E,'C
.byte 0,0
.byte 127,'A
.byte 'A,0
.byte 0,'U
.byte 42,'U
.byte 42,'U
.byte 0,0
.byte 'A,'A
.byte 127,0
.byte 0,4
.byte 2,1
.byte 2,4
.byte 0,64
.byte 64,64
.byte 64,64
.byte 0,0
.byte 1,2
.byte 4,0
.byte 0,32
.byte 'T,'T
.byte 'T,'x
.byte 0,127
.byte 'H,'D
.byte 'D,56
.byte 0,56
.byte 'D,'D
.byte 'D,32
.byte 0,56
.byte 'D,'D
.byte 'H,127
.byte 0,56
.byte 'T,'T
.byte 'T,24
.byte 0,8
.byte 126,9
.byte 1,2
.byte 0,24
.byte 164,164
.byte 164,124
.byte 0,127
.byte 8,4
.byte 4,'x
.byte 0,0
.byte 'D,125
.byte 64,0
.byte 0,64
.byte 128,132
.byte 125,0
.byte 0,127
.byte 16,40
.byte 'D,0
.byte 0,0
.byte 'A,127
.byte 64,0
.byte 0,124
.byte 4,24
.byte 4,'x
.byte 0,124
.byte 8,4
.byte 4,'x
.byte 0,56
.byte 'D,'D
.byte 'D,56
.byte 0,252
.byte 36,36
.byte 36,24
.byte 0,24
.byte 36,36
.byte 24,252
.byte 0,124
.byte 8,4
.byte 4,8
.byte 0,'H
.byte 'T,'T
.byte 'T,32
.byte 0,4
.byte 63,'D
.byte 64,32
.byte 0,60
.byte 64,64
.byte 32,124
.byte 0,28
.byte 32,64
.byte 32,28
.byte 0,60
.byte 64,48
.byte 64,60
.byte 0,'D
.byte 40,16
.byte 40,'D
.byte 0,28
.byte 160,160
.byte 160,124
.byte 0,'D
.byte 'd,'T
.byte 'L,'D
.byte 20,20
.byte 20,20
.byte 20,20
.dbfile E:\Study\AVR\nokia5110/english_6x8_pixel.h
.dbsym e font6x8 _font6x8 A[552:92:6]kc
_write_chinese::
.byte 16,210
.byte 18,255
.byte 'R,'P
.byte 130,'L
.byte 48,207
.byte 0,0
.byte 6,1
.byte 1,3
.byte 2,5
.byte 4,4
.byte 4,5
.byte 4,0
.byte 'b,34
.byte 58,170
.byte 170,171
.byte 170,170
.byte 58,34
.byte 'b,0
.byte 4,4
.byte 2,1
.byte 0,0
.byte 0,7
.byte 4,4
.byte 7,0
.byte 252,'D
.byte 'F,'E
.byte 252,16
.byte 44,199
.byte 4,4
.byte 252,0
.byte 7,2
.byte 2,2
.byte 7,0
.byte 0,4
.byte 4,4
.byte 3,0
.byte 0,252
.byte 148,148
.byte 148,255
.byte 148,148
.byte 148,254
.byte 4,0
.byte 0,1
.byte 0,0
.byte 0,3
.byte 4,4
.byte 4,4
.byte 6,0
.byte 32,33
.byte 33,33
.byte 33,249
.byte 41,37
.byte 35,49
.byte 32,0
.byte 0,0
.byte 0,4
.byte 4,7
.byte 0,0
.byte 0,0
.byte 0,0
.byte 8,254
.byte 8,8
.byte 255,136
.byte 136,136
.byte 255,8
.byte 8,0
.byte 0,7
.byte 4,4
.byte 5,4
.byte 4,4
.byte 5,4
.byte 4,0
.byte 128,128
.byte 95,53
.byte 213,31
.byte 21,245
.byte 'U,159
.byte 128,0
.byte 0,4
.byte 4,2
.byte 1,0
.byte 0,7
.byte 0,0
.byte 0,0
.byte 10,146
.byte 'b,158
.byte 2,24
.byte 135,'t
.byte 132,20
.byte 12,0
.byte 2,1
.byte 0,4
.byte 5,2
.byte 1,0
.byte 1,2
.byte 4,0
.byte 8,249
.byte 2,0
.byte 254,'B
.byte 'A,254
.byte 2,130
.byte 254,0
.byte 6,1
.byte 2,2
.byte 4,4
.byte 4,5
.byte 4,4
.byte 4,0
.byte 16,18
.byte 20,248
.byte 16,31
.byte 240,24
.byte 20,18
.byte 16,0
.byte 4,4
.byte 2,1
.byte 0,0
.byte 3,4
.byte 4,4
.byte 7,0
.byte 252,0
.byte 255,0
.byte 16,204
.byte 'G,204
.byte 'T,'D
.byte 196,0
.byte 1,0
.byte 7,0
.byte 0,7
.byte 2,3
.byte 2,2
.byte 7,0
.dbfile E:\Study\AVR\nokia5110/write_chinese_string_pixel.h
.dbsym e write_chinese _write_chinese A[264:11:24]kc
_move_chinese_string::
.byte 10,146
.byte 'b,158
.byte 2,24
.byte 135,'t
.byte 132,20
.byte 12,0
.byte 2,1
.byte 0,4
.byte 5,2
.byte 1,0
.byte 1,2
.byte 4,0
.byte 8,249
.byte 2,0
.byte 254,'B
.byte 'A,254
.byte 2,130
.byte 254,0
.byte 6,1
.byte 2,2
.byte 4,4
.byte 4,5
.byte 4,4
.byte 4,0
.byte 16,18
.byte 20,248
.byte 16,31
.byte 240,24
.byte 20,18
.byte 16,0
.byte 4,4
.byte 2,1
.byte 0,0
.byte 3,4
.byte 4,4
.byte 7,0
.byte 252,0
.byte 255,0
.byte 16,204
.byte 'G,204
.byte 'T,'D
.byte 196,0
.byte 1,0
.byte 7,0
.byte 0,7
.byte 2,3
.byte 2,2
.byte 7,0
.byte 4,132
.byte 'D,36
.byte 20,255
.byte 20,36
.byte 'D,134
.byte 4,0
.byte 1,0
.byte 1,1
.byte 1,7
.byte 1,1
.byte 1,0
.byte 1,0
.byte 0,255
.byte 'I,49
.byte 'M,129
.byte 'I,49
.byte 205,1
.byte 255,0
.byte 0,7
.byte 0,0
.byte 0,0
.byte 0,0
.byte 4,4
.byte 7,0
.byte 4,'u
.byte 134,'t
.byte 4,192
.byte 64,127
.byte 'D,196
.byte 4,0
.byte 2,2
.byte 1,1
.byte 1,7
.byte 2,2
.byte 2,7
.byte 0,0
.byte 0,28
.byte 126,126
.byte 28,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 3,3
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.dbfile E:\Study\AVR\nokia5110/move_chinese_string_pixel.h
.dbsym e move_chinese_string _move_chinese_string A[192:8:24]kc
.area text(rom, con, rel)
.dbfile E:\Study\AVR\nokia5110/move_chinese_string_pixel.h
.dbfile E:\Study\AVR\nokia5110\nokia_5110.c
.dbfunc e delay_1us _delay_1us fV
; i -> R16,R17
.even
_delay_1us::
.dbline -1
.dbline 17
;
;
; #include "nokia_5110.h"
; #include "english_6x8_pixel.h"
; #include "write_chinese_string_pixel.h"
; #include "move_chinese_string_pixel.h"
;
;
; /*-----------------------------------------------------------------------
; LCD_init : 3310LCD初始化
;
; 编写日期 :2004-8-10
; 最后修改日期 :2004-8-10
; -----------------------------------------------------------------------*/
;
; void delay_1us(void) //1us延时函数
; {
.dbline 19
clr R16
clr R17
rjmp L5
L2:
.dbline 19
L3:
.dbline 19
subi R16,255 ; offset = 1
sbci R17,255
L5:
.dbline 19
; unsigned int i;
; for(i=0;i<100;i++);
cpi R16,100
ldi R30,0
cpc R17,R30
brlo L2
.dbline -2
.dbline 21
;
; }
L1:
.dbline 0 ; func end
ret
.dbsym r i 16 i
.dbend
.dbfunc e delay_1ms _delay_1ms fV
; i -> R16,R17
.even
_delay_1ms::
.dbline -1
.dbline 24
;
; void delay_1ms(void) //1ms延时函数
; {
.dbline 26
clr R16
clr R17
rjmp L10
L7:
.dbline 26
L8:
.dbline 26
subi R16,255 ; offset = 1
sbci R17,255
L10:
.dbline 26
; unsigned int i;
; for (i=0;i<1140;i++);
cpi R16,116
ldi R30,4
cpc R17,R30
brlo L7
.dbline -2
.dbline 27
; }
L6:
.dbline 0 ; func end
ret
.dbsym r i 16 i
.dbend
.dbfunc e delay_nms _delay_nms fV
; i -> R20,R21
; n -> R22,R23
.even
_delay_nms::
rcall push_gset2
movw R22,R16
.dbline -1
.dbline 30
;
; void delay_nms(unsigned int n) //N ms延时函数
; {
.dbline 31
; unsigned int i=0;
clr R20
clr R21
.dbline 32
; for (i=0;i<n;i++)
rjmp L15
L12:
.dbline 33
rcall _delay_1ms
L13:
.dbline 32
subi R20,255 ; offset = 1
sbci R21,255
L15:
.dbline 32
cp R20,R22
cpc R21,R23
brlo L12
.dbline -2
.dbline 34
; delay_1ms();
; }
L11:
rcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r i 20 i
.dbsym r n 22 i
.dbend
.dbfunc e LCD_init _LCD_init fV
.even
_LCD_init::
.dbline -1
.dbline 38
;
;
; void LCD_init(void)
; {
.dbline 42
; // 产生一个让LCD复位的低电平脉冲
; // LCD_RST = 0;
;
; LCD_5110_DIR |= (0x01 << LCD_RST) + (0x01 << LCD_CE) + (0x01 << LCD_DC)
in R24,0x11
ori R24,31
out 0x11,R24
.dbline 45
; + (0x01 << LCD_DIN) + (0x01<< LCD_CLK);
;
; LCD_5110_PORT &= ~(0x01 << LCD_RST);
cbi 0x12,4
.dbline 46
; delay_1us();
rcall _delay_1us
.dbline 49
;
; // LCD_RST = 1;
; LCD_5110_PORT |= (0x01 << LCD_RST);
sbi 0x12,4
.dbline 53
;
; // 关闭LCD
; //LCD_CE = 0;
; LCD_5110_PORT &= ~(0x01 << LCD_CE);
cbi 0x12,3
.dbline 54
; delay_1us();
rcall _delay_1us
.dbline 57
; // 使能LCD
; //LCD_CE = 1;
; LCD_5110_PORT |= (0x01 << LCD_CE);
sbi 0x12,3
.dbline 58
; delay_1us();
rcall _delay_1us
.dbline 60
;
; LCD_write_byte(0x21, 0); // 使用扩展命令设置LCD模式
clr R18
ldi R16,33
rcall _LCD_write_byte
.dbline 61
; LCD_write_byte(0xc8, 0); // 设置偏置电压
clr R18
ldi R16,200
rcall _LCD_write_byte
.dbline 62
; LCD_write_byte(0x06, 0); // 温度校正
clr R18
ldi R16,6
rcall _LCD_write_byte
.dbline 63
; LCD_write_byte(0x13, 0); // 1:48
clr R18
ldi R16,19
rcall _LCD_write_byte
.dbline 64
; LCD_write_byte(0x20, 0); // 使用基本命令
clr R18
ldi R16,32
rcall _LCD_write_byte
.dbline 65
; LCD_clear(); // 清屏
rcall _LCD_clear
.dbline 66
; LCD_write_byte(0x0c, 0); // 设定显示模式,正常显示
clr R18
ldi R16,12
rcall _LCD_write_byte
.dbline 70
;
; // 关闭LCD
; // LCD_CE = 0;
; LCD_5110_PORT &= ~(0x01 << LCD_CE);
cbi 0x12,3
.dbline -2
.dbline 71
; }
L16:
.dbline 0 ; func end
ret
.dbend
.dbfunc e LCD_clear _LCD_clear fV
; i -> R20,R21
.even
_LCD_clear::
rcall push_gset1
.dbline -1
.dbline 80
;
; /*-----------------------------------------------------------------------
; LCD_clear : LCD清屏函数
;
; 编写日期 :2004-8-10
; 最后修改日期 :2004-8-10
; -----------------------------------------------------------------------*/
; void LCD_clear(void)
; {
.dbline 83
; unsigned int i;
;
; LCD_write_byte(0x0c, 0);
clr R18
ldi R16,12
rcall _LCD_write_byte
.dbline 84
; LCD_write_byte(0x80, 0);
clr R18
ldi R16,128
rcall _LCD_write_byte
.dbline 86
;
; for (i=0; i<504; i++)
clr R20
clr R21
rjmp L21
L18:
.dbline 87
ldi R18,1
clr R16
rcall _LCD_write_byte
L19:
.dbline 86
subi R20,255 ; offset = 1
sbci R21,255
L21:
.dbline 86
cpi R20,248
ldi R30,1
cpc R21,R30
brlo L18
.dbline -2
.dbline 88
; LCD_write_byte(0, 1);
; }
L17:
rcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r i 20 i
.dbend
.dbfunc e LCD_set_XY _LCD_set_XY fV
; Y -> R22
; X -> R20
.even
_LCD_set_XY::
rcall push_gset2
mov R22,R18
mov R20,R16
.dbline -1
.dbline 100
;
; /*-----------------------------------------------------------------------
; LCD_set_XY : 设置LCD坐标函数
;
; 输入参数:X :0-83
; Y :0-5
;
; 编写日期 :2004-8-10
; 最后修改日期 :2004-8-10
; -----------------------------------------------------------------------*/
; void LCD_set_XY(unsigned char X, unsigned char Y)
; {
.dbline 101
; LCD_write_byte(0x40 | Y, 0); // column
clr R18
mov R16,R22
ori R16,64
rcall _LCD_write_byte
.dbline 102
; LCD_write_byte(0x80 | X, 0); // row
clr R18
mov R16,R20
ori R16,128
rcall _LCD_write_byte
.dbline -2
.dbline 103
; }
L22:
rcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r Y 22 c
.dbsym r X 20 c
.dbend
.dbfunc e LCD_write_char _LCD_write_char fV
; line -> R20
; c -> R22
.even
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -