📄 test.lis
字号:
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 + -