📄 1602.lis
字号:
.module _1602.c
.area text(rom, con, rel)
0000 .dbfile E:\AVR程序\OK\1602\1602.c
.area code(ram, con, rel)
0000 .dbfile E:\AVR程序\OK\1602\1602.c
.area lit(rom, con, rel)
0000 _table::
0000 49204C4F564520415652202100 .byte 'I,32,'L,'O,'V,'E,32,'A,'V,'R,32,33,0
000D .dbsym e table _table A[13:13]kc
000D _table1::
000D 7A68616E67207969202100 .byte 'z,'h,'a,'n,'g,32,'y,'i,32,33,0
0018 .dbsym e table1 _table1 A[11:11]kc
.area text(rom, con, rel)
0000 .dbfile E:\AVR程序\OK\1602\1602.c
0000 .dbfunc e delay _delay fV
0000 ; i -> R20,R21
0000 ; j -> R22,R23
0000 ; ms -> R16,R17
.even
0000 _delay::
0000 00D0 rcall push_xgsetF000
0002 .dbline -1
0002 .dbline 8
0002 ; #include"1602.h"
0002 ;
0002 ; #pragma data:code
0002 ; const uchar table[]="I LOVE AVR !"; //双引号是将这些字符转化成ASCII码
0002 ; const uchar table1[]="zhang yi !";
0002 ;
0002 ; void delay(uint ms)
0002 ; {
0002 .dbline 10
0002 ; uint i,j;
0002 ; for(i=0;i<ms;i++)
0002 4427 clr R20
0004 5527 clr R21
0006 0BC0 rjmp L5
0008 L2:
0008 .dbline 11
0008 ; {
0008 .dbline 12
0008 ; for(j=0;j<1141;j++);
0008 6627 clr R22
000A 7727 clr R23
000C 02C0 rjmp L9
000E L6:
000E .dbline 12
000E L7:
000E .dbline 12
000E 6F5F subi R22,255 ; offset = 1
0010 7F4F sbci R23,255
0012 L9:
0012 .dbline 12
0012 6537 cpi R22,117
0014 E4E0 ldi R30,4
0016 7E07 cpc R23,R30
0018 D0F3 brlo L6
001A X0:
001A .dbline 13
001A ; }
001A L3:
001A .dbline 10
001A 4F5F subi R20,255 ; offset = 1
001C 5F4F sbci R21,255
001E L5:
001E .dbline 10
001E 4017 cp R20,R16
0020 5107 cpc R21,R17
0022 90F3 brlo L2
0024 X1:
0024 .dbline -2
0024 L1:
0024 .dbline 0 ; func end
0024 00C0 rjmp pop_xgsetF000
0026 .dbsym r i 20 i
0026 .dbsym r j 22 i
0026 .dbsym r ms 16 i
0026 .dbend
0026 .dbfunc e write_com _write_com fV
0026 ; com -> R10
.even
0026 _write_com::
0026 AA92 st -y,R10
0028 A02E mov R10,R16
002A .dbline -1
002A .dbline 17
002A ; }
002A ;
002A ; void write_com(uchar com) //写指令
002A ; {
002A .dbline 18
002A ; CLR_RS_1602; //选择命令端
002A AD98 cbi 0x15,5
002C .dbline 19
002C ; CLR_RW_1602; //选择写端
002C AE98 cbi 0x15,6
002E .dbline 20
002E ; delay(1); //延时1ms
002E 01E0 ldi R16,1
0030 10E0 ldi R17,0
0032 E6DF rcall _delay
0034 .dbline 23
0034 ;
0034 ;
0034 ; SET_E_1602;
0034 AF9A sbi 0x15,7
0036 .dbline 24
0036 ; PORTA=com;
0036 ABBA out 0x1b,R10
0038 .dbline 25
0038 ; CLR_E_1602;
0038 AF98 cbi 0x15,7
003A .dbline -2
003A L10:
003A .dbline 0 ; func end
003A A990 ld R10,y+
003C 0895 ret
003E .dbsym r com 10 c
003E .dbend
003E .dbfunc e write_dat _write_dat fV
003E ; dat -> R10
.even
003E _write_dat::
003E AA92 st -y,R10
0040 A02E mov R10,R16
0042 .dbline -1
0042 .dbline 29
0042 ; }
0042 ;
0042 ; void write_dat(uchar dat) //写数据
0042 ; {
0042 .dbline 30
0042 ; SET_RS_1602; //选择数据端
0042 AD9A sbi 0x15,5
0044 .dbline 31
0044 ; CLR_RW_1602; //选择写端
0044 AE98 cbi 0x15,6
0046 .dbline 32
0046 ; delay(1); //延时1ms
0046 01E0 ldi R16,1
0048 10E0 ldi R17,0
004A DADF rcall _delay
004C .dbline 34
004C ;
004C ; SET_E_1602;
004C AF9A sbi 0x15,7
004E .dbline 35
004E ; PORTA=dat;
004E ABBA out 0x1b,R10
0050 .dbline 36
0050 ; CLR_E_1602;
0050 AF98 cbi 0x15,7
0052 .dbline -2
0052 L11:
0052 .dbline 0 ; func end
0052 A990 ld R10,y+
0054 0895 ret
0056 .dbsym r dat 10 c
0056 .dbend
0056 .dbfunc e LCD_init _LCD_init fV
.even
0056 _LCD_init::
0056 .dbline -1
0056 .dbline 41
0056 ;
0056 ; }
0056 ;
0056 ; void LCD_init()
0056 ; {
0056 .dbline 42
0056 ; write_com(0X38); //初始化设置,显示模式设置
0056 08E3 ldi R16,56
0058 E6DF rcall _write_com
005A .dbline 43
005A ; write_com(0X0C); //0X0C去光标
005A 0CE0 ldi R16,12
005C E4DF rcall _write_com
005E .dbline 44
005E ; write_com(0X06); //地址从左往右加1
005E 06E0 ldi R16,6
0060 E2DF rcall _write_com
0062 .dbline 45
0062 ; write_com(0X01);
0062 01E0 ldi R16,1
0064 E0DF rcall _write_com
0066 .dbline 46
0066 ; delay(5);
0066 05E0 ldi R16,5
0068 10E0 ldi R17,0
006A CADF rcall _delay
006C .dbline -2
006C L12:
006C .dbline 0 ; func end
006C 0895 ret
006E .dbend
006E .dbfunc e display _display fV
006E ; i -> R20
.even
006E _display::
006E 4A93 st -y,R20
0070 .dbline -1
0070 .dbline 49
0070 ; }
0070 ; void display()
0070 ; {
0070 .dbline 52
0070 ; /*******************第一行显示**********/
0070 ; uchar i;
0070 ; write_com(0X80+0X00);
0070 00E8 ldi R16,128
0072 D9DF rcall _write_com
0074 .dbline 53
0074 ; delay(5);
0074 05E0 ldi R16,5
0076 10E0 ldi R17,0
0078 C3DF rcall _delay
007A .dbline 54
007A ; for(i=0;i<12;i++)
007A 4427 clr R20
007C 0CC0 rjmp L17
007E L14:
007E .dbline 55
007E ; {
007E .dbline 56
007E ; write_dat(table[i]);
007E 80E0 ldi R24,<_table
0080 90E0 ldi R25,>_table
0082 E42F mov R30,R20
0084 FF27 clr R31
0086 E80F add R30,R24
0088 F91F adc R31,R25
008A 0491 lpm R16,Z
008C D8DF rcall _write_dat
008E .dbline 57
008E ; delay(5);
008E 05E0 ldi R16,5
0090 10E0 ldi R17,0
0092 B6DF rcall _delay
0094 .dbline 59
0094 ;
0094 ; }
0094 L15:
0094 .dbline 54
0094 4395 inc R20
0096 L17:
0096 .dbline 54
0096 4C30 cpi R20,12
0098 90F3 brlo L14
009A X2:
009A .dbline 62
009A ;
009A ; /******************第二行显示***************/
009A ; write_com(0X80+0X40);
009A 00EC ldi R16,192
009C C4DF rcall _write_com
009E .dbline 63
009E ; delay(5);
009E 05E0 ldi R16,5
00A0 10E0 ldi R17,0
00A2 AEDF rcall _delay
00A4 .dbline 64
00A4 ; for(i=0;i<10;i++)
00A4 4427 clr R20
00A6 0CC0 rjmp L21
00A8 L18:
00A8 .dbline 65
00A8 ; {
00A8 .dbline 66
00A8 ; write_dat(table1[i]);
00A8 80E0 ldi R24,<_table1
00AA 90E0 ldi R25,>_table1
00AC E42F mov R30,R20
00AE FF27 clr R31
00B0 E80F add R30,R24
00B2 F91F adc R31,R25
00B4 0491 lpm R16,Z
00B6 C3DF rcall _write_dat
00B8 .dbline 67
00B8 ; delay(5);
00B8 05E0 ldi R16,5
00BA 10E0 ldi R17,0
00BC A1DF rcall _delay
00BE .dbline 68
00BE ; }
00BE L19:
00BE .dbline 64
00BE 4395 inc R20
00C0 L21:
00C0 .dbline 64
00C0 4A30 cpi R20,10
00C2 90F3 brlo L18
00C4 X3:
00C4 .dbline 70
00C4 ;
00C4 ; for(i=0;i<15;i++)
00C4 4427 clr R20
00C6 06C0 rjmp L25
00C8 L22:
00C8 .dbline 71
00C8 ; {
00C8 .dbline 72
00C8 ; write_com(0x1C);
00C8 0CE1 ldi R16,28
00CA ADDF rcall _write_com
00CC .dbline 73
00CC ; delay(100);
00CC 04E6 ldi R16,100
00CE 10E0 ldi R17,0
00D0 97DF rcall _delay
00D2 .dbline 75
00D2 ;
00D2 ; }
00D2 L23:
00D2 .dbline 70
00D2 4395 inc R20
00D4 L25:
00D4 .dbline 70
00D4 4F30 cpi R20,15
00D6 C0F3 brlo L22
00D8 X4:
00D8 .dbline -2
00D8 L13:
00D8 .dbline 0 ; func end
00D8 4991 ld R20,y+
00DA 0895 ret
00DC .dbsym r i 20 c
00DC .dbend
00DC .dbfunc e main _main fV
.even
00DC _main::
00DC .dbline -1
00DC .dbline 78
00DC ; }
00DC ; void main()
00DC ; {
00DC .dbline 79
00DC ; DDRA=0XFF;
00DC 8FEF ldi R24,255
00DE 8ABB out 0x1a,R24
00E0 .dbline 80
00E0 ; DDRC|=BIT(5)|BIT(6)|BIT(7);
00E0 84B3 in R24,0x14
00E2 806E ori R24,224
00E4 84BB out 0x14,R24
00E6 .dbline 81
00E6 ; CLR_E_1602;
00E6 AF98 cbi 0x15,7
00E8 .dbline 85
00E8 ;
00E8 ;
00E8 ;
00E8 ; LCD_init();
00E8 B6DF rcall _LCD_init
00EA .dbline 86
00EA ; delay(20);
00EA 04E1 ldi R16,20
00EC 10E0 ldi R17,0
00EE 88DF rcall _delay
00F0 .dbline 89
00F0 ; //write_com(0x84);
00F0 ; //write_dat(0x34);
00F0 ; display();
00F0 BEDF rcall _display
00F2 .dbline -2
00F2 L26:
00F2 .dbline 0 ; func end
00F2 0895 ret
00F4 .dbend
00F4 ; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -