📄 1602.s
字号:
.module _1602.c
.area text(rom, con, rel)
.dbfile E:\AVR程序\OK\1602\1602.c
.area code(ram, con, rel)
.dbfile E:\AVR程序\OK\1602\1602.c
.area lit(rom, con, rel)
_table::
.byte 'I,32,'L,'O,'V,'E,32,'A,'V,'R,32,33,0
.dbsym e table _table A[13:13]kc
_table1::
.byte 'z,'h,'a,'n,'g,32,'y,'i,32,33,0
.dbsym e table1 _table1 A[11:11]kc
.area text(rom, con, rel)
.dbfile E:\AVR程序\OK\1602\1602.c
.dbfunc e delay _delay fV
; i -> R20,R21
; j -> R22,R23
; ms -> R16,R17
.even
_delay::
rcall push_xgsetF000
.dbline -1
.dbline 8
; #include"1602.h"
;
; #pragma data:code
; const uchar table[]="I LOVE AVR !"; //双引号是将这些字符转化成ASCII码
; const uchar table1[]="zhang yi !";
;
; void delay(uint ms)
; {
.dbline 10
; uint i,j;
; for(i=0;i<ms;i++)
clr R20
clr R21
rjmp L5
L2:
.dbline 11
; {
.dbline 12
; for(j=0;j<1141;j++);
clr R22
clr R23
rjmp L9
L6:
.dbline 12
L7:
.dbline 12
subi R22,255 ; offset = 1
sbci R23,255
L9:
.dbline 12
cpi R22,117
ldi R30,4
cpc R23,R30
brlo L6
X0:
.dbline 13
; }
L3:
.dbline 10
subi R20,255 ; offset = 1
sbci R21,255
L5:
.dbline 10
cp R20,R16
cpc R21,R17
brlo L2
X1:
.dbline -2
L1:
.dbline 0 ; func end
rjmp pop_xgsetF000
.dbsym r i 20 i
.dbsym r j 22 i
.dbsym r ms 16 i
.dbend
.dbfunc e write_com _write_com fV
; com -> R10
.even
_write_com::
st -y,R10
mov R10,R16
.dbline -1
.dbline 17
; }
;
; void write_com(uchar com) //写指令
; {
.dbline 18
; CLR_RS_1602; //选择命令端
cbi 0x15,5
.dbline 19
; CLR_RW_1602; //选择写端
cbi 0x15,6
.dbline 20
; delay(1); //延时1ms
ldi R16,1
ldi R17,0
rcall _delay
.dbline 23
;
;
; SET_E_1602;
sbi 0x15,7
.dbline 24
; PORTA=com;
out 0x1b,R10
.dbline 25
; CLR_E_1602;
cbi 0x15,7
.dbline -2
L10:
.dbline 0 ; func end
ld R10,y+
ret
.dbsym r com 10 c
.dbend
.dbfunc e write_dat _write_dat fV
; dat -> R10
.even
_write_dat::
st -y,R10
mov R10,R16
.dbline -1
.dbline 29
; }
;
; void write_dat(uchar dat) //写数据
; {
.dbline 30
; SET_RS_1602; //选择数据端
sbi 0x15,5
.dbline 31
; CLR_RW_1602; //选择写端
cbi 0x15,6
.dbline 32
; delay(1); //延时1ms
ldi R16,1
ldi R17,0
rcall _delay
.dbline 34
;
; SET_E_1602;
sbi 0x15,7
.dbline 35
; PORTA=dat;
out 0x1b,R10
.dbline 36
; CLR_E_1602;
cbi 0x15,7
.dbline -2
L11:
.dbline 0 ; func end
ld R10,y+
ret
.dbsym r dat 10 c
.dbend
.dbfunc e LCD_init _LCD_init fV
.even
_LCD_init::
.dbline -1
.dbline 41
;
; }
;
; void LCD_init()
; {
.dbline 42
; write_com(0X38); //初始化设置,显示模式设置
ldi R16,56
rcall _write_com
.dbline 43
; write_com(0X0C); //0X0C去光标
ldi R16,12
rcall _write_com
.dbline 44
; write_com(0X06); //地址从左往右加1
ldi R16,6
rcall _write_com
.dbline 45
; write_com(0X01);
ldi R16,1
rcall _write_com
.dbline 46
; delay(5);
ldi R16,5
ldi R17,0
rcall _delay
.dbline -2
L12:
.dbline 0 ; func end
ret
.dbend
.dbfunc e display _display fV
; i -> R20
.even
_display::
st -y,R20
.dbline -1
.dbline 49
; }
; void display()
; {
.dbline 52
; /*******************第一行显示**********/
; uchar i;
; write_com(0X80+0X00);
ldi R16,128
rcall _write_com
.dbline 53
; delay(5);
ldi R16,5
ldi R17,0
rcall _delay
.dbline 54
; for(i=0;i<12;i++)
clr R20
rjmp L17
L14:
.dbline 55
; {
.dbline 56
; write_dat(table[i]);
ldi R24,<_table
ldi R25,>_table
mov R30,R20
clr R31
add R30,R24
adc R31,R25
lpm R16,Z
rcall _write_dat
.dbline 57
; delay(5);
ldi R16,5
ldi R17,0
rcall _delay
.dbline 59
;
; }
L15:
.dbline 54
inc R20
L17:
.dbline 54
cpi R20,12
brlo L14
X2:
.dbline 62
;
; /******************第二行显示***************/
; write_com(0X80+0X40);
ldi R16,192
rcall _write_com
.dbline 63
; delay(5);
ldi R16,5
ldi R17,0
rcall _delay
.dbline 64
; for(i=0;i<10;i++)
clr R20
rjmp L21
L18:
.dbline 65
; {
.dbline 66
; write_dat(table1[i]);
ldi R24,<_table1
ldi R25,>_table1
mov R30,R20
clr R31
add R30,R24
adc R31,R25
lpm R16,Z
rcall _write_dat
.dbline 67
; delay(5);
ldi R16,5
ldi R17,0
rcall _delay
.dbline 68
; }
L19:
.dbline 64
inc R20
L21:
.dbline 64
cpi R20,10
brlo L18
X3:
.dbline 70
;
; for(i=0;i<15;i++)
clr R20
rjmp L25
L22:
.dbline 71
; {
.dbline 72
; write_com(0x1C);
ldi R16,28
rcall _write_com
.dbline 73
; delay(100);
ldi R16,100
ldi R17,0
rcall _delay
.dbline 75
;
; }
L23:
.dbline 70
inc R20
L25:
.dbline 70
cpi R20,15
brlo L22
X4:
.dbline -2
L13:
.dbline 0 ; func end
ld R20,y+
ret
.dbsym r i 20 c
.dbend
.dbfunc e main _main fV
.even
_main::
.dbline -1
.dbline 78
; }
; void main()
; {
.dbline 79
; DDRA=0XFF;
ldi R24,255
out 0x1a,R24
.dbline 80
; DDRC|=BIT(5)|BIT(6)|BIT(7);
in R24,0x14
ori R24,224
out 0x14,R24
.dbline 81
; CLR_E_1602;
cbi 0x15,7
.dbline 85
;
;
;
; LCD_init();
rcall _LCD_init
.dbline 86
; delay(20);
ldi R16,20
ldi R17,0
rcall _delay
.dbline 89
; //write_com(0x84);
; //write_dat(0x34);
; display();
rcall _display
.dbline -2
L26:
.dbline 0 ; func end
ret
.dbend
; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -