📄 main.s
字号:
.area data(ram, con, rel)
.dbfile D:\(H-drive)\程序范例\Mega16例程\19.LCD5110/5110.h
.blkb 2
.area idata
.byte 254,255
.area data(ram, con, rel)
.dbfile D:\(H-drive)\程序范例\Mega16例程\19.LCD5110/5110.h
.blkb 2
.area idata
.byte 255,63
.area data(ram, con, rel)
.dbfile D:\(H-drive)\程序范例\Mega16例程\19.LCD5110/5110.h
.blkb 2
.area idata
.byte 15,15
.area data(ram, con, rel)
.dbfile D:\(H-drive)\程序范例\Mega16例程\19.LCD5110/5110.h
.blkb 2
.area idata
.byte 127,255
.area data(ram, con, rel)
.dbfile D:\(H-drive)\程序范例\Mega16例程\19.LCD5110/5110.h
.blkb 2
.area idata
.byte 255,255
.area data(ram, con, rel)
.dbfile D:\(H-drive)\程序范例\Mega16例程\19.LCD5110/5110.h
.blkb 2
.area idata
.byte 255,231
.area data(ram, con, rel)
.dbfile D:\(H-drive)\程序范例\Mega16例程\19.LCD5110/5110.h
.blkb 2
.area idata
.byte 7,3
.area data(ram, con, rel)
.dbfile D:\(H-drive)\程序范例\Mega16例程\19.LCD5110/5110.h
.blkb 2
.area idata
.byte 1,0
.area data(ram, con, rel)
.dbfile D:\(H-drive)\程序范例\Mega16例程\19.LCD5110/5110.h
.blkb 2
.area idata
.byte 2,3
.area data(ram, con, rel)
.dbfile D:\(H-drive)\程序范例\Mega16例程\19.LCD5110/5110.h
.blkb 2
.area idata
.byte 3,3
.area data(ram, con, rel)
.dbfile D:\(H-drive)\程序范例\Mega16例程\19.LCD5110/5110.h
.blkb 2
.area idata
.byte 3,3
.area data(ram, con, rel)
.dbfile D:\(H-drive)\程序范例\Mega16例程\19.LCD5110/5110.h
.blkb 2
.area idata
.byte 0,0
.area data(ram, con, rel)
.dbfile D:\(H-drive)\程序范例\Mega16例程\19.LCD5110/5110.h
.blkb 2
.area idata
.byte 0,0
.area data(ram, con, rel)
.dbfile D:\(H-drive)\程序范例\Mega16例程\19.LCD5110/5110.h
.blkb 2
.area idata
.byte 0,0
.area data(ram, con, rel)
.dbfile D:\(H-drive)\程序范例\Mega16例程\19.LCD5110/5110.h
.blkb 2
.area idata
.byte 0,0
.area data(ram, con, rel)
.dbfile D:\(H-drive)\程序范例\Mega16例程\19.LCD5110/5110.h
.blkb 2
.area idata
.byte 0,3
.area data(ram, con, rel)
.dbfile D:\(H-drive)\程序范例\Mega16例程\19.LCD5110/5110.h
.blkb 2
.area idata
.byte 3,3
.area data(ram, con, rel)
.dbfile D:\(H-drive)\程序范例\Mega16例程\19.LCD5110/5110.h
.blkb 2
.area idata
.byte 3,3
.area data(ram, con, rel)
.dbfile D:\(H-drive)\程序范例\Mega16例程\19.LCD5110/5110.h
.blkb 2
.area idata
.byte 0,0
.area data(ram, con, rel)
.dbfile D:\(H-drive)\程序范例\Mega16例程\19.LCD5110/5110.h
.blkb 2
.area idata
.byte 3,31
.area data(ram, con, rel)
.dbfile D:\(H-drive)\程序范例\Mega16例程\19.LCD5110/5110.h
.blkb 2
.area idata
.byte 63,31
.area data(ram, con, rel)
.dbfile D:\(H-drive)\程序范例\Mega16例程\19.LCD5110/5110.h
.blkb 2
.area idata
.byte 7,0
.area data(ram, con, rel)
.dbfile D:\(H-drive)\程序范例\Mega16例程\19.LCD5110/5110.h
.blkb 2
.area idata
.byte 0,2
.area data(ram, con, rel)
.dbfile D:\(H-drive)\程序范例\Mega16例程\19.LCD5110/5110.h
.blkb 2
.area idata
.byte 3,3
.area data(ram, con, rel)
.dbfile D:\(H-drive)\程序范例\Mega16例程\19.LCD5110/5110.h
.blkb 2
.area idata
.byte 3,3
.area data(ram, con, rel)
.dbfile D:\(H-drive)\程序范例\Mega16例程\19.LCD5110/5110.h
.blkb 2
.area idata
.byte 1,0
.area data(ram, con, rel)
.dbfile D:\(H-drive)\程序范例\Mega16例程\19.LCD5110/5110.h
.blkb 2
.area idata
.byte 0,0
.area data(ram, con, rel)
.dbfile D:\(H-drive)\程序范例\Mega16例程\19.LCD5110/5110.h
.blkb 2
.area idata
.byte 0,3
.area data(ram, con, rel)
.dbfile D:\(H-drive)\程序范例\Mega16例程\19.LCD5110/5110.h
.blkb 2
.area idata
.byte 3,3
.area data(ram, con, rel)
.dbfile D:\(H-drive)\程序范例\Mega16例程\19.LCD5110/5110.h
.blkb 2
.area idata
.byte 3,3
.area data(ram, con, rel)
.dbfile D:\(H-drive)\程序范例\Mega16例程\19.LCD5110/5110.h
.blkb 2
.area idata
.byte 3,0
.area data(ram, con, rel)
.dbfile D:\(H-drive)\程序范例\Mega16例程\19.LCD5110/5110.h
.blkb 2
.area idata
.byte 0,0
.area data(ram, con, rel)
.dbfile D:\(H-drive)\程序范例\Mega16例程\19.LCD5110/5110.h
.dbsym e AVR_bmp _AVR_bmp A[144:144]c
.area text(rom, con, rel)
.dbfile D:\(H-drive)\程序范例\Mega16例程\19.LCD5110/5110.h
.dbfile D:\(H-drive)\程序范例\Mega16例程\19.LCD5110\main.c
.dbfunc e Delay_us _Delay_us fV
; time -> R16,R17
.even
_Delay_us::
.dbline -1
.dbline 8
; #include <iom16v.h>
; #include <MACROS.h>
; #include "Define.h"
; #include "5110.h"
;
; /******************************************************************************/
; void Delay_us(unsigned int time)
; {
L2:
.dbline 9
L3:
.dbline 9
; while(time--);
movw R2,R16
subi R16,1
sbci R17,0
tst R2
brne L2
tst R3
brne L2
X0:
.dbline -2
L1:
.dbline 0 ; func end
ret
.dbsym r time 16 i
.dbend
.dbfunc e Delay_ms _Delay_ms fV
; time -> R20,R21
.even
_Delay_ms::
xcall push_gset1
movw R20,R16
.dbline -1
.dbline 13
; }
;
; void Delay_ms(unsigned int time)
; {
xjmp L7
L6:
.dbline 15
.dbline 16
ldi R16,1000
ldi R17,3
xcall _Delay_us
.dbline 17
L7:
.dbline 14
; while(time--)
movw R2,R20
subi R20,1
sbci R21,0
tst R2
brne L6
tst R3
brne L6
X1:
.dbline -2
L5:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r time 20 i
.dbend
.dbfunc e main _main fV
.even
_main::
sbiw R28,7
.dbline -1
.dbline 21
; {
; Delay_us(1000);
; }
; }
;
; void main(void)
; {
.dbline 22
; LCD_init();//初始化液晶
xcall _LCD_init
.dbline 23
; LCD_clear();
xcall _LCD_clear
.dbline 25
;
; SETBIT(DDRC,BACKLED_EN); //配置背光控制端口
sbi 0x14,7
.dbline 26
; CLEARBIT(PORTC,BACKLED_EN); //使能背光
cbi 0x15,7
xjmp L11
L10:
.dbline 29
.dbline 30
xcall _LCD_clear
.dbline 31
ldi R24,<L13
ldi R25,>L13
std y+1,R25
std y+0,R24
clr R18
clr R16
xcall _LCD_write_english_string
.dbline 32
ldi R24,<L14
ldi R25,>L14
std y+1,R25
std y+0,R24
ldi R18,5
clr R16
xcall _LCD_write_english_string
.dbline 33
ldi R24,<L15
ldi R25,>L15
std y+1,R25
std y+0,R24
ldi R18,5
ldi R16,21
xcall _LCD_write_english_string
.dbline 34
ldi R24,<L16
ldi R25,>L16
std y+1,R25
std y+0,R24
ldi R18,5
ldi R16,66
xcall _LCD_write_english_string
.dbline 35
clr R2
std y+6,R2
std y+4,R2
ldi R24,7
std y+2,R24
ldi R24,12
std y+0,R24
ldi R18,3
clr R16
xcall _LCD_write_chinese_string
.dbline 37
ldi R16,5000
ldi R17,19
xcall _Delay_ms
.dbline 38
xcall _LCD_clear
.dbline 39
ldi R24,24
std y+4,R24
ldi R24,48
std y+2,R24
ldi R24,<_AVR_bmp
ldi R25,>_AVR_bmp
std y+1,R25
std y+0,R24
clr R18
clr R16
xcall _LCD_draw_bmp_pixel
.dbline 40
ldi R16,2000
ldi R17,7
xcall _Delay_ms
.dbline 41
L11:
.dbline 28
xjmp L10
X2:
.dbline -2
L9:
adiw R28,7
.dbline 0 ; func end
ret
.dbend
.dbfunc e LCD_init _LCD_init fV
.even
_LCD_init::
.dbline -1
.dbline 48
;
; while(1)
; {
; LCD_clear();
; LCD_write_english_string(0,0,"---ADEmbed----");
; LCD_write_english_string(0,5,"www.");
; LCD_write_english_string(21,5,"adembed.");
; LCD_write_english_string(66,5,"com");
; LCD_write_chinese_string(0,3,12,7,0,0);
;
; Delay_ms(5000);
; LCD_clear();
; LCD_draw_bmp_pixel(0,0,AVR_bmp,48,24);
; Delay_ms(2000);
; }
;
; }
;
;
; /********************************************************************************************************************/
; void LCD_init(void)
; {
.dbline 50
; //先设置为输出
; SETBIT(LCD_DIR,SCLK);
sbi 0x17,7
.dbline 51
; SETBIT(LCD_DIR,SDIN);
sbi 0x17,5
.dbline 52
; SETBIT(LCD_DIR,LCD_DC);
sbi 0x17,6
.dbline 53
; SETBIT(LCD_DIR,LCD_CE);
sbi 0x17,4
.dbline 63
; //SETBIT(LCD_DIR,LCD_RST);
;
; // 产生一个让LCD复位的低电平脉冲
;
; //CLEARBIT(LCD_PORT,LCD_RST);//LCD_RST = 0;
; //delay_1us();
; //SETBIT(LCD_PORT,LCD_RST);//LCD_RST = 1;
;
; // 关闭LCD
; CLEARBIT(LCD_PORT,LCD_CE);//LCD_CE = 0;
cbi 0x18,4
.dbline 64
; delay_1us();
xcall _delay_1us
.dbline 67
;
; // 使能LCD
; SETBIT(LCD_PORT,LCD_CE);//LCD_CE = 1;
sbi 0x18,4
.dbline 68
; delay_1us();
xcall _delay_1us
.dbline 70
;
; LCD_write_byte(0x21, 0); // 使用扩展命令设置LCD模式
clr R18
ldi R16,33
xcall _LCD_write_byte
.dbline 71
; LCD_write_byte(0xc8, 0); // 设置偏置电压
clr R18
ldi R16,200
xcall _LCD_write_byte
.dbline 72
; LCD_write_byte(0x06, 0); // 温度校正
clr R18
ldi R16,6
xcall _LCD_write_byte
.dbline 73
; LCD_write_byte(0x13, 0); // 1:48
clr R18
ldi R16,19
xcall _LCD_write_byte
.dbline 74
; LCD_write_byte(0x20, 0); // 使用基本命令
clr R18
ldi R16,32
xcall _LCD_write_byte
.dbline 75
; LCD_clear(); // 清屏
xcall _LCD_clear
.dbline 76
; LCD_write_byte(0x0c, 0); // 设定显示模式,正常显示
clr R18
ldi R16,12
xcall _LCD_write_byte
.dbline 79
;
; // 关闭LCD
; CLEARBIT(LCD_PORT,LCD_CE);//LCD_CE = 0;
cbi 0x18,4
.dbline -2
L17:
.dbline 0 ; func end
ret
.dbend
.dbfunc e LCD_clear _LCD_clear fV
; i -> R20,R21
.even
_LCD_clear::
xcall push_gset1
.dbline -1
.dbline 83
; }
; /********************************************************************************************************************/
; void LCD_clear(void)
; {
.dbline 86
; unsigned int i;
;
; LCD_write_byte(0x0c, 0);
clr R18
ldi R16,12
xcall _LCD_write_byte
.dbline 87
; LCD_write_byte(0x80, 0);
clr R18
ldi R16,128
xcall _LCD_write_byte
.dbline 89
;
; for (i=0; i<504; i++)
clr R20
clr R21
xjmp L22
L19:
.dbline 90
.dbline 91
ldi R18,1
clr R16
xcall _LCD_write_byte
.dbline 92
L20:
.dbline 89
subi R20,255 ; offset = 1
sbci R21,255
L22:
.dbline 89
cpi R20,248
ldi R30,1
cpc R21,R30
brlo L19
.dbline -2
L18:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r i 20 i
.dbend
.dbfunc e delay_1us _delay_1us fV
; i -> R16,R17
.even
_delay_1us::
.dbline -1
.dbline 96
; {
; LCD_write_byte(0, 1);
; }
; }
; /********************************************************************************************************************/
; void delay_1us(void) //1us延时函数
; {
.dbline 98
clr R16
clr R17
xjmp L27
L24:
.dbline 98
L25:
.dbline 98
subi R16,255 ; offset = 1
sbci R17,255
L27:
.dbline 98
; unsigned int i;
; for(i=0;i<12000;i++);
cpi R16,224
ldi R30,46
cpc R17,R30
brlo L24
.dbline -2
L23:
.dbline 0 ; func end
ret
.dbsym r i 16 i
.dbend
.dbfunc e LCD_set_XY _LCD_set_XY fV
; Y -> R22
; X -> R20
.even
_LCD_set_XY::
xcall push_gset2
mov R22,R18
mov R20,R16
.dbline -1
.dbline 102
; }
; /********************************************************************************************************************/
; void LCD_set_XY(unsigned char X, unsigned char Y)
; {
.dbline 103
; LCD_write_byte(0x40 | Y, 0);// column
clr R18
mov R16,R22
ori R16,64
xcall _LCD_write_byte
.dbline 104
; LCD_write_byte(0x80 | X, 0);// row
clr R18
mov R16,R20
ori R16,128
xcall _LCD_write_byte
.dbline -2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -