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