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

📄 adconv.lis

📁 使用mega16单片机进行片上自带的AD转换编程
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 010C 89E1              ldi R24,25
 010E C82E              mov R12,R24
 0110           L24:
 0110                   .dbline 73
 0110           L25:
 0110                   .dbline 73
 0110           ;       while(wait--);
 0110 2C2C              mov R2,R12
 0112 3324              clr R3
 0114 822D              mov R24,R2
 0116 8150              subi R24,1
 0118 C82E              mov R12,R24
 011A 2220              tst R2
 011C C9F7              brne L24
 011E                   .dbline 74
 011E           ;       for(num=0;num<8;num++)
 011E 0024              clr R0
 0120 0882              std y+0,R0
 0122 25C0              xjmp L30
 0124           L27:
 0124                   .dbline 75
 0124           ;       {
 0124                   .dbline 76
 0124           ;         cToDIO=Data&0x80;
 0124 4C85              ldd R20,y+12
 0126 4078              andi R20,128
 0128                   .dbline 77
 0128           ;         Data=Data<<1;
 0128 2C84              ldd R2,y+12
 012A 220C              lsl R2
 012C 2C86              std y+12,R2
 012E                   .dbline 78
 012E           ;         if(cToDIO==0x00)
 012E 4423              tst R20
 0130 19F4              brne L31
 0132                   .dbline 79
 0132           ;         {
 0132                   .dbline 80
 0132           ;           CLRS(DIO);
 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
                        .even
 0198           _main::
 0198                   .dbline -1
 0198                   .dbline 109
 0198           ; }
 0198           ; 
 0198           ; unsigned int count,i;
 0198           ; unsigned int j;
 0198           ; void main()
 0198           ; {
 0198                   .dbline 110
 0198           ;   ADMUX=0x00;
 0198 2224              clr R2
 019A 27B8              out 0x7,R2
 019C                   .dbline 111
 019C           ;   ADCSRA=0xE6;
 019C 86EE              ldi R24,230
 019E 86B9              out 0x6,R24
 01A0                   .dbline 113
 01A0           ; 
 01A0           ;   Display(0xA4,0xff);
 01A0 2FEF              ldi R18,255
 01A2 04EA              ldi R16,164
 01A4 49DF              xcall _Display
 01A6 57C0              xjmp L42
 01A8           L41:
 01A8                   .dbline 115
 01A8           ;   while(1)
 01A8           ;   {
 01A8                   .dbline 116
 01A8           ;     count=20000;
 01A8 80E2              ldi R24,20000
 01AA 9EE4              ldi R25,78
 01AC 90930500          sts _count+1,R25
 01B0 80930400          sts _count,R24
 01B4           L44:
 01B4                   .dbline 117
 01B4           L45:
 01B4                   .dbline 117
 01B4           ;     while(count--);
 01B4 20900400          lds R2,_count
 01B8 30900500          lds R3,_count+1
 01BC C101              movw R24,R2
 01BE 0197              sbiw R24,1
 01C0 90930500          sts _count+1,R25
 01C4 80930400          sts _count,R24
 01C8 2220              tst R2
 01CA A1F7              brne L44
 01CC 3320              tst R3
 01CE 91F7              brne L44
 01D0           X3:
 01D0                   .dbline 118
 01D0           ;     i=ADC_Conv();
 01D0 D8DF              xcall _ADC_Conv
 01D2 10930300          sts _i+1,R17
 01D6 00930200          sts _i,R16
 01DA                   .dbline 119
 01DA           ;     for(j=0;j<4;j++)
 01DA 2224              clr R2
 01DC 3324              clr R3
 01DE 30920100          sts _j+1,R3
 01E2 20920000          sts _j,R2
 01E6 2FC0              xjmp L50
 01E8           L47:
 01E8                   .dbline 120
 01E8           ;     {
 01E8                   .dbline 121
 01E8           ;       Display(i%10,j+1);
 01E8 20910000          lds R18,_j
 01EC 2F5F              subi R18,255  ; offset = 1
 01EE 3F4F              sbci R19,255
 01F0 8AE0              ldi R24,10
 01F2 90E0              ldi R25,0
 01F4 00910200          lds R16,_i
 01F8 10910300          lds R17,_i+1
 01FC 2F93              push R18
 01FE 3F93              push R19
 0200 9C01              movw R18,R24
 0202 0E940000          xcall mod16u
 0206 3F91              pop R19
 0208 2F91              pop R18
 020A 16DF              xcall _Display
 020C                   .dbline 122
 020C           ;       if(i!=0)
 020C 20900200          lds R2,_i
 0210 30900300          lds R3,_i+1
 0214 2220              tst R2
 0216 11F4              brne X4
 0218 3320              tst R3
 021A 61F0              breq L51
 021C           X4:
 021C                   .dbline 123
 021C           ;         {
 021C                   .dbline 124
 021C           ;           i=i/10;
 021C 2AE0              ldi R18,10
 021E 30E0              ldi R19,0
 0220 00910200          lds R16,_i
 0224 10910300          lds R17,_i+1
 0228 0E940000          xcall div16u
 022C 10930300          sts _i+1,R17
 0230 00930200          sts _i,R16
 0234                   .dbline 125
 0234           ;         }
 0234           L51:
 0234                   .dbline 126
 0234           L48:
 0234                   .dbline 119
 0234 80910000          lds R24,_j
 0238 90910100          lds R25,_j+1
 023C 0196              adiw R24,1
 023E 90930100          sts _j+1,R25
 0242 80930000          sts _j,R24
 0246           L50:
 0246                   .dbline 119
 0246 80910000          lds R24,_j
 024A 90910100          lds R25,_j+1
 024E 8430              cpi R24,4
 0250 E0E0              ldi R30,0
 0252 9E07              cpc R25,R30
 0254 48F2              brlo L47
 0256                   .dbline 127
 0256           L42:
 0256                   .dbline 114
 0256 A8CF              xjmp L41
 0258           X5:
 0258                   .dbline -2
 0258           L40:
 0258                   .dbline 0 ; func end
 0258 0895              ret
 025A                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile D:\单片机编程\iccavr\AD转换\ADCONV.c
 0000           _j::
 0000                   .blkb 2
 0002                   .dbsym e j _j i
 0002           _i::
 0002                   .blkb 2
 0004                   .dbsym e i _i i
 0004           _count::
 0004                   .blkb 2
 0006                   .dbsym e count _count i

⌨️ 快捷键说明

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