📄 lesson6.lis
字号:
.module lesson6.c
.area text(rom, con, rel)
0000 .dbfile D:\Proteus\Proteus练习\03液晶1602\程序\lesson6.c
.area code(ram, con, rel)
0000 .dbfile D:\Proteus\Proteus练习\03液晶1602\程序\lesson6.c
.area lit(rom, con, rel)
0000 _table::
0000 49204C494B4520415652202100 .byte 'I,32,'L,'I,'K,'E,32,'A,'V,'R,32,33,0
000D .dbsym e table _table A[13:13]kc
000D _table1::
000D 5757572E54584D43552E434F4D00 .byte 'W,'W,'W,46,'T,'X,'M,'C,'U,46,'C,'O,'M,0
001B .dbsym e table1 _table1 A[14:14]kc
001B _table2::
001B 4920616D20676F6E6E6120746F2000 .byte 'I,32,'a,'m,32,'g,'o,'n,'n,'a,32,'t,'o,32,0
002A .dbsym e table2 _table2 A[15:15]kc
002A _table3::
002A 776F726B206173206861726420617320 .byte 'w,'o,'r,'k,32,'a,'s,32,'h,'a,'r,'d,32,'a,'s,32
003A 00 .byte 0
003B .dbsym e table3 _table3 A[17:17]kc
003B _table4::
003B 692063616E2C20616E64207365652000 .byte 'i,32,'c,'a,'n,44,32,'a,'n,'d,32,'s,'e,'e,32,0
004B .dbsym e table4 _table4 A[16:16]kc
004B _table5::
004B 776861742068617070656E202100 .byte 'w,'h,'a,'t,32,'h,'a,'p,'p,'e,'n,32,33,0
0059 .dbsym e table5 _table5 A[14:14]kc
.area text(rom, con, rel)
0000 .dbfile D:\Proteus\Proteus练习\03液晶1602\程序\lesson6.c
0000 .dbfunc e delay _delay fV
0000 ; i -> R10,R11
0000 ; j -> R12,R13
0000 ; ms -> R16,R17
.even
0000 _delay::
0000 0E940000 xcall push_xgset003C
0004 .dbline -1
0004 .dbline 13
0004 ; #include <iom16v.h>
0004 ; #include <macros.h>
0004 ; #define uchar unsigned char
0004 ; #define uint unsigned int
0004 ; #pragma data:code
0004 ; const uchar table[]="I LIKE AVR !";
0004 ; const uchar table1[]="WWW.TXMCU.COM";
0004 ; const uchar table2[]="I am gonna to " ;
0004 ; const uchar table3[]="work as hard as ";
0004 ; const uchar table4[]="i can, and see ";
0004 ; const uchar table5[]="what happen !";
0004 ; void delay(uint ms)
0004 ; {
0004 .dbline 15
0004 ; uint i,j;
0004 ; for(i=0;i<ms;i++)
0004 AA24 clr R10
0006 BB24 clr R11
0008 0EC0 xjmp L5
000A L2:
000A .dbline 16
000A ; {
000A .dbline 17
000A ; for(j=0;j<1141;j++);
000A CC24 clr R12
000C DD24 clr R13
000E 03C0 xjmp L9
0010 L6:
0010 .dbline 17
0010 L7:
0010 .dbline 17
0010 C601 movw R24,R12
0012 0196 adiw R24,1
0014 6C01 movw R12,R24
0016 L9:
0016 .dbline 17
0016 C601 movw R24,R12
0018 8537 cpi R24,117
001A E4E0 ldi R30,4
001C 9E07 cpc R25,R30
001E C0F3 brlo L6
0020 X0:
0020 .dbline 18
0020 ; }
0020 L3:
0020 .dbline 15
0020 C501 movw R24,R10
0022 0196 adiw R24,1
0024 5C01 movw R10,R24
0026 L5:
0026 .dbline 15
0026 A016 cp R10,R16
0028 B106 cpc R11,R17
002A 78F3 brlo L2
002C X1:
002C .dbline -2
002C L1:
002C .dbline 0 ; func end
002C 0C940000 xjmp pop_xgset003C
0030 .dbsym r i 10 i
0030 .dbsym r j 12 i
0030 .dbsym r ms 16 i
0030 .dbend
0030 .dbfunc e write_com _write_com fV
0030 ; com -> R10
.even
0030 _write_com::
0030 AA92 st -y,R10
0032 A02E mov R10,R16
0034 .dbline -1
0034 .dbline 21
0034 ; }
0034 ; void write_com(uchar com)
0034 ; {
0034 .dbline 22
0034 ; PORTD&=~BIT(4);
0034 9498 cbi 0x12,4
0036 .dbline 23
0036 ; PORTD&=~BIT(5);
0036 9598 cbi 0x12,5
0038 .dbline 24
0038 ; PORTB=com;
0038 A8BA out 0x18,R10
003A .dbline 25
003A ; PORTD|=BIT(6);
003A 969A sbi 0x12,6
003C .dbline 26
003C ; delay(1);
003C 01E0 ldi R16,1
003E 10E0 ldi R17,0
0040 DFDF xcall _delay
0042 .dbline 27
0042 ; PORTD&=~BIT(6);
0042 9698 cbi 0x12,6
0044 .dbline -2
0044 L10:
0044 .dbline 0 ; func end
0044 A990 ld R10,y+
0046 0895 ret
0048 .dbsym r com 10 c
0048 .dbend
0048 .dbfunc e write_dat _write_dat fV
0048 ; dat -> R10
.even
0048 _write_dat::
0048 AA92 st -y,R10
004A A02E mov R10,R16
004C .dbline -1
004C .dbline 31
004C ; }
004C ;
004C ; void write_dat(uchar dat)
004C ; {
004C .dbline 32
004C ; PORTD|=BIT(4);
004C 949A sbi 0x12,4
004E .dbline 33
004E ; PORTD&=~BIT(5);
004E 9598 cbi 0x12,5
0050 .dbline 34
0050 ; PORTB=dat;
0050 A8BA out 0x18,R10
0052 .dbline 35
0052 ; PORTD|=BIT(6);
0052 969A sbi 0x12,6
0054 .dbline 36
0054 ; delay(1);
0054 01E0 ldi R16,1
0056 10E0 ldi R17,0
0058 D3DF xcall _delay
005A .dbline 37
005A ; PORTD&=~BIT(6);
005A 9698 cbi 0x12,6
005C .dbline -2
005C L11:
005C .dbline 0 ; func end
005C A990 ld R10,y+
005E 0895 ret
0060 .dbsym r dat 10 c
0060 .dbend
0060 .dbfunc e main _main fV
0060 ; i -> R10
.even
0060 _main::
0060 .dbline -1
0060 .dbline 41
0060 ;
0060 ; }
0060 ; void main()
0060 ; {
0060 .dbline 43
0060 ; uchar i;
0060 ; DDRB=0XFF;
0060 8FEF ldi R24,255
0062 87BB out 0x17,R24
0064 .dbline 44
0064 ; DDRD|=BIT(4)|BIT(5)|BIT(6);
0064 81B3 in R24,0x11
0066 8067 ori R24,112
0068 81BB out 0x11,R24
006A .dbline 45
006A ; PORTD&=~BIT(6);
006A 9698 cbi 0x12,6
006C .dbline 47
006C ;
006C ; write_com(0X38); //设置16*2显示 ,5*7点阵,8位数据接口
006C 08E3 ldi R16,56
006E E0DF xcall _write_com
0070 .dbline 48
0070 ; delay(5);
0070 05E0 ldi R16,5
0072 10E0 ldi R17,0
0074 C5DF xcall _delay
0076 75C0 xjmp L14
0078 L13:
0078 .dbline 50
0078 ; while(1)
0078 ; {
0078 .dbline 51
0078 ; write_com(0X01); //显示清屏
0078 01E0 ldi R16,1
007A DADF xcall _write_com
007C .dbline 52
007C ; delay(5);
007C 05E0 ldi R16,5
007E 10E0 ldi R17,0
0080 BFDF xcall _delay
0082 .dbline 53
0082 ; write_com(0X0C); //显示开关,光标设置
0082 0CE0 ldi R16,12
0084 D5DF xcall _write_com
0086 .dbline 54
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -