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

📄 test.lis

📁 较新的adc+lcd1602代码
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 00B8           ;  delay_nus(5);
 00B8 05E0              ldi R16,5
 00BA 10E0              ldi R17,0
 00BC A3DF              xcall _delay_nus
 00BE                   .dbline 68
 00BE           ;  LCD_EN_PORT&=~LCD_EN;
 00BE AB98              cbi 0x15,3
 00C0                   .dbline -2
 00C0           L19:
 00C0                   .dbline 0 ; func end
 00C0 0895              ret
 00C2                   .dbend
 00C2                   .dbfunc e LCD_write_char _LCD_write_char fV
 00C2           ;      data_temp -> R22,R23
 00C2           ;   command_temp -> R20,R21
 00C2           ;           data -> R12,R13
 00C2           ;        command -> R10,R11
                        .even
 00C2           _LCD_write_char::
 00C2 0E940000          xcall push_xgsetF03C
 00C6 6901              movw R12,R18
 00C8 5801              movw R10,R16
 00CA                   .dbline -1
 00CA                   .dbline 76
 00CA           ; }
 00CA           ; /*------------------------------------------------------------
 00CA           ; 函数: 写命令或数据到lcd1602
 00CA           ; 参数:command: 0---写数据, 1---写命令
 00CA           ;       data: 所要写的命令或数据
 00CA           ; *-------------------------------------------------------------*/
 00CA           ; void LCD_write_char(unsigned command,unsigned data) 
 00CA           ; {
 00CA                   .dbline 78
 00CA           ;  unsigned command_temp,data_temp;
 00CA           ;  command_temp=command;
 00CA A501              movw R20,R10
 00CC                   .dbline 79
 00CC           ;  data_temp=data;
 00CC B601              movw R22,R12
 00CE                   .dbline 80
 00CE           ;  delay_nus(25);
 00CE 09E1              ldi R16,25
 00D0 10E0              ldi R17,0
 00D2 98DF              xcall _delay_nus
 00D4                   .dbline 81
 00D4           ;  if(command==0)
 00D4 4030              cpi R20,0
 00D6 4507              cpc R20,R21
 00D8 11F5              brne L21
 00DA           X4:
 00DA                   .dbline 82
 00DA           ;  {
 00DA                   .dbline 83
 00DA           ;   LCD_RS_PORT|=LCD_RS; //RS=1
 00DA AA9A              sbi 0x15,2
 00DC                   .dbline 84
 00DC           ;   LCD_DATA_PORT&=0X0f;
 00DC 85B3              in R24,0x15
 00DE 8F70              andi R24,15
 00E0 85BB              out 0x15,R24
 00E2                   .dbline 85
 00E2           ;   LCD_DATA_PORT|=data_temp&0xf0; //写高四位
 00E2 CB01              movw R24,R22
 00E4 807F              andi R24,240
 00E6 9070              andi R25,0
 00E8 25B2              in R2,0x15
 00EA 3324              clr R3
 00EC 282A              or R2,R24
 00EE 392A              or R3,R25
 00F0 25BA              out 0x15,R2
 00F2                   .dbline 86
 00F2           ;   LCD_en_write();
 00F2 E1DF              xcall _LCD_en_write
 00F4                   .dbline 87
 00F4           ;   data_temp=data_temp<<4; 
 00F4 660F              lsl R22
 00F6 771F              rol R23
 00F8 660F              lsl R22
 00FA 771F              rol R23
 00FC 660F              lsl R22
 00FE 771F              rol R23
 0100 660F              lsl R22
 0102 771F              rol R23
 0104                   .dbline 88
 0104           ;   LCD_DATA_PORT&=0X0f;
 0104 85B3              in R24,0x15
 0106 8F70              andi R24,15
 0108 85BB              out 0x15,R24
 010A                   .dbline 89
 010A           ;   LCD_DATA_PORT|=data_temp&0xf0; //写低四位
 010A CB01              movw R24,R22
 010C 807F              andi R24,240
 010E 9070              andi R25,0
 0110 25B2              in R2,0x15
 0112 3324              clr R3
 0114 282A              or R2,R24
 0116 392A              or R3,R25
 0118 25BA              out 0x15,R2
 011A                   .dbline 90
 011A           ;   LCD_en_write();
 011A CDDF              xcall _LCD_en_write
 011C                   .dbline 91
 011C           ;  }
 011C 21C0              xjmp L22
 011E           L21:
 011E                   .dbline 93
 011E           ;  else
 011E           ;  {
 011E                   .dbline 94
 011E           ;   LCD_RS_PORT&=~LCD_RS; //RS=0
 011E AA98              cbi 0x15,2
 0120                   .dbline 95
 0120           ;   LCD_DATA_PORT&=0X0f;
 0120 85B3              in R24,0x15
 0122 8F70              andi R24,15
 0124 85BB              out 0x15,R24
 0126                   .dbline 96
 0126           ;   LCD_DATA_PORT|=command_temp&0xf0; //写高四位
 0126 CA01              movw R24,R20
 0128 807F              andi R24,240
 012A 9070              andi R25,0
 012C 25B2              in R2,0x15
 012E 3324              clr R3
 0130 282A              or R2,R24
 0132 392A              or R3,R25
 0134 25BA              out 0x15,R2
 0136                   .dbline 97
 0136           ;   LCD_en_write();
 0136 BFDF              xcall _LCD_en_write
 0138                   .dbline 98
 0138           ;   command_temp=command_temp<<4;
 0138 440F              lsl R20
 013A 551F              rol R21
 013C 440F              lsl R20
 013E 551F              rol R21
 0140 440F              lsl R20
 0142 551F              rol R21
 0144 440F              lsl R20
 0146 551F              rol R21
 0148                   .dbline 99
 0148           ;   LCD_DATA_PORT&=0x0f;
 0148 85B3              in R24,0x15
 014A 8F70              andi R24,15
 014C 85BB              out 0x15,R24
 014E                   .dbline 100
 014E           ;   LCD_DATA_PORT|=command_temp&0xf0; //写低四位
 014E CA01              movw R24,R20
 0150 807F              andi R24,240
 0152 9070              andi R25,0
 0154 25B2              in R2,0x15
 0156 3324              clr R3
 0158 282A              or R2,R24
 015A 392A              or R3,R25
 015C 25BA              out 0x15,R2
 015E                   .dbline 101
 015E           ;   LCD_en_write();
 015E ABDF              xcall _LCD_en_write
 0160                   .dbline 102
 0160           ;  }
 0160           L22:
 0160                   .dbline -2
 0160           L20:
 0160                   .dbline 0 ; func end
 0160 0C940000          xjmp pop_xgsetF03C
 0164                   .dbsym r data_temp 22 i
 0164                   .dbsym r command_temp 20 i
 0164                   .dbsym r data 12 i
 0164                   .dbsym r command 10 i
 0164                   .dbend
 0164                   .dbfunc e clear _clear fV
 0164           ;              i -> R20
                        .even
 0164           _clear::
 0164 4A93              st -y,R20
 0166                   .dbline -1
 0166                   .dbline 108
 0166           ; }
 0166           ; /*-------------------------------------------------------------
 0166           ; 函数: 清屏lcd1602
 0166           ; ---------------------------------------------------------------*/
 0166           ; void clear(void)
 0166           ; {
 0166                   .dbline 110
 0166           ;  unsigned char i;
 0166           ;  LCD_set_xy(0,0);
 0166 2227              clr R18
 0168 0027              clr R16
 016A 93DF              xcall _LCD_set_xy
 016C                   .dbline 111
 016C           ;  for(i=0;i<16;i++)
 016C 4427              clr R20
 016E 06C0              xjmp L27
 0170           L24:
 0170                   .dbline 112
 0170           ;  LCD_write_char(0,' ');
 0170 20E2              ldi R18,32
 0172 30E0              ldi R19,0
 0174 0027              clr R16
 0176 1127              clr R17
 0178 A4DF              xcall _LCD_write_char
 017A           L25:
 017A                   .dbline 111
 017A 4395              inc R20
 017C           L27:
 017C                   .dbline 111
 017C 4031              cpi R20,16
 017E C0F3              brlo L24
 0180           X5:
 0180                   .dbline 113
 0180           ;  LCD_set_xy(0,1);
 0180 21E0              ldi R18,1
 0182 0027              clr R16
 0184 86DF              xcall _LCD_set_xy
 0186                   .dbline 114
 0186           ;  for(i=0;i<16;i++)
 0186 4427              clr R20
 0188 06C0              xjmp L31
 018A           L28:
 018A                   .dbline 115
 018A           ;  LCD_write_char(0,' ');
 018A 20E2              ldi R18,32
 018C 30E0              ldi R19,0
 018E 0027              clr R16
 0190 1127              clr R17
 0192 97DF              xcall _LCD_write_char
 0194           L29:
 0194                   .dbline 114
 0194 4395              inc R20
 0196           L31:
 0196                   .dbline 114
 0196 4031              cpi R20,16
 0198 C0F3              brlo L28
 019A           X6:
 019A                   .dbline -2
 019A           L23:
 019A                   .dbline 0 ; func end
 019A 4991              ld R20,y+
 019C 0895              ret
 019E                   .dbsym r i 20 c
 019E                   .dbend
 019E                   .dbfunc e LCD_write_string _LCD_write_string fV
 019E           ;              s -> R20,R21
 019E           ;              Y -> R12
 019E           ;              X -> R10
                        .even
 019E           _LCD_write_string::
 019E 0E940000          xcall push_xgset303C
 01A2 C22E              mov R12,R18
 01A4 A02E              mov R10,R16
 01A6 4E81              ldd R20,y+6
 01A8 5F81              ldd R21,y+7
 01AA                   .dbline -1
 01AA                   .dbline 123
 01AA           ; }
 01AA           ; /*-------------------------------------------------------------
 01AA           ; 函数: 写字符串
 01AA           ; 参数:列---X=0~15,行---Y=0~1 写地址
 01AA           ;       s为所要写的字符串
 01AA           ; ---------------------------------------------------------------*/
 01AA           ; void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s) 
 01AA           ; {
 01AA                   .dbline 124
 01AA           ;  LCD_set_xy(X,Y);   
 01AA 2C2D              mov R18,R12
 01AC 0A2D              mov R16,R10
 01AE 71DF              xcall _LCD_set_xy
 01B0 08C0              xjmp L34
 01B2           L33:
 01B2                   .dbline 126
 01B2           ;  while(*s)  
 01B2           ;  {
 01B2                   .dbline 127
 01B2           ;   LCD_write_char(0,*s);
 01B2 FA01              movw R30,R20
 01B4 2081              ldd R18,z+0
 01B6 3327              clr R19
 01B8 0027              clr R16
 01BA 1127              clr R17
 01BC 82DF              xcall _LCD_write_char
 01BE                   .dbline 128
 01BE           ;   s++;
 01BE 4F5F              subi R20,255  ; offset = 1
 01C0 5F4F              sbci R21,255
 01C2                   .dbline 129
 01C2           ;  }
 01C2           L34:
 01C2                   .dbline 125
 01C2 FA01              movw R30,R20
 01C4 2080              ldd R2,z+0
 01C6 2220              tst R2
 01C8 A1F7              brne L33
 01CA           X7:
 01CA                   .dbline -2
 01CA           L32:
 01CA                   .dbline 0 ; func end
 01CA 0C940000          xjmp pop_xgset303C
 01CE                   .dbsym r s 20 pc
 01CE                   .dbsym r Y 12 c
 01CE                   .dbsym r X 10 c
 01CE                   .dbend
 01CE                   .dbfunc e LCD_write_data _LCD_write_data fV
 01CE           ;          fuhao -> R22
 01CE           ;           data -> y+0

⌨️ 快捷键说明

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