📄 adc.lis
字号:
00BA 4094 com R4
00BC 5524 clr R5
00BE 47FC sbrc R4,7
00C0 5094 com R5
00C2 FE01 movw R30,R28
00C4 6080 ldd R6,z+0
00C6 7180 ldd R7,z+1
00C8 8280 ldd R8,z+2
00CA 9380 ldd R9,z+3
00CC 6228 or R6,R2
00CE 7328 or R7,R3
00D0 8428 or R8,R4
00D2 9528 or R9,R5
00D4 FE01 movw R30,R28
00D6 6082 std z+0,R6
00D8 7182 std z+1,R7
00DA 8282 std z+2,R8
00DC 9382 std z+3,R9
00DE .dbline 48
00DE ; voltage=(value*2560)>>10;
00DE FE01 movw R30,R28
00E0 2080 ldd R2,z+0
00E2 3180 ldd R3,z+1
00E4 4280 ldd R4,z+2
00E6 5380 ldd R5,z+3
00E8 40E0 ldi R20,0
00EA 5AE0 ldi R21,10
00EC 60E0 ldi R22,0
00EE 70E0 ldi R23,0
00F0 5A92 st -y,R5
00F2 4A92 st -y,R4
00F4 3A92 st -y,R3
00F6 2A92 st -y,R2
00F8 8A01 movw R16,R20
00FA 9B01 movw R18,R22
00FC 0E940000 xcall empy32u
0100 8AE0 ldi R24,10
0102 90E0 ldi R25,0
0104 8A93 st -y,R24
0106 0E940000 xcall lsr32
010A 5801 movw R10,R16
010C .dbline 49
010C ; return voltage;
010C .dbline -2
010C L15:
010C 2496 adiw R28,4
010E 0E940000 xcall pop_gset3
0112 .dbline 0 ; func end
0112 0895 ret
0114 .dbsym r voltage 10 i
0114 .dbsym l value 0 l
0114 .dbend
.area vector(rom, abs)
.org 56
0038 0C948A00 jmp _adc_isr
.area text(rom, con, rel)
0114 .dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\ADC\ADC.c
0114 .dbfunc e adc_isr _adc_isr fV
.even
0114 _adc_isr::
0114 0E940000 xcall push_lset
0118 .dbline -1
0118 .dbline 55
0118 ; }
0118 ;
0118 ;
0118 ; #pragma interrupt_handler adc_isr:15
0118 ; void adc_isr(void)
0118 ; {
0118 .dbline 56
0118 ; if(i==5)
0118 80910000 lds R24,_i
011C 8530 cpi R24,5
011E 19F4 brne L17
0120 .dbline 57
0120 ; vol1=adc_calc();
0120 A4DF xcall _adc_calc
0122 00931200 sts _vol1,R16
0126 L17:
0126 .dbline 58
0126 ; if(i==10)
0126 80910000 lds R24,_i
012A 8A30 cpi R24,10
012C 19F4 brne L19
012E .dbline 59
012E ; vol2=adc_calc();
012E 9DDF xcall _adc_calc
0130 00931300 sts _vol2,R16
0134 L19:
0134 .dbline 60
0134 ; if(vol1==vol2)
0134 20901300 lds R2,_vol2
0138 30901200 lds R3,_vol1
013C 3214 cp R3,R2
013E 19F4 brne L21
0140 .dbline 61
0140 ; vol=vol1;
0140 232C mov R2,R3
0142 20920100 sts _vol,R2
0146 L21:
0146 .dbline 62
0146 ; i++;
0146 80910000 lds R24,_i
014A 8F5F subi R24,255 ; addi 1
014C 80930000 sts _i,R24
0150 .dbline 63
0150 ; if(i>10)
0150 8AE0 ldi R24,10
0152 20900000 lds R2,_i
0156 8215 cp R24,R2
0158 18F4 brsh L23
015A .dbline 64
015A ; i=0;
015A 2224 clr R2
015C 20920000 sts _i,R2
0160 L23:
0160 .dbline 65
0160 ; ADCSRA|=BIT(ADSC);//ADC开始转换
0160 369A sbi 0x6,6
0162 .dbline -2
0162 L16:
0162 0E940000 xcall pop_lset
0166 .dbline 0 ; func end
0166 1895 reti
0168 .dbend
0168 .dbfunc e init_devices _init_devices fV
.even
0168 _init_devices::
0168 .dbline -1
0168 .dbline 71
0168 ;
0168 ; }
0168 ;
0168 ;
0168 ; void init_devices(void)
0168 ; {
0168 .dbline 72
0168 ; CLI(); //禁止所有中断
0168 F894 cli
016A .dbline 73
016A ; MCUCR = 0x00;//外部中断触发方式
016A 2224 clr R2
016C 25BE out 0x35,R2
016E .dbline 74
016E ; MCUCSR = 0x80;//禁止JTAG
016E 80E8 ldi R24,128
0170 84BF out 0x34,R24
0172 .dbline 75
0172 ; GICR = 0x00;//外部中断使能
0172 2BBE out 0x3b,R2
0174 .dbline 76
0174 ; port_init();
0174 64DF xcall _port_init
0176 .dbline 77
0176 ; adc_init();
0176 6EDF xcall _adc_init
0178 .dbline 78
0178 ; SEI();//开全局中断
0178 7894 sei
017A .dbline 79
017A ; ADCSRA|=BIT(ADSC);//ADC开始转换
017A 369A sbi 0x6,6
017C .dbline -2
017C L25:
017C .dbline 0 ; func end
017C 0895 ret
017E .dbend
017E .dbfunc e main _main fV
.even
017E _main::
017E .dbline -1
017E .dbline 83
017E ; }
017E ; //主函数
017E ; void main(void)
017E ; {
017E .dbline 84
017E ; init_devices();
017E F4DF xcall _init_devices
0180 58C0 xjmp L28
0182 L27:
0182 .dbline 87
0182 .dbline 88
0182 2AE0 ldi R18,10
0184 30E0 ldi R19,0
0186 00910100 lds R16,_vol
018A 1127 clr R17
018C 0E940000 xcall mod16s
0190 F801 movw R30,R16
0192 80E0 ldi R24,<_led_date
0194 90E0 ldi R25,>_led_date
0196 E80F add R30,R24
0198 F91F adc R31,R25
019A 2080 ldd R2,z+0
019C 28BA out 0x18,R2
019E .dbline 89
019E 87EF ldi R24,247
01A0 82BB out 0x12,R24
01A2 .dbline 90
01A2 04EF ldi R16,500
01A4 11E0 ldi R17,1
01A6 2CDF xcall _DelayUS
01A8 .dbline 91
01A8 2AE0 ldi R18,10
01AA 30E0 ldi R19,0
01AC 00910100 lds R16,_vol
01B0 1127 clr R17
01B2 0E940000 xcall div16s
01B6 2AE0 ldi R18,10
01B8 30E0 ldi R19,0
01BA 0E940000 xcall mod16s
01BE F801 movw R30,R16
01C0 80E0 ldi R24,<_led_date
01C2 90E0 ldi R25,>_led_date
01C4 E80F add R30,R24
01C6 F91F adc R31,R25
01C8 2080 ldd R2,z+0
01CA 28BA out 0x18,R2
01CC .dbline 92
01CC 8BEF ldi R24,251
01CE 82BB out 0x12,R24
01D0 .dbline 93
01D0 04EF ldi R16,500
01D2 11E0 ldi R17,1
01D4 15DF xcall _DelayUS
01D6 .dbline 94
01D6 24E6 ldi R18,100
01D8 30E0 ldi R19,0
01DA 00910100 lds R16,_vol
01DE 1127 clr R17
01E0 0E940000 xcall div16s
01E4 2AE0 ldi R18,10
01E6 30E0 ldi R19,0
01E8 0E940000 xcall mod16s
01EC F801 movw R30,R16
01EE 80E0 ldi R24,<_led_date
01F0 90E0 ldi R25,>_led_date
01F2 E80F add R30,R24
01F4 F91F adc R31,R25
01F6 2080 ldd R2,z+0
01F8 28BA out 0x18,R2
01FA .dbline 95
01FA 8DEF ldi R24,253
01FC 82BB out 0x12,R24
01FE .dbline 96
01FE 04EF ldi R16,500
0200 11E0 ldi R17,1
0202 FEDE xcall _DelayUS
0204 .dbline 97
0204 28EE ldi R18,1000
0206 33E0 ldi R19,3
0208 00910100 lds R16,_vol
020C 1127 clr R17
020E 0E940000 xcall div16s
0212 2AE0 ldi R18,10
0214 30E0 ldi R19,0
0216 0E940000 xcall mod16s
021A F801 movw R30,R16
021C 80E0 ldi R24,<_led_date
021E 90E0 ldi R25,>_led_date
0220 E80F add R30,R24
0222 F91F adc R31,R25
0224 2080 ldd R2,z+0
0226 28BA out 0x18,R2
0228 .dbline 98
0228 8EEF ldi R24,254
022A 82BB out 0x12,R24
022C .dbline 99
022C 04EF ldi R16,500
022E 11E0 ldi R17,1
0230 E7DE xcall _DelayUS
0232 .dbline 100
0232 L28:
0232 .dbline 86
0232 A7CF xjmp L27
0234 X1:
0234 .dbline -2
0234 L26:
0234 .dbline 0 ; func end
0234 0895 ret
0236 .dbend
.area bss(ram, con, rel)
0000 .dbfile C:\DOCUME~1\Administrator\桌面\精雅系列单片机实验开发板演示程序\ADC\ADC.c
0000 _i::
0000 .blkb 1
0001 .dbsym e i _i c
0001 _vol::
0001 .blkb 1
0002 .dbsym e vol _vol c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -