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

📄 main.lis

📁 基于M16的字符液晶1602的驱动
💻 LIS
字号:
                        .module main.c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\avr\1602测试程序\main.c
 0000                   .dbfunc e init_devices _init_devices fV
                        .even
 0000           _init_devices::
 0000                   .dbline -1
 0000                   .dbline 6
 0000           ; #include <iom16v.h>
 0000           ; #include "lcd.h"
 0000           ; #include "delay.h"
 0000           ; 
 0000           ; void init_devices( void )
 0000           ; {
 0000                   .dbline 7
 0000           ;        LCD_init();
 0000 0E940000          xcall _LCD_init
 0004                   .dbline -2
 0004           L1:
 0004                   .dbline 0 ; func end
 0004 0895              ret
 0006                   .dbend
 0006                   .dbfunc e main _main fV
 0006           ;          tmp_f -> y+9
 0006           ;              i -> y+5
                        .even
 0006           _main::
 0006 2D97              sbiw R28,13
 0008                   .dbline -1
 0008                   .dbline 11
 0008           ; }
 0008           ; 
 0008           ; void main( void )
 0008           ; {
 0008                   .dbline 12
 0008           ;        long int i = 0;
 0008 40E0              ldi R20,0
 000A 50E0              ldi R21,0
 000C 60E0              ldi R22,0
 000E 70E0              ldi R23,0
 0010 4D83              std y+5,R20
 0012 5E83              std y+6,R21
 0014 6F83              std y+7,R22
 0016 7887              std y+8,R23
 0018                   .dbline 13
 0018           ;        float tmp_f = 0.00;     
 0018 00E0              ldi R16,<L3
 001A 10E0              ldi R17,>L3
 001C 0E940000          xcall lpm32
 0020 0987              std y+9,R16
 0022 1A87              std y+10,R17
 0024 2B87              std y+11,R18
 0026 3C87              std y+12,R19
 0028                   .dbline 14
 0028           ;        init_devices();             //目标版初始化
 0028 EBDF              xcall _init_devices
 002A                   .dbline 16
 002A           ;       
 002A           ;        LCD_write_string( 1, 4, "TEST LCD" );     //写字符串
 002A 80E0              ldi R24,<L4
 002C 90E0              ldi R25,>L4
 002E 9983              std y+1,R25
 0030 8883              std y+0,R24
 0032 24E0              ldi R18,4
 0034 01E0              ldi R16,1
 0036 0E940000          xcall _LCD_write_string
 003A                   .dbline 17
 003A           ;        delay_ns( 1 );  //延时1S
 003A 01E0              ldi R16,1
 003C 0E940000          xcall _delay_ns
 0040                   .dbline 18
 0040           ;        LCD_write_string( 1, 0, "                        " );   //清第一行数据
 0040 80E0              ldi R24,<L5
 0042 90E0              ldi R25,>L5
 0044 9983              std y+1,R25
 0046 8883              std y+0,R24
 0048 2227              clr R18
 004A 01E0              ldi R16,1
 004C 0E940000          xcall _LCD_write_string
 0050                   .dbline 20
 0050           ;        
 0050           ;        for( i = 0; i < 1234; i++ )        //显示整数,小数
 0050 40E0              ldi R20,0
 0052 50E0              ldi R21,0
 0054 60E0              ldi R22,0
 0056 70E0              ldi R23,0
 0058 4D83              std y+5,R20
 005A 5E83              std y+6,R21
 005C 6F83              std y+7,R22
 005E 7887              std y+8,R23
 0060           L6:
 0060                   .dbline 21
 0060           ;        {
 0060                   .dbline 22
 0060           ;                 LCD_write_datalongint( 2, 1, i ); //显示正整数 i
 0060 2D80              ldd R2,y+5
 0062 3E80              ldd R3,y+6
 0064 4F80              ldd R4,y+7
 0066 5884              ldd R5,y+8
 0068 2882              std y+0,R2
 006A 3982              std y+1,R3
 006C 4A82              std y+2,R4
 006E 5B82              std y+3,R5
 0070 21E0              ldi R18,1
 0072 02E0              ldi R16,2
 0074 0E940000          xcall _LCD_write_datalongint
 0078                   .dbline 23
 0078           ;                 LCD_write_datalongint( 1, 0, i*(-1) ); //显示负整数 -i
 0078 2D80              ldd R2,y+5
 007A 3E80              ldd R3,y+6
 007C 4F80              ldd R4,y+7
 007E 5884              ldd R5,y+8
 0080 4FEF              ldi R20,255
 0082 5FEF              ldi R21,255
 0084 6FEF              ldi R22,255
 0086 7FEF              ldi R23,255
 0088 5A92              st -y,R5
 008A 4A92              st -y,R4
 008C 3A92              st -y,R3
 008E 2A92              st -y,R2
 0090 8A01              movw R16,R20
 0092 9B01              movw R18,R22
 0094 0E940000          xcall empy32s
 0098 0883              std y+0,R16
 009A 1983              std y+1,R17
 009C 2A83              std y+2,R18
 009E 3B83              std y+3,R19
 00A0 2227              clr R18
 00A2 01E0              ldi R16,1
 00A4 0E940000          xcall _LCD_write_datalongint
 00A8                   .dbline 24
 00A8           ;                 delay_nms( 10 );
 00A8 0AE0              ldi R16,10
 00AA 10E0              ldi R17,0
 00AC 0E940000          xcall _delay_nms
 00B0                   .dbline 26
 00B0           ;                 
 00B0           ;                 tmp_f = 1.234 * i;
 00B0 00E0              ldi R16,<L10
 00B2 10E0              ldi R17,>L10
 00B4 0E940000          xcall lpm32
 00B8 1801              movw R2,R16
 00BA 2901              movw R4,R18
 00BC 0D81              ldd R16,y+5
 00BE 1E81              ldd R17,y+6
 00C0 2F81              ldd R18,y+7
 00C2 3885              ldd R19,y+8
 00C4 0E940000          xcall long2fp
 00C8 3A93              st -y,R19
 00CA 2A93              st -y,R18
 00CC 1A93              st -y,R17
 00CE 0A93              st -y,R16
 00D0 8101              movw R16,R2
 00D2 9201              movw R18,R4
 00D4 0E940000          xcall fpmule2
 00D8 0987              std y+9,R16
 00DA 1A87              std y+10,R17
 00DC 2B87              std y+11,R18
 00DE 3C87              std y+12,R19
 00E0                   .dbline 27
 00E0           ;                 LCD_write_datafloat( 2, 8, tmp_f, 2 );  //显示正浮点数tmp_f, 小数位2位
 00E0 82E0              ldi R24,2
 00E2 8C83              std y+4,R24
 00E4 2984              ldd R2,y+9
 00E6 3A84              ldd R3,y+10
 00E8 4B84              ldd R4,y+11
 00EA 5C84              ldd R5,y+12
 00EC 2882              std y+0,R2
 00EE 3982              std y+1,R3
 00F0 4A82              std y+2,R4
 00F2 5B82              std y+3,R5
 00F4 28E0              ldi R18,8
 00F6 02E0              ldi R16,2
 00F8 0E940000          xcall _LCD_write_datafloat
 00FC                   .dbline 28
 00FC           ;                 LCD_write_datafloat( 1, 7, tmp_f*(-1), 2 );  //显示负浮点数-tmp_f, 小数位2位
 00FC 82E0              ldi R24,2
 00FE 8C83              std y+4,R24
 0100 00E0              ldi R16,<L11
 0102 10E0              ldi R17,>L11
 0104 0E940000          xcall lpm32
 0108 CE01              movw R24,R28
 010A 0996              adiw R24,9
 010C 9A93              st -y,R25
 010E 8A93              st -y,R24
 0110 0E940000          xcall fpmule1
 0114 0883              std y+0,R16
 0116 1983              std y+1,R17
 0118 2A83              std y+2,R18
 011A 3B83              std y+3,R19
 011C 27E0              ldi R18,7
 011E 01E0              ldi R16,1
 0120 0E940000          xcall _LCD_write_datafloat
 0124                   .dbline 30
 0124           ;                 
 0124           ;                 if( i == 1233 ) 
 0124 41ED              ldi R20,209
 0126 54E0              ldi R21,4
 0128 60E0              ldi R22,0
 012A 70E0              ldi R23,0
 012C 2D80              ldd R2,y+5
 012E 3E80              ldd R3,y+6
 0130 4F80              ldd R4,y+7
 0132 5884              ldd R5,y+8
 0134 2416              cp R2,R20
 0136 3506              cpc R3,R21
 0138 4606              cpc R4,R22
 013A 5706              cpc R5,R23
 013C C1F4              brne L12
 013E           X0:
 013E                   .dbline 31
 013E           ;                 {
 013E                   .dbline 32
 013E           ;                         LCD_write_string( 1, 0, "                        " );   //清第一行数据
 013E 80E0              ldi R24,<L5
 0140 90E0              ldi R25,>L5
 0142 9983              std y+1,R25
 0144 8883              std y+0,R24
 0146 2227              clr R18
 0148 01E0              ldi R16,1
 014A 0E940000          xcall _LCD_write_string
 014E                   .dbline 33
 014E           ;                         LCD_write_string( 2, 0, "                        " );   //清第二行数据
 014E 80E0              ldi R24,<L5
 0150 90E0              ldi R25,>L5
 0152 9983              std y+1,R25
 0154 8883              std y+0,R24
 0156 2227              clr R18
 0158 02E0              ldi R16,2
 015A 0E940000          xcall _LCD_write_string
 015E                   .dbline 34
 015E           ;                         i = 0;
 015E 40E0              ldi R20,0
 0160 50E0              ldi R21,0
 0162 60E0              ldi R22,0
 0164 70E0              ldi R23,0
 0166 4D83              std y+5,R20
 0168 5E83              std y+6,R21
 016A 6F83              std y+7,R22
 016C 7887              std y+8,R23
 016E                   .dbline 35
 016E           ;             }
 016E           L12:
 016E                   .dbline 36
 016E           ;        }
 016E           L7:
 016E                   .dbline 20
 016E 41E0              ldi R20,1
 0170 50E0              ldi R21,0
 0172 60E0              ldi R22,0
 0174 70E0              ldi R23,0
 0176 2D80              ldd R2,y+5
 0178 3E80              ldd R3,y+6
 017A 4F80              ldd R4,y+7
 017C 5884              ldd R5,y+8
 017E 240E              add R2,R20
 0180 351E              adc R3,R21
 0182 461E              adc R4,R22
 0184 571E              adc R5,R23
 0186 2D82              std y+5,R2
 0188 3E82              std y+6,R3
 018A 4F82              std y+7,R4
 018C 5886              std y+8,R5
 018E                   .dbline 20
 018E 42ED              ldi R20,210
 0190 54E0              ldi R21,4
 0192 60E0              ldi R22,0
 0194 70E0              ldi R23,0
 0196 2D80              ldd R2,y+5
 0198 3E80              ldd R3,y+6
 019A 4F80              ldd R4,y+7
 019C 5884              ldd R5,y+8
 019E 2416              cp R2,R20
 01A0 3506              cpc R3,R21
 01A2 4606              cpc R4,R22
 01A4 5706              cpc R5,R23
 01A6 0CF4              brge X2
 01A8 5BCF              xjmp L6
 01AA           X2:
 01AA           X1:
 01AA                   .dbline -2
 01AA           L2:
 01AA                   .dbline 0 ; func end
 01AA 2D96              adiw R28,13
 01AC 0895              ret
 01AE                   .dbsym l tmp_f 9 D
 01AE                   .dbsym l i 5 L
 01AE                   .dbend
                        .area lit(rom, con, rel)
 0000           L11:
 0000 000080BF          .word 0x0,0xbf80
 0004           L10:
 0004 B6F39D3F          .word 0xf3b6,0x3f9d
                        .area data(ram, con, rel)
 0000                   .dbfile E:\avr\1602测试程序\main.c
 0000           L5:
 0000                   .blkb 25
                        .area idata
 0000 20202020202020202020202020202020  .byte 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32
 0010 202020202020202000        .byte 32,32,32,32,32,32,32,32,0
                        .area data(ram, con, rel)
 0019                   .dbfile E:\avr\1602测试程序\main.c
 0019           L4:
 0019                   .blkb 9
                        .area idata
 0019 54455354204C434400        .byte 'T,'E,'S,'T,32,'L,'C,'D,0
                        .area data(ram, con, rel)
 0022                   .dbfile E:\avr\1602测试程序\main.c
                        .area lit(rom, con, rel)
 0008           L3:
 0008 00000000          .word 0x0,0x0
 000C           ; }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -