📄 ac10-1.lis
字号:
0122 .dbline 53
0122 E0E0 ldi R30,<_ACT+2
0124 F0E0 ldi R31,>_ACT+2
0126 E491 lpm R30,Z
0128 E5BB out 0x15,R30
012A .dbline 53
012A 13C0 xjmp L9
012C L16:
012C .dbline 54
012C 28EE ldi R18,1000
012E 33E0 ldi R19,3
0130 00910200 lds R16,_dis_val
0134 10910300 lds R17,_dis_val+1
0138 0E940000 xcall div16u
013C F801 movw R30,R16
013E 80E0 ldi R24,<_SEG7
0140 90E0 ldi R25,>_SEG7
0142 E80F add R30,R24
0144 F91F adc R31,R25
0146 E491 lpm R30,Z
0148 EBBB out 0x1b,R30
014A .dbline 54
014A E0E0 ldi R30,<_ACT+3
014C F0E0 ldi R31,>_ACT+3
014E E491 lpm R30,Z
0150 E5BB out 0x15,R30
0152 .dbline 54
0152 .dbline 55
0152 L9:
0152 .dbline -2
0152 L5:
0152 0E940000 xcall pop_gset1
0156 2990 ld R2,y+
0158 2FBE out 0x3f,R2
015A F991 ld R31,y+
015C E991 ld R30,y+
015E 9991 ld R25,y+
0160 8991 ld R24,y+
0162 3991 ld R19,y+
0164 2991 ld R18,y+
0166 1991 ld R17,y+
0168 0991 ld R16,y+
016A 2990 ld R2,y+
016C .dbline 0 ; func end
016C 1895 reti
016E .dbend
016E .dbfunc e ADC_Convert _ADC_Convert fi
016E ; temp1 -> R18,R19
016E ; temp2 -> R16,R17
.even
016E _ADC_Convert::
016E .dbline -1
016E .dbline 60
016E ; case 3:PORTA=SEG7[dis_val/1000];PORTC=ACT[3];break;
016E ; default:break;
016E ; }
016E ; }
016E ; //=========================
016E ; uint ADC_Convert(void)
016E ; {uint temp1,temp2;
016E .dbline 61
016E ; temp1=(uint)ADCL;
016E 24B1 in R18,0x4
0170 3327 clr R19
0172 .dbline 62
0172 ; temp2=(uint)ADCH;
0172 05B1 in R16,0x5
0174 1127 clr R17
0176 .dbline 63
0176 ; temp2=(temp2<<8)+temp1;
0176 1801 movw R2,R16
0178 322C mov R3,R2
017A 2224 clr R2
017C 220E add R2,R18
017E 331E adc R3,R19
0180 8101 movw R16,R2
0182 .dbline 64
0182 ; return(temp2);
0182 .dbline -2
0182 L18:
0182 .dbline 0 ; func end
0182 0895 ret
0184 .dbsym r temp1 18 i
0184 .dbsym r temp2 16 i
0184 .dbend
0184 .dbfunc e conv _conv fi
0184 ; y -> R10,R11
0184 ; x -> y+0
0184 ; i -> R10,R11
.even
0184 _conv::
0184 0E940000 xcall push_gset3
0188 5801 movw R10,R16
018A 2497 sbiw R28,4
018C .dbline -1
018C .dbline 68
018C ; }
018C ; /**************************/
018C ; uint conv(uint i)
018C ; {
018C .dbline 71
018C ; long x;
018C ; uint y;
018C ; x=(5000*(long)i)/1023;
018C 1501 movw R2,R10
018E 4424 clr R4
0190 5524 clr R5
0192 48E8 ldi R20,136
0194 53E1 ldi R21,19
0196 60E0 ldi R22,0
0198 70E0 ldi R23,0
019A 5A92 st -y,R5
019C 4A92 st -y,R4
019E 3A92 st -y,R3
01A0 2A92 st -y,R2
01A2 8A01 movw R16,R20
01A4 9B01 movw R18,R22
01A6 0E940000 xcall empy32s
01AA 4FEF ldi R20,255
01AC 53E0 ldi R21,3
01AE 60E0 ldi R22,0
01B0 70E0 ldi R23,0
01B2 7A93 st -y,R23
01B4 6A93 st -y,R22
01B6 5A93 st -y,R21
01B8 4A93 st -y,R20
01BA 0E940000 xcall div32s
01BE FE01 movw R30,R28
01C0 0083 std z+0,R16
01C2 1183 std z+1,R17
01C4 2283 std z+2,R18
01C6 3383 std z+3,R19
01C8 .dbline 72
01C8 ; y=(uint)x;
01C8 FE01 movw R30,R28
01CA A080 ldd R10,z+0
01CC B180 ldd R11,z+1
01CE .dbline 73
01CE ; return y;
01CE 8501 movw R16,R10
01D0 .dbline -2
01D0 L19:
01D0 2496 adiw R28,4
01D2 0E940000 xcall pop_gset3
01D6 .dbline 0 ; func end
01D6 0895 ret
01D8 .dbsym r y 10 i
01D8 .dbsym l x 0 L
01D8 .dbsym r i 10 i
01D8 .dbend
01D8 .dbfunc e delay _delay fV
01D8 ; i -> R20,R21
01D8 ; j -> R22,R23
01D8 ; k -> R16,R17
.even
01D8 _delay::
01D8 0E940000 xcall push_gset2
01DC .dbline -1
01DC .dbline 77
01DC ; }
01DC ; /***********************/
01DC ; void delay(uint k)
01DC ; {
01DC .dbline 79
01DC ; uint i,j;
01DC ; for(i=0;i<k;i++)
01DC 4427 clr R20
01DE 5527 clr R21
01E0 0BC0 xjmp L24
01E2 L21:
01E2 .dbline 80
01E2 ; {
01E2 .dbline 81
01E2 6627 clr R22
01E4 7727 clr R23
01E6 02C0 xjmp L28
01E8 L25:
01E8 .dbline 81
01E8 L26:
01E8 .dbline 81
01E8 6F5F subi R22,255 ; offset = 1
01EA 7F4F sbci R23,255
01EC L28:
01EC .dbline 81
01EC 6C38 cpi R22,140
01EE E0E0 ldi R30,0
01F0 7E07 cpc R23,R30
01F2 D0F3 brlo L25
01F4 .dbline 82
01F4 L22:
01F4 .dbline 79
01F4 4F5F subi R20,255 ; offset = 1
01F6 5F4F sbci R21,255
01F8 L24:
01F8 .dbline 79
01F8 4017 cp R20,R16
01FA 5107 cpc R21,R17
01FC 90F3 brlo L21
01FE .dbline -2
01FE L20:
01FE 0E940000 xcall pop_gset2
0202 .dbline 0 ; func end
0202 0895 ret
0204 .dbsym r i 20 i
0204 .dbsym r j 22 i
0204 .dbsym r k 16 i
0204 .dbend
0204 .dbfunc e main _main fV
.even
0204 _main::
0204 .dbline -1
0204 .dbline 86
0204 ; for(j=0;j<140;j++);
0204 ; }
0204 ; }
0204 ; /***********************/
0204 ; void main(void)
0204 ; {
0204 .dbline 87
0204 ; init_devices();
0204 14DF xcall _init_devices
0206 15C0 xjmp L31
0208 L30:
0208 .dbline 89
0208 ; while(1)
0208 ; {
0208 .dbline 90
0208 ; if(cnt>100)
0208 84E6 ldi R24,100
020A 20900000 lds R2,_cnt
020E 8215 cp R24,R2
0210 68F4 brsh L33
0212 .dbline 91
0212 ; {
0212 .dbline 92
0212 ; adc_val=ADC_Convert();
0212 ADDF xcall _ADC_Convert
0214 10930500 sts _adc_val+1,R17
0218 00930400 sts _adc_val,R16
021C .dbline 93
021C ; dis_val=conv(adc_val);
021C B3DF xcall _conv
021E 10930300 sts _dis_val+1,R17
0222 00930200 sts _dis_val,R16
0226 .dbline 94
0226 ; cnt=0;
0226 2224 clr R2
0228 20920000 sts _cnt,R2
022C .dbline 95
022C ; }
022C L33:
022C .dbline 96
022C 0AE0 ldi R16,10
022E 10E0 ldi R17,0
0230 D3DF xcall _delay
0232 .dbline 97
0232 L31:
0232 .dbline 88
0232 EACF xjmp L30
0234 X4:
0234 .dbline -2
0234 L29:
0234 .dbline 0 ; func end
0234 0895 ret
0236 .dbend
.area bss(ram, con, rel)
0000 .dbfile d:\MYDOCU~1\ac10-1\ac10-1.c
0000 _cnt::
0000 .blkb 1
0001 .dbsym e cnt _cnt c
0001 _i::
0001 .blkb 1
0002 .dbsym e i _i c
0002 _dis_val::
0002 .blkb 2
0004 .dbsym e dis_val _dis_val i
0004 _adc_val::
0004 .blkb 2
0006 .dbsym e adc_val _adc_val i
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -