📄 m128.lis
字号:
0108 82E0 ldi R24,2
010A 849F mul R24,R20
010C F001 movw R30,R0
010E 80E0 ldi R24,<_Adc
0110 90E0 ldi R25,>_Adc
0112 E80F add R30,R24
0114 F91F adc R31,R25
0116 2080 ldd R2,z+0
0118 3180 ldd R3,z+1
011A 2A14 cp R2,R10
011C 3B04 cpc R3,R11
011E 68F4 brsh L19
0120 82E0 ldi R24,2
0122 849F mul R24,R20
0124 F001 movw R30,R0
0126 80E0 ldi R24,<_Adc
0128 90E0 ldi R25,>_Adc
012A E80F add R30,R24
012C F91F adc R31,R25
012E 2080 ldd R2,z+0
0130 3180 ldd R3,z+1
0132 B501 movw R22,R10
0134 6219 sub R22,R2
0136 7309 sbc R23,R3
0138 0BC0 xjmp L20
013A L19:
013A 82E0 ldi R24,2
013C 849F mul R24,R20
013E F001 movw R30,R0
0140 80E0 ldi R24,<_Adc
0142 90E0 ldi R25,>_Adc
0144 E80F add R30,R24
0146 F91F adc R31,R25
0148 6081 ldd R22,z+0
014A 7181 ldd R23,z+1
014C 6A19 sub R22,R10
014E 7B09 sbc R23,R11
0150 L20:
0150 .dbline 82
0150 ; Adc[n]=k>5 ? tmp:Adc[n] ;
0150 85E0 ldi R24,5
0152 8617 cp R24,R22
0154 10F4 brsh L21
0156 B501 movw R22,R10
0158 09C0 xjmp L22
015A L21:
015A 82E0 ldi R24,2
015C 849F mul R24,R20
015E F001 movw R30,R0
0160 80E0 ldi R24,<_Adc
0162 90E0 ldi R25,>_Adc
0164 E80F add R30,R24
0166 F91F adc R31,R25
0168 6081 ldd R22,z+0
016A 7181 ldd R23,z+1
016C L22:
016C 82E0 ldi R24,2
016E 849F mul R24,R20
0170 F001 movw R30,R0
0172 80E0 ldi R24,<_Adc
0174 90E0 ldi R25,>_Adc
0176 E80F add R30,R24
0178 F91F adc R31,R25
017A 7183 std z+1,R23
017C 6083 std z+0,R22
017E .dbline 83
017E ; return Adc[n] ;
017E 82E0 ldi R24,2
0180 849F mul R24,R20
0182 F001 movw R30,R0
0184 80E0 ldi R24,<_Adc
0186 90E0 ldi R25,>_Adc
0188 E80F add R30,R24
018A F91F adc R31,R25
018C 0081 ldd R16,z+0
018E 1181 ldd R17,z+1
0190 .dbline -2
0190 L14:
0190 0E940000 xcall pop_gset4
0194 .dbline 0 ; func end
0194 0895 ret
0196 .dbsym r k 22 c
0196 .dbsym r i 12 c
0196 .dbsym r tmp 10 i
0196 .dbsym r n 20 c
0196 .dbend
0196 .dbfunc e AdcValPro _AdcValPro fI
0196 ; dat0 -> R20
0196 ; dat1 -> R22
0196 ; val -> R10,R11
0196 ; n -> R20
.even
0196 _AdcValPro::
0196 0E940000 xcall push_gset3
019A 402F mov R20,R16
019C .dbline -1
019C .dbline 87
019C ; }
019C ;
019C ; int AdcValPro(uchar n)
019C ; {//返回第N个ADC的值从0到7
019C .dbline 90
019C ; uchar dat1,dat0 ;
019C ; int val ;
019C ; DDRA &=~BIT(n) ; //设置对应的ADC口为输入
019C 01E0 ldi R16,1
019E 142F mov R17,R20
01A0 0E940000 xcall lsl8
01A4 202E mov R2,R16
01A6 2094 com R2
01A8 3AB2 in R3,0x1a
01AA 3220 and R3,R2
01AC 3ABA out 0x1a,R3
01AE .dbline 91
01AE ; PORTA &=~BIT(n) ;
01AE 01E0 ldi R16,1
01B0 142F mov R17,R20
01B2 0E940000 xcall lsl8
01B6 202E mov R2,R16
01B8 2094 com R2
01BA 3BB2 in R3,0x1b
01BC 3220 and R3,R2
01BE 3BBA out 0x1b,R3
01C0 .dbline 92
01C0 ; ADMUX=0x40+n ; //选择AVCC,选择第N个ADC
01C0 842F mov R24,R20
01C2 805C subi R24,192 ; addi 64
01C4 87B9 out 0x7,R24
01C6 .dbline 93
01C6 ; ADCSRA=0xc0 ; //允许转换ADEN,ADSC
01C6 80EC ldi R24,192
01C8 86B9 out 0x6,R24
01CA L24:
01CA .dbline 94
01CA L25:
01CA .dbline 94
01CA ; while(ADCSRA & BIT(ADSC)) ; //
01CA 3699 sbic 0x6,6
01CC FECF rjmp L24
01CE .dbline 95
01CE ; dat1=ADCH ;
01CE 65B1 in R22,0x5
01D0 .dbline 96
01D0 ; dat0=ADCL ;
01D0 44B1 in R20,0x4
01D2 .dbline 97
01D2 ; val=ADCH*256+ADCL ;
01D2 25B1 in R18,0x5
01D4 3327 clr R19
01D6 00E0 ldi R16,256
01D8 11E0 ldi R17,1
01DA 0E940000 xcall empy16s
01DE 5801 movw R10,R16
01E0 24B0 in R2,0x4
01E2 3324 clr R3
01E4 A20C add R10,R2
01E6 B31C adc R11,R3
01E8 .dbline 98
01E8 ; ADCSRA=0x00 ;
01E8 2224 clr R2
01EA 26B8 out 0x6,R2
01EC .dbline 99
01EC ; return val ;
01EC 8501 movw R16,R10
01EE .dbline -2
01EE L23:
01EE 0E940000 xcall pop_gset3
01F2 .dbline 0 ; func end
01F2 0895 ret
01F4 .dbsym r dat0 20 c
01F4 .dbsym r dat1 22 c
01F4 .dbsym r val 10 I
01F4 .dbsym r n 20 c
01F4 .dbend
01F4 .dbfunc e ShowNum _ShowNum fV
01F4 ; i -> R20
01F4 ; num -> R22,R23
01F4 ; addr -> R10
.even
01F4 _ShowNum::
01F4 0E940000 xcall push_gset3
01F8 B901 movw R22,R18
01FA A02E mov R10,R16
01FC .dbline -1
01FC .dbline 103
01FC ; }
01FC ;
01FC ; void ShowNum(uchar addr,uint num) //在addr处显示数字num
01FC ; {//将num转化成五个BCD码存放在全局数组BCD[5]中
01FC .dbline 105
01FC ; uchar i ;
01FC ; for(i=5 ;i>0 ;i--) //将NUM数据转化成ASCII码,如521会转化为00521
01FC 45E0 ldi R20,5
01FE 15C0 xjmp L31
0200 L28:
0200 .dbline 106
0200 .dbline 107
0200 2AE0 ldi R18,10
0202 30E0 ldi R19,0
0204 8B01 movw R16,R22
0206 0E940000 xcall mod16u
020A C801 movw R24,R16
020C C096 adiw R24,48
020E E0E0 ldi R30,<_BCD-1
0210 F0E0 ldi R31,>_BCD-1
0212 A42F mov R26,R20
0214 BB27 clr R27
0216 AE0F add R26,R30
0218 BF1F adc R27,R31
021A 8C93 st x,R24
021C .dbline 108
021C 2AE0 ldi R18,10
021E 30E0 ldi R19,0
0220 8B01 movw R16,R22
0222 0E940000 xcall div16u
0226 B801 movw R22,R16
0228 .dbline 109
0228 L29:
0228 .dbline 105
0228 4A95 dec R20
022A L31:
022A .dbline 105
022A 2224 clr R2
022C 2416 cp R2,R20
022E 40F3 brlo L28
0230 .dbline 110
0230 ; {
0230 ; BCD[i-1]=(uchar)(num%10+0x30) ; //取出最低位
0230 ; num/=10 ; //去掉最低位
0230 ; }
0230 ; i=0 ;
0230 4427 clr R20
0232 .dbline 112
0232 ; // while(BCD ==0x30 && i<4) BCD[i++]=' ' ; //NUM转换成数组存放,但还没有加上小数点
0232 ; BCD[5]='\0' ;
0232 20920B00 sts _BCD+5,R2
0236 .dbline 113
0236 ; DisText(addr,BCD+1) ;
0236 20E0 ldi R18,<_BCD+1
0238 30E0 ldi R19,>_BCD+1
023A 0A2D mov R16,R10
023C 03D0 xcall _DisText
023E .dbline -2
023E L27:
023E 0E940000 xcall pop_gset3
0242 .dbline 0 ; func end
0242 0895 ret
0244 .dbsym r i 20 c
0244 .dbsym r num 22 i
0244 .dbsym r addr 10 c
0244 .dbend
0244 .dbfunc e DisText _DisText fV
0244 ; p -> R20,R21
0244 ; addr -> R22
.even
0244 _DisText::
0244 0E940000 xcall push_gset2
0248 A901 movw R20,R18
024A 602F mov R22,R16
024C .dbline -1
024C .dbline 117
024C ; }
024C ;
024C ; void DisText(uchar addr,uchar *p)
024C ; {
024C .dbline 118
024C ; WrOp(addr) ;
024C 062F mov R16,R22
024E 3BD0 xcall _WrOp
0250 04C0 xjmp L37
0252 L36:
0252 .dbline 119
0252 FA01 movw R30,R20
0254 0191 ld R16,Z+
0256 AF01 movw R20,R30
0258 48D0 xcall _WrDat
025A L37:
025A .dbline 119
025A ; while(*p !='\0')WrDat(*(p++)) ;
025A FA01 movw R30,R20
025C 2080 ldd R2,z+0
025E 2220 tst R2
0260 C1F7 brne L36
0262 .dbline -2
0262 L35:
0262 0E940000 xcall pop_gset2
0266 .dbline 0 ; func end
0266 0895 ret
0268 .dbsym r p 20 pc
0268 .dbsym r addr 22 c
0268 .dbend
0268 .dbfunc e DisTextConst _DisTextConst fV
0268 ; p -> R20,R21
0268 ; addr -> R22
.even
0268 _DisTextConst::
0268 0E940000 xcall push_gset2
026C A901 movw R20,R18
026E 602F mov R22,R16
0270 .dbline -1
0270 .dbline 123
0270 ; }
0270 ;
0270 ; void DisTextConst(uchar addr,uchar const *p)
0270 ; {
0270 .dbline 124
0270 ; WrOp(addr) ;
0270 062F mov R16,R22
0272 29D0 xcall _WrOp
0274 06C0 xjmp L41
0276 L40:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -