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

📄 m128.lis

📁 ewts avr驱动程序 角速度传感器 104为秒
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 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 + -