1602.lis

来自「AVR M16单片机AD转换测试程序」· LIS 代码 · 共 505 行 · 第 1/2 页

LIS
505
字号
 00C6           ;   LCD_en_write();
 00C6 E1DF              xcall _LCD_en_write
 00C8                   .dbline 68
 00C8           ;   data_temp=data_temp<<4;  
 00C8 660F              lsl R22
 00CA 771F              rol R23
 00CC 660F              lsl R22
 00CE 771F              rol R23
 00D0 660F              lsl R22
 00D2 771F              rol R23
 00D4 660F              lsl R22
 00D6 771F              rol R23
 00D8                   .dbline 69
 00D8           ;   LCD_DATA_PORT&=0X0f;
 00D8 88B3              in R24,0x18
 00DA 8F70              andi R24,15
 00DC 88BB              out 0x18,R24
 00DE                   .dbline 70
 00DE           ;   LCD_DATA_PORT|=data_temp&0xf0;   //写低四位
 00DE CB01              movw R24,R22
 00E0 807F              andi R24,240
 00E2 9070              andi R25,0
 00E4 28B2              in R2,0x18
 00E6 3324              clr R3
 00E8 282A              or R2,R24
 00EA 392A              or R3,R25
 00EC 28BA              out 0x18,R2
 00EE                   .dbline 71
 00EE           ;   LCD_en_write();
 00EE CDDF              xcall _LCD_en_write
 00F0                   .dbline 72
 00F0           ;  }
 00F0 21C0              xjmp L12
 00F2           L11:
 00F2                   .dbline 74
 00F2                   .dbline 75
 00F2 AE98              cbi 0x15,6
 00F4                   .dbline 76
 00F4 88B3              in R24,0x18
 00F6 8F70              andi R24,15
 00F8 88BB              out 0x18,R24
 00FA                   .dbline 77
 00FA CA01              movw R24,R20
 00FC 807F              andi R24,240
 00FE 9070              andi R25,0
 0100 28B2              in R2,0x18
 0102 3324              clr R3
 0104 282A              or R2,R24
 0106 392A              or R3,R25
 0108 28BA              out 0x18,R2
 010A                   .dbline 78
 010A BFDF              xcall _LCD_en_write
 010C                   .dbline 79
 010C 440F              lsl R20
 010E 551F              rol R21
 0110 440F              lsl R20
 0112 551F              rol R21
 0114 440F              lsl R20
 0116 551F              rol R21
 0118 440F              lsl R20
 011A 551F              rol R21
 011C                   .dbline 80
 011C 88B3              in R24,0x18
 011E 8F70              andi R24,15
 0120 88BB              out 0x18,R24
 0122                   .dbline 81
 0122 CA01              movw R24,R20
 0124 807F              andi R24,240
 0126 9070              andi R25,0
 0128 28B2              in R2,0x18
 012A 3324              clr R3
 012C 282A              or R2,R24
 012E 392A              or R3,R25
 0130 28BA              out 0x18,R2
 0132                   .dbline 82
 0132 ABDF              xcall _LCD_en_write
 0134                   .dbline 83
 0134           L12:
 0134                   .dbline -2
 0134           L10:
 0134 0E940000          xcall pop_gset4
 0138                   .dbline 0 ; func end
 0138 0895              ret
 013A                   .dbsym r data_temp 22 i
 013A                   .dbsym r command_temp 20 i
 013A                   .dbsym r data 12 i
 013A                   .dbsym r command 10 i
 013A                   .dbend
 013A                   .dbfunc e delay_1us _delay_1us fV
                        .even
 013A           _delay_1us::
 013A                   .dbline -1
 013A                   .dbline 107
 013A           ;  else
 013A           ;  {
 013A           ;   LCD_RS_PORT&=~LCD_RS;   //RS=0
 013A           ;   LCD_DATA_PORT&=0X0f;
 013A           ;   LCD_DATA_PORT|=command_temp&0xf0; //写高四位
 013A           ;   LCD_en_write();
 013A           ;   command_temp=command_temp<<4;
 013A           ;   LCD_DATA_PORT&=0x0f;
 013A           ;   LCD_DATA_PORT|=command_temp&0xf0;  //写低四位
 013A           ;   LCD_en_write();
 013A           ;   }
 013A           ; }
 013A           ; /*void main(void)
 013A           ; {
 013A           ;      DDRA|=LCD_DATA;   // 数据为输出
 013A           ;        DDRC|=LCD_RS|LCD_EN;  //置位RS.EN
 013A           ;      LCD_init();
 013A           ;      for(;;)    //for循环
 013A           ;        {
 013A           ;            LCD_write_char(0x01,0);
 013A           ;                delay_nms(2);
 013A           ;          LCD_write_string(0,0,"Wellcome");
 013A           ;          LCD_write_string(0,1,"www.OURAVR.com!");
 013A           ;          delay_nms(5000);
 013A           ;          LCD_write_string(0,0,"happy new year!");
 013A           ;          LCD_write_string(0,1,"amork:everfriend");
 013A           ;          delay_nms(5000);
 013A           ;        }
 013A           ; }*/
 013A           ;    /*-----------------------------------------------------------------------
 013A           ; 延时函数
 013A           ; 系统时钟:8M
 013A           ; -----------------------------------------------------------------------*/
 013A           ; void delay_1us(void)                 //1us延时函数
 013A           ;   {
 013A                   .dbline 108
 013A           ;    asm("nop");
 013A 0000              nop
 013C                   .dbline -2
 013C           L13:
 013C                   .dbline 0 ; func end
 013C 0895              ret
 013E                   .dbend
 013E                   .dbfunc e delay_nus _delay_nus fV
 013E           ;              i -> R20,R21
 013E           ;              n -> R22,R23
                        .even
 013E           _delay_nus::
 013E 0E940000          xcall push_gset2
 0142 B801              movw R22,R16
 0144                   .dbline -1
 0144                   .dbline 112
 0144           ;   }
 0144           ; 
 0144           ; void delay_nus(unsigned int n)       //N us延时函数
 0144           ;   {
 0144                   .dbline 113
 0144           ;    unsigned int i=0;
 0144 4427              clr R20
 0146 5527              clr R21
 0148                   .dbline 114
 0148           ;    for (i=0;i<n;i++)
 0148 03C0              xjmp L18
 014A           L15:
 014A                   .dbline 115
 014A F7DF              xcall _delay_1us
 014C           L16:
 014C                   .dbline 114
 014C 4F5F              subi R20,255  ; offset = 1
 014E 5F4F              sbci R21,255
 0150           L18:
 0150                   .dbline 114
 0150 4617              cp R20,R22
 0152 5707              cpc R21,R23
 0154 D0F3              brlo L15
 0156                   .dbline -2
 0156           L14:
 0156 0E940000          xcall pop_gset2
 015A                   .dbline 0 ; func end
 015A 0895              ret
 015C                   .dbsym r i 20 i
 015C                   .dbsym r n 22 i
 015C                   .dbend
 015C                   .dbfunc e delay_1ms _delay_1ms fV
 015C           ;              i -> R16,R17
                        .even
 015C           _delay_1ms::
 015C                   .dbline -1
 015C                   .dbline 119
 015C           ;    delay_1us();
 015C           ;   }
 015C           ;   
 015C           ; void delay_1ms(void)                 //1ms延时函数
 015C           ;   {
 015C                   .dbline 121
 015C 0027              clr R16
 015E 1127              clr R17
 0160 02C0              xjmp L23
 0162           L20:
 0162                   .dbline 121
 0162           L21:
 0162                   .dbline 121
 0162 0F5F              subi R16,255  ; offset = 1
 0164 1F4F              sbci R17,255
 0166           L23:
 0166                   .dbline 121
 0166           ;    unsigned int i;
 0166           ;    for (i=0;i<1140;i++);
 0166 0437              cpi R16,116
 0168 E4E0              ldi R30,4
 016A 1E07              cpc R17,R30
 016C D0F3              brlo L20
 016E                   .dbline -2
 016E           L19:
 016E                   .dbline 0 ; func end
 016E 0895              ret
 0170                   .dbsym r i 16 i
 0170                   .dbend
 0170                   .dbfunc e delay_nms _delay_nms fV
 0170           ;              i -> R20,R21
 0170           ;              n -> R22,R23
                        .even
 0170           _delay_nms::
 0170 0E940000          xcall push_gset2
 0174 B801              movw R22,R16
 0176                   .dbline -1
 0176                   .dbline 125
 0176           ;   }
 0176           ;   
 0176           ; void delay_nms(unsigned int n)       //N ms延时函数
 0176           ;   {
 0176                   .dbline 126
 0176           ;    unsigned int i=0;
 0176 4427              clr R20
 0178 5527              clr R21
 017A                   .dbline 127
 017A           ;    for (i=0;i<n;i++)
 017A 03C0              xjmp L28
 017C           L25:
 017C                   .dbline 128
 017C EFDF              xcall _delay_1ms
 017E           L26:
 017E                   .dbline 127
 017E 4F5F              subi R20,255  ; offset = 1
 0180 5F4F              sbci R21,255
 0182           L28:
 0182                   .dbline 127
 0182 4617              cp R20,R22
 0184 5707              cpc R21,R23
 0186 D0F3              brlo L25
 0188                   .dbline -2
 0188           L24:
 0188 0E940000          xcall pop_gset2
 018C                   .dbline 0 ; func end
 018C 0895              ret
 018E                   .dbsym r i 20 i
 018E                   .dbsym r n 22 i
 018E                   .dbend

⌨️ 快捷键说明

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