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

📄 adconv.lis

📁 使用mega16单片机进行片上自带的AD转换编程
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 0132 02E0              ldi R16,2
 0134 72DF              xcall _CLRS
 0136                   .dbline 81
 0136           ;         }
 0136 02C0              xjmp L32
 0138           L31:
 0138                   .dbline 83
 0138           ;         else
 0138           ;         {
 0138                   .dbline 84
 0138           ;           SETB(DIO);
 0138 02E0              ldi R16,2
 013A 62DF              xcall _SETB
 013C                   .dbline 85
 013C           ;         }
 013C           L32:
 013C                   .dbline 86
 013C           ;         SETB(CLK);
 013C 01E0              ldi R16,1
 013E 60DF              xcall _SETB
 0140                   .dbline 87
 0140           ;         wait=4;
 0140 84E0              ldi R24,4
 0142 C82E              mov R12,R24
 0144           L33:
 0144                   .dbline 88
 0144           L34:
 0144                   .dbline 88
 0144           ;         while(wait--);
 0144 2C2C              mov R2,R12
 0146 3324              clr R3
 0148 822D              mov R24,R2
 014A 8150              subi R24,1
 014C C82E              mov R12,R24
 014E 2220              tst R2
 0150 C9F7              brne L33
 0152                   .dbline 89
 0152           ;         CLRS(CLK);
 0152 01E0              ldi R16,1
 0154 62DF              xcall _CLRS
 0156                   .dbline 90
 0156           ;         wait=4;
 0156 84E0              ldi R24,4
 0158 C82E              mov R12,R24
 015A           L36:
 015A                   .dbline 91
 015A           L37:
 015A                   .dbline 91
 015A 2C2C              mov R2,R12
 015C 3324              clr R3
 015E 822D              mov R24,R2
 0160 8150              subi R24,1
 0162 C82E              mov R12,R24
 0164 2220              tst R2
 0166 C9F7              brne L36
 0168                   .dbline 92
 0168           L28:
 0168                   .dbline 74
 0168 0880              ldd R0,y+0
 016A 0394              inc R0
 016C 0882              std y+0,R0
 016E           L30:
 016E                   .dbline 74
 016E 8881              ldd R24,y+0
 0170 8830              cpi R24,8
 0172 C0F2              brlo L27
 0174                   .dbline 93
 0174           ;         while(wait--);
 0174           ;       }
 0174           ;   }
 0174           L5:
 0174                   .dbline 94
 0174           ;   SETB(CS);
 0174 0027              clr R16
 0176 44DF              xcall _SETB
 0178                   .dbline -2
 0178           L3:
 0178 2296              adiw R28,2
 017A 0E940000          xcall pop_gset5
 017E 2496              adiw R28,4
 0180                   .dbline 0 ; func end
 0180 0895              ret
 0182                   .dbsym l DataPos 1 c
 0182                   .dbsym r datanum 14 c
 0182                   .dbsym r cToDIO 20 c
 0182                   .dbsym r iToDIO 10 i
 0182                   .dbsym l num 0 c
 0182                   .dbsym r transdata 22 i
 0182                   .dbsym r wait 12 c
 0182                   .dbsym l position 14 c
 0182                   .dbsym l Data 12 c
 0182                   .dbend
 0182                   .dbfunc e ADC_Conv _ADC_Conv fi
 0182           ;          temp1 -> R18,R19
 0182           ;          temp2 -> R16,R17
                        .even
 0182           _ADC_Conv::
 0182                   .dbline -1
 0182                   .dbline 98
 0182           ; }
 0182           ; 
 0182           ; unsigned int ADC_Conv(void)
 0182           ; {
 0182                   .dbline 100
 0182           ;   unsigned int temp1,temp2;
 0182           ;   temp1=(unsigned int)ADCL;
 0182 24B1              in R18,0x4
 0184 3327              clr R19
 0186                   .dbline 101
 0186           ;   temp2=(unsigned int)ADCH;
 0186 05B1              in R16,0x5
 0188 1127              clr R17
 018A                   .dbline 102
 018A           ;   temp2=(temp2<<8)+temp1;
 018A 1801              movw R2,R16
 018C 322C              mov R3,R2
 018E 2224              clr R2
 0190 220E              add R2,R18
 0192 331E              adc R3,R19
 0194 8101              movw R16,R2
 0196                   .dbline 103
 0196           ;   return temp2;
 0196                   .dbline -2
 0196           L39:
 0196                   .dbline 0 ; func end
 0196 0895              ret
 0198                   .dbsym r temp1 18 i
 0198                   .dbsym r temp2 16 i
 0198                   .dbend
 0198                   .dbfunc e main _main fV
 0198           ;          total -> y+0
 0198           ;            num -> y+4
 0198           ;          count -> R12,R13
 0198           ;              j -> R14,R15
 0198           ;              i -> R10,R11
                        .even
 0198           _main::
 0198 2597              sbiw R28,5
 019A                   .dbline -1
 019A                   .dbline 108
 019A           ; }
 019A           ; 
 019A           ; 
 019A           ; void main()
 019A           ; {
 019A                   .dbline 111
 019A           ;     unsigned int count,i;
 019A           ;     unsigned int j;
 019A           ;     unsigned long total=0;
 019A 40E0              ldi R20,0
 019C 50E0              ldi R21,0
 019E 60E0              ldi R22,0
 01A0 70E0              ldi R23,0
 01A2 FE01              movw R30,R28
 01A4 4083              std z+0,R20
 01A6 5183              std z+1,R21
 01A8 6283              std z+2,R22
 01AA 7383              std z+3,R23
 01AC                   .dbline 112
 01AC           ;     unsigned char num=0;
 01AC 0024              clr R0
 01AE 0C82              std y+4,R0
 01B0                   .dbline 113
 01B0           ;     ADMUX=0x00;
 01B0 2224              clr R2
 01B2 27B8              out 0x7,R2
 01B4                   .dbline 114
 01B4           ;     ADCSRA=0xE6;
 01B4 86EE              ldi R24,230
 01B6 86B9              out 0x6,R24
 01B8                   .dbline 117
 01B8           ;     
 01B8           ;     
 01B8           ;     Display(0xA4,0xff);
 01B8 2FEF              ldi R18,255
 01BA 04EA              ldi R16,164
 01BC 3DDF              xcall _Display
 01BE 66C0              xjmp L42
 01C0           L41:
 01C0                   .dbline 119
 01C0           ;     while(1)
 01C0           ;     {
 01C0                   .dbline 121
 01C0           ;         
 01C0           ;         count=20000;
 01C0 80E2              ldi R24,20000
 01C2 9EE4              ldi R25,78
 01C4 6C01              movw R12,R24
 01C6           L44:
 01C6                   .dbline 122
 01C6           L45:
 01C6                   .dbline 122
 01C6           ;         while(count--);
 01C6 1601              movw R2,R12
 01C8 C101              movw R24,R2
 01CA 0197              sbiw R24,1
 01CC 6C01              movw R12,R24
 01CE 2220              tst R2
 01D0 D1F7              brne L44
 01D2 3320              tst R3
 01D4 C1F7              brne L44
 01D6           X3:
 01D6                   .dbline 123
 01D6           ;         i=ADC_Conv();
 01D6 D5DF              xcall _ADC_Conv
 01D8 5801              movw R10,R16
 01DA                   .dbline 124
 01DA           ;         total+=i;
 01DA 1501              movw R2,R10
 01DC 4424              clr R4
 01DE 5524              clr R5
 01E0 FE01              movw R30,R28
 01E2 6080              ldd R6,z+0
 01E4 7180              ldd R7,z+1
 01E6 8280              ldd R8,z+2
 01E8 9380              ldd R9,z+3
 01EA 620C              add R6,R2
 01EC 731C              adc R7,R3
 01EE 841C              adc R8,R4
 01F0 951C              adc R9,R5
 01F2 FE01              movw R30,R28
 01F4 6082              std z+0,R6
 01F6 7182              std z+1,R7
 01F8 8282              std z+2,R8
 01FA 9382              std z+3,R9
 01FC                   .dbline 125
 01FC           ;         num++;
 01FC 0C80              ldd R0,y+4
 01FE 0394              inc R0
 0200 0C82              std y+4,R0
 0202                   .dbline 126
 0202           ;         if(num>=10)
 0202 802D              mov R24,R0
 0204 8A30              cpi R24,10
 0206 08F4              brsh X6
 0208 41C0              xjmp L47
 020A           X6:
 020A                   .dbline 127
 020A           ;         {
 020A                   .dbline 128
 020A           ;             i=total/10;
 020A 4AE0              ldi R20,10
 020C 50E0              ldi R21,0
 020E 60E0              ldi R22,0
 0210 70E0              ldi R23,0
 0212 FE01              movw R30,R28
 0214 2080              ldd R2,z+0
 0216 3180              ldd R3,z+1
 0218 4280              ldd R4,z+2
 021A 5380              ldd R5,z+3
 021C 7A93              st -y,R23
 021E 6A93              st -y,R22
 0220 5A93              st -y,R21
 0222 4A93              st -y,R20
 0224 8101              movw R16,R2
 0226 9201              movw R18,R4
 0228 0E940000          xcall div32u
 022C 5801              movw R10,R16
 022E                   .dbline 129
 022E           ;             num=1;
 022E 0024              clr R0
 0230 0394              inc R0
 0232 0C82              std y+4,R0
 0234                   .dbline 130
 0234           ;             total=0;
 0234 40E0              ldi R20,0
 0236 50E0              ldi R21,0
 0238 60E0              ldi R22,0
 023A 70E0              ldi R23,0
 023C FE01              movw R30,R28
 023E 4083              std z+0,R20
 0240 5183              std z+1,R21
 0242 6283              std z+2,R22
 0244 7383              std z+3,R23
 0246                   .dbline 131
 0246           ;             for(j=0;j<4;j++)
 0246 EE24              clr R14
 0248 FF24              clr R15
 024A 1BC0              xjmp L52
 024C           L49:
 024C                   .dbline 132
 024C           ;             {
 024C                   .dbline 133
 024C           ;                Display(i%10,j+1);
 024C 2E2D              mov R18,R14
 024E 2F5F              subi R18,255  ; offset = 1
 0250 3F4F              sbci R19,255
 0252 8AE0              ldi R24,10
 0254 90E0              ldi R25,0
 0256 2F93              push R18
 0258 3F93              push R19
 025A 9C01              movw R18,R24
 025C 8501              movw R16,R10
 025E 0E940000          xcall mod16u
 0262 3F91              pop R19
 0264 2F91              pop R18
 0266 E8DE              xcall _Display
 0268                   .dbline 134
 0268           ;                if(i!=0)
 0268 AA20              tst R10
 026A 11F4              brne X4
 026C BB20              tst R11
 026E 31F0              breq L53
 0270           X4:
 0270                   .dbline 135
 0270           ;                {
 0270                   .dbline 136
 0270           ;                   i=i/10;
 0270 2AE0              ldi R18,10
 0272 30E0              ldi R19,0
 0274 8501              movw R16,R10
 0276 0E940000          xcall div16u
 027A 5801              movw R10,R16
 027C                   .dbline 137
 027C           ;                }
 027C           L53:
 027C                   .dbline 138
 027C           L50:
 027C                   .dbline 131
 027C C701              movw R24,R14
 027E 0196              adiw R24,1
 0280 7C01              movw R14,R24
 0282           L52:
 0282                   .dbline 131
 0282 C701              movw R24,R14
 0284 8430              cpi R24,4
 0286 E0E0              ldi R30,0
 0288 9E07              cpc R25,R30
 028A 00F3              brlo L49
 028C                   .dbline 139
 028C           ;             }
 028C           ;         }
 028C           L47:
 028C                   .dbline 140
 028C           L42:
 028C                   .dbline 118
 028C 99CF              xjmp L41
 028E           X5:
 028E                   .dbline -2
 028E           L40:
 028E 2596              adiw R28,5
 0290                   .dbline 0 ; func end
 0290 0895              ret
 0292                   .dbsym l total 0 l
 0292                   .dbsym l num 4 c
 0292                   .dbsym r count 12 i
 0292                   .dbsym r j 14 i
 0292                   .dbsym r i 10 i
 0292                   .dbend

⌨️ 快捷键说明

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