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

📄 test.lis

📁 较新的adc+lcd1602代码
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 01CE           ;              i -> R20
 01CE           ;            dat -> R20,R21
 01CE           ;              Y -> R12
 01CE           ;              X -> R10
                        .even
 01CE           _LCD_write_data::
 01CE 0E940000          xcall push_xgsetF03C
 01D2 C22E              mov R12,R18
 01D4 A02E              mov R10,R16
 01D6 2597              sbiw R28,5
 01D8 4D85              ldd R20,y+13
 01DA 5E85              ldd R21,y+14
 01DC                   .dbline -1
 01DC                   .dbline 138
 01DC           ; }
 01DC           ; 
 01DC           ; /*-------------------------------------------------------------
 01DC           ; 函数: 写数字
 01DC           ; 参数:列---X=0~15,行---Y=0~1 写地址
 01DC           ;       dat为所要写的数字
 01DC           ; ---------------------------------------------------------------*/
 01DC           ; void LCD_write_data(unsigned char X,unsigned char Y,int dat)
 01DC           ; {
 01DC                   .dbline 143
 01DC           ;  unsigned char fuhao;
 01DC           ;  unsigned char data[5];
 01DC           ;  unsigned char i;
 01DC           ;   
 01DC           ;  if(dat<0)
 01DC 4030              cpi R20,0
 01DE E0E0              ldi R30,0
 01E0 5E07              cpc R21,R30
 01E2 3CF4              brge L37
 01E4           X8:
 01E4                   .dbline 144
 01E4           ;  {
 01E4                   .dbline 145
 01E4           ;   fuhao='-';
 01E4 6DE2              ldi R22,45
 01E6                   .dbline 146
 01E6           ;   dat=0-dat;
 01E6 2224              clr R2
 01E8 3324              clr R3
 01EA 241A              sub R2,R20
 01EC 350A              sbc R3,R21
 01EE A101              movw R20,R2
 01F0                   .dbline 147
 01F0           ;  }
 01F0 01C0              xjmp L38
 01F2           L37:
 01F2                   .dbline 149
 01F2           ;  else
 01F2           ;   fuhao=' ';
 01F2 60E2              ldi R22,32
 01F4           L38:
 01F4                   .dbline 150
 01F4           ;  data[0]=fuhao;
 01F4 6883              std y+0,R22
 01F6                   .dbline 151
 01F6           ;  data[1]=dat/1000+0x30; dat%=1000;
 01F6 28EE              ldi R18,1000
 01F8 33E0              ldi R19,3
 01FA 8A01              movw R16,R20
 01FC 0E940000          xcall div16s
 0200 C801              movw R24,R16
 0202 C096              adiw R24,48
 0204 8983              std y+1,R24
 0206                   .dbline 151
 0206 28EE              ldi R18,1000
 0208 33E0              ldi R19,3
 020A 8A01              movw R16,R20
 020C 0E940000          xcall mod16s
 0210 A801              movw R20,R16
 0212                   .dbline 152
 0212           ;  data[2]=dat/100+0x30;  dat%=100;
 0212 24E6              ldi R18,100
 0214 30E0              ldi R19,0
 0216 0E940000          xcall div16s
 021A C801              movw R24,R16
 021C C096              adiw R24,48
 021E 8A83              std y+2,R24
 0220                   .dbline 152
 0220 24E6              ldi R18,100
 0222 30E0              ldi R19,0
 0224 8A01              movw R16,R20
 0226 0E940000          xcall mod16s
 022A A801              movw R20,R16
 022C                   .dbline 153
 022C           ;  data[3]=dat/10+0x30; 
 022C 2AE0              ldi R18,10
 022E 30E0              ldi R19,0
 0230 0E940000          xcall div16s
 0234 C801              movw R24,R16
 0236 C096              adiw R24,48
 0238 8B83              std y+3,R24
 023A                   .dbline 154
 023A           ;  data[4]=dat%10+0x30; 
 023A 2AE0              ldi R18,10
 023C 30E0              ldi R19,0
 023E 8A01              movw R16,R20
 0240 0E940000          xcall mod16s
 0244 C801              movw R24,R16
 0246 C096              adiw R24,48
 0248 8C83              std y+4,R24
 024A                   .dbline 156
 024A           ;  
 024A           ;  LCD_set_xy(X,Y);
 024A 2C2D              mov R18,R12
 024C 0A2D              mov R16,R10
 024E 21DF              xcall _LCD_set_xy
 0250                   .dbline 157
 0250           ;  for(i=0;i<5;i++)
 0250 4427              clr R20
 0252 0BC0              xjmp L46
 0254           L43:
 0254                   .dbline 158
 0254           ;   LCD_write_char(0,data[i]);
 0254 CE01              movw R24,R28
 0256 E42F              mov R30,R20
 0258 FF27              clr R31
 025A E80F              add R30,R24
 025C F91F              adc R31,R25
 025E 2081              ldd R18,z+0
 0260 3327              clr R19
 0262 0027              clr R16
 0264 1127              clr R17
 0266 2DDF              xcall _LCD_write_char
 0268           L44:
 0268                   .dbline 157
 0268 4395              inc R20
 026A           L46:
 026A                   .dbline 157
 026A 4530              cpi R20,5
 026C 98F3              brlo L43
 026E           X9:
 026E                   .dbline -2
 026E           L36:
 026E                   .dbline 0 ; func end
 026E 2596              adiw R28,5
 0270 0C940000          xjmp pop_xgsetF03C
 0274                   .dbsym r fuhao 22 c
 0274                   .dbsym l data 0 A[5:5]c
 0274                   .dbsym r i 20 c
 0274                   .dbsym r dat 20 I
 0274                   .dbsym r Y 12 c
 0274                   .dbsym r X 10 c
 0274                   .dbend
 0274                   .dbfunc e LCD_write_adc _LCD_write_adc fV
 0274           ;           data -> y+0
 0274           ;              i -> R20
 0274           ;            dat -> R14,R15
 0274           ;              Y -> R12
 0274           ;              X -> R10
                        .even
 0274           _LCD_write_adc::
 0274 0E940000          xcall push_xgset30FC
 0278 C22E              mov R12,R18
 027A A02E              mov R10,R16
 027C 2597              sbiw R28,5
 027E ED84              ldd R14,y+13
 0280 FE84              ldd R15,y+14
 0282                   .dbline -1
 0282                   .dbline 167
 0282           ; }
 0282           ; 
 0282           ; /*-------------------------------------------------------------
 0282           ; 函数: 写数字
 0282           ; 参数:列---X=0~15,行---Y=0~1 写地址
 0282           ;       dat为所要写的数字
 0282           ; ---------------------------------------------------------------*/
 0282           ; void LCD_write_adc(unsigned char X,unsigned char Y,int dat)
 0282           ; {
 0282                   .dbline 171
 0282           ;  unsigned char data[5];
 0282           ;  unsigned char i;
 0282           ; 
 0282           ;  dat*=4.928; 
 0282 00E0              ldi R16,<L48
 0284 10E0              ldi R17,>L48
 0286 0E940000          xcall lpm32
 028A 1801              movw R2,R16
 028C 2901              movw R4,R18
 028E 8701              movw R16,R14
 0290 0E940000          xcall int2fp
 0294 3A93              st -y,R19
 0296 2A93              st -y,R18
 0298 1A93              st -y,R17
 029A 0A93              st -y,R16
 029C 8101              movw R16,R2
 029E 9201              movw R18,R4
 02A0 0E940000          xcall fpmule2
 02A4 0E940000          xcall fpint
 02A8 7801              movw R14,R16
 02AA                   .dbline 172
 02AA           ;  data[0]=dat/1000+0x30; dat%=1000;
 02AA 28EE              ldi R18,1000
 02AC 33E0              ldi R19,3
 02AE 0E940000          xcall div16s
 02B2 C801              movw R24,R16
 02B4 C096              adiw R24,48
 02B6 8883              std y+0,R24
 02B8                   .dbline 172
 02B8 28EE              ldi R18,1000
 02BA 33E0              ldi R19,3
 02BC 8701              movw R16,R14
 02BE 0E940000          xcall mod16s
 02C2 7801              movw R14,R16
 02C4                   .dbline 173
 02C4           ;  data[1]='.';
 02C4 8EE2              ldi R24,46
 02C6 8983              std y+1,R24
 02C8                   .dbline 174
 02C8           ;  data[2]=dat/100+0x30;  dat%=100;
 02C8 24E6              ldi R18,100
 02CA 30E0              ldi R19,0
 02CC 0E940000          xcall div16s
 02D0 C801              movw R24,R16
 02D2 C096              adiw R24,48
 02D4 8A83              std y+2,R24
 02D6                   .dbline 174
 02D6 24E6              ldi R18,100
 02D8 30E0              ldi R19,0
 02DA 8701              movw R16,R14
 02DC 0E940000          xcall mod16s
 02E0 7801              movw R14,R16
 02E2                   .dbline 175
 02E2           ;  data[3]=dat/10+0x30;   
 02E2 2AE0              ldi R18,10
 02E4 30E0              ldi R19,0
 02E6 0E940000          xcall div16s
 02EA C801              movw R24,R16
 02EC C096              adiw R24,48
 02EE 8B83              std y+3,R24
 02F0                   .dbline 176
 02F0           ;  data[4]=dat%10+0x30; 
 02F0 2AE0              ldi R18,10
 02F2 30E0              ldi R19,0
 02F4 8701              movw R16,R14
 02F6 0E940000          xcall mod16s
 02FA C801              movw R24,R16
 02FC C096              adiw R24,48
 02FE 8C83              std y+4,R24
 0300                   .dbline 178
 0300           ;  
 0300           ;  LCD_set_xy(X,Y);
 0300 2C2D              mov R18,R12
 0302 0A2D              mov R16,R10
 0304 C6DE              xcall _LCD_set_xy
 0306                   .dbline 179
 0306           ;  for(i=0;i<5;i++)
 0306 4427              clr R20
 0308 0BC0              xjmp L56
 030A           L53:
 030A                   .dbline 180
 030A           ;   LCD_write_char(0,data[i]);
 030A CE01              movw R24,R28
 030C E42F              mov R30,R20
 030E FF27              clr R31
 0310 E80F              add R30,R24
 0312 F91F              adc R31,R25
 0314 2081              ldd R18,z+0
 0316 3327              clr R19
 0318 0027              clr R16
 031A 1127              clr R17
 031C D2DE              xcall _LCD_write_char
 031E           L54:
 031E                   .dbline 179
 031E 4395              inc R20
 0320           L56:
 0320                   .dbline 179
 0320 4530              cpi R20,5
 0322 98F3              brlo L53
 0324           X10:
 0324                   .dbline -2
 0324           L47:
 0324                   .dbline 0 ; func end
 0324 2596              adiw R28,5
 0326 0C940000          xjmp pop_xgset30FC
 032A                   .dbsym l data 0 A[5:5]c
 032A                   .dbsym r i 20 c
 032A                   .dbsym r dat 14 I
 032A                   .dbsym r Y 12 c
 032A                   .dbsym r X 10 c
 032A                   .dbend
 032A                   .dbfile D:\iccavr\mega16\11\10bit_adc\adc.h
 032A                   .dbfunc e adc_init _adc_init fV
 032A           ;    adc_channel -> R16
                        .even
 032A           _adc_init::
 032A                   .dbline -1
 032A                   .dbline 6
 032A           ; 
 032A           ; /******************************************************
 032A           ; **                  ADC转换初始化                    **
 032A           ; ******************************************************/
 032A           ; void adc_init(unsigned char adc_channel) 
 032A           ; { 
 032A                   .dbline 7
 032A           ;   PORTA&=~(BIT(PA0)|BIT(PA1));
 032A 8BB3              in R24,0x1b
 032C 8C7F              andi R24,252
 032E 8BBB              out 0x1b,R24
 0330                   .dbline 8

⌨️ 快捷键说明

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