⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1602.lis

📁 用AVRmega8515编写的lcd1602显示程序
💻 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 + -