📄 adc.lst
字号:
0187 8311 STD Z+1,R17
0188 8300 STD Z+0,R16
(0042) temp=temp/10;
0189 E02A LDI R18,0xA
018A E030 LDI R19,0
018B 0186 MOVW R16,R12
018C 940E0206 CALL div16u
018E 0168 MOVW R12,R16
018F 94A3 INC R10
0190 2D8A MOV R24,R10
0191 3083 CPI R24,3
0192 F340 BCS 0x017B
0193 940E02C7 CALL pop_gset4
0195 9508 RET
_adc_isr:
temp --> R16
0196 922A ST R2,-Y
0197 923A ST R3,-Y
0198 930A ST R16,-Y
0199 931A ST R17,-Y
019A 93EA ST R30,-Y
019B B62F IN R2,0x3F
019C 922A ST R2,-Y
(0043) }
(0044) }
(0045)
(0046) /* AD转换程序 */
(0047) #pragma interrupt_handler adc_isr:15
(0048) void adc_isr(void)
(0049) {
(0050) unsigned int temp=0;
019D 2700 CLR R16
019E 2711 CLR R17
019F C002 RJMP 0x01A2
(0051) while(temp<6)
(0052) temp++;
01A0 5F0F SUBI R16,0xFF
01A1 4F1F SBCI R17,0xFF
01A2 3006 CPI R16,6
01A3 E0E0 LDI R30,0
01A4 071E CPC R17,R30
01A5 F3D0 BCS 0x01A0
(0053) ad_con=ADC;
01A6 B024 IN R2,0x04
01A7 B035 IN R3,0x05
01A8 92300077 STS ad_con+1,R3
01AA 92200076 STS ad_con,R2
(0054) ADCSR|=(1<<ADSC);//启动转换
01AC 9A36 SBI 0x06,6
01AD 9029 LD R2,Y+
01AE BE2F OUT 0x3F,R2
01AF 91E9 LD R30,Y+
01B0 9119 LD R17,Y+
01B1 9109 LD R16,Y+
01B2 9039 LD R3,Y+
01B3 9029 LD R2,Y+
01B4 9518 RETI
(0055) }
(0056) //将AD转换结果转换成电压数值
(0057) void main(void)
(0058) {
(0059) unsigned char i;
(0060) port_init();
_main:
i --> R20
01B5 DF6A RCALL _port_init
(0061) WDT_ON();
01B6 DEA7 RCALL _WDT_ON
(0062) USART_InitM1681(9600);
01B7 E800 LDI R16,0x80
01B8 E215 LDI R17,0x25
01B9 DF19 RCALL _USART_InitM1681
(0063) Red_LedON;Green_LedON;
01BA 98DD CBI 0x1B,5
01BB 98DC CBI 0x1B,4
(0064) delay_nms(500); //延时1秒
01BC EF04 LDI R16,0xF4
01BD E011 LDI R17,1
01BE DEB9 RCALL _delay_nms
(0065) Red_LedOFF; Green_LedOFF;
01BF 9ADD SBI 0x1B,5
01C0 9ADC SBI 0x1B,4
(0066) USART_Transmit8(2);
01C1 E002 LDI R16,2
01C2 DF42 RCALL _USART_Transmit8
(0067) USART_Transmit8(0x0d); //发送一个回车
01C3 E00D LDI R16,0xD
01C4 DF40 RCALL _USART_Transmit8
(0068) USART_Transmit8(0x0a); //发送一个换行
01C5 E00A LDI R16,0xA
01C6 DF3E RCALL _USART_Transmit8
(0069)
(0070) MCUCSR=0;
01C7 2422 CLR R2
01C8 BE24 OUT 0x34,R2
(0071) //ADMUX=0x00;//0通道
(0072) ADMUX=0x03;//3
01C9 E083 LDI R24,3
01CA B987 OUT 0x07,R24
(0073) // ADMUX=0x06;//6
(0074) ADCSR=(1<<ADEN)|(1<<ADSC)|(1<<ADIF)|(1<<ADIE)|0x06;
01CB ED8E LDI R24,0xDE
01CC B986 OUT 0x06,R24
(0075) SEI();
01CD 9478 BSET 7
(0076)
(0077) i=0;
01CE 2744 CLR R20
(0078) USART_Transmit_2();//发个Hello
01CF DF3B RCALL _USART_Transmit_2
01D0 C031 RJMP 0x0202
(0079) while(1)
(0080) {
(0081) if((i==127)|(i==0))
01D1 374F CPI R20,0x7F
01D2 F421 BNE 0x01D7
01D3 E081 LDI R24,1
01D4 E090 LDI R25,0
01D5 015C MOVW R10,R24
01D6 C002 RJMP 0x01D9
01D7 24AA CLR R10
01D8 24BB CLR R11
01D9 2344 TST R20
01DA F419 BNE 0x01DE
01DB E061 LDI R22,1
01DC E070 LDI R23,0
01DD C002 RJMP 0x01E0
01DE 2766 CLR R22
01DF 2777 CLR R23
01E0 0115 MOVW R2,R10
01E1 2A26 OR R2,R22
01E2 2A37 OR R3,R23
01E3 2022 TST R2
01E4 F411 BNE 0x01E7
01E5 2033 TST R3
01E6 F029 BEQ 0x01EC
(0082) adctovol(ad_con);//降低AD结果刷新速率
01E7 91000076 LDS R16,ad_con
01E9 91100077 LDS R17,ad_con+1
01EB DF75 RCALL _adctovol
(0083) display(); //使末位闪烁不太明显
01EC DF3F RCALL _display
(0084) Red_D1glint;delay_nms(500);//红绿灯交替亮灭
01ED B229 IN R2,0x19
01EE 2433 CLR R3
01EF FC25 SBRC R2,5
01F0 C002 RJMP 0x01F3
01F1 9ADD SBI 0x1B,5
01F2 C001 RJMP 0x01F4
01F3 98DD CBI 0x1B,5
01F4 EF04 LDI R16,0xF4
01F5 E011 LDI R17,1
01F6 DE81 RCALL _delay_nms
(0085) Green_D1glint;delay_nms(500);
01F7 B229 IN R2,0x19
01F8 2433 CLR R3
01F9 FC24 SBRC R2,4
01FA C002 RJMP 0x01FD
01FB 9ADC SBI 0x1B,4
01FC C001 RJMP 0x01FE
01FD 98DC CBI 0x1B,4
01FE EF04 LDI R16,0xF4
01FF E011 LDI R17,1
0200 DE77 RCALL _delay_nms
(0086) i++;
FILE: <library>
0201 9543 INC R20
0202 CFCE RJMP 0x01D1
0203 9508 RET
mod16u:
0204 9468 BSET 6
0205 C001 RJMP xdiv16u
div16u:
0206 94E8 BCLR 6
xdiv16u:
0207 92EA ST R14,-Y
0208 92FA ST R15,-Y
0209 938A ST R24,-Y
020A 24EE CLR R14
020B 24FF CLR R15
020C E180 LDI R24,0x10
020D 0F00 LSL R16
020E 1F11 ROL R17
020F 1CEE ROL R14
0210 1CFF ROL R15
0211 16E2 CP R14,R18
0212 06F3 CPC R15,R19
0213 F018 BCS 0x0217
0214 1AE2 SUB R14,R18
0215 0AF3 SBC R15,R19
0216 9503 INC R16
0217 958A DEC R24
0218 F7A1 BNE 0x020D
0219 F416 BRTC 0x021C
021A 2D0E MOV R16,R14
021B 2D1F MOV R17,R15
021C 9189 LD R24,Y+
021D 90F9 LD R15,Y+
021E 90E9 LD R14,Y+
021F 9508 RET
div32u:
0220 94E8 BCLR 6
0221 C001 RJMP 0x0223
mod32u:
0222 9468 BSET 6
0223 D02F RCALL long_div_prolog
0224 24CC CLR R12
0225 C008 RJMP 0x022E
div32s:
0226 94E8 BCLR 6
0227 C001 RJMP 0x0229
mod32s:
0228 9468 BSET 6
0229 D029 RCALL long_div_prolog
022A FD37 SBRC R19,7
022B D053 RCALL neg_R16_R19
022C FDB7 SBRC R27,7
022D D05A RCALL neg_R24_R27
022E 2477 CLR R7
022F 2488 CLR R8
0230 2499 CLR R9
0231 24AA CLR R10
0232 24BB CLR R11
0233 D041 RCALL tst_R16_R19
0234 F0C1 BEQ 0x024D
0235 D044 RCALL tst_R24_R27
0236 F0B1 BEQ 0x024D
0237 E2E8 LDI R30,0x28
0238 0F00 LSL R16
0239 1F11 ROL R17
023A 1F22 ROL R18
023B 1F33 ROL R19
023C 1C77 ROL R7
023D 1C88 ROL R8
023E 1C99 ROL R9
023F 1CAA ROL R10
0240 1CBB ROL R11
0241 1688 CP R8,R24
0242 0699 CPC R9,R25
0243 06AA CPC R10,R26
0244 06BB CPC R11,R27
0245 F028 BCS 0x024B
0246 1A88 SUB R8,R24
0247 0A99 SBC R9,R25
0248 0AAA SBC R10,R26
0249 0ABB SBC R11,R27
024A 9503 INC R16
024B 95EA DEC R30
024C F759 BNE 0x0238
024D F426 BRTC 0x0252
024E 2D08 MOV R16,R8
024F 2D19 MOV R17,R9
0250 2D2A MOV R18,R10
0251 2D3B MOV R19,R11
0252 C013 RJMP long_div_epilog
long_div_prolog:
0253 927A ST R7,-Y
0254 928A ST R8,-Y
0255 929A ST R9,-Y
0256 92AA ST R10,-Y
0257 92BA ST R11,-Y
0258 92CA ST R12,-Y
0259 93EA ST R30,-Y
025A 938A ST R24,-Y
025B 939A ST R25,-Y
025C 93AA ST R26,-Y
025D 93BA ST R27,-Y
025E 858B LDD R24,Y+11
025F 859C LDD R25,Y+12
0260 85AD LDD R26,Y+13
0261 85BE LDD R27,Y+14
0262 2EC3 MOV R12,R19
0263 F00E BRTS 0x0265
0264 26CB EOR R12,R27
0265 9508 RET
long_div_epilog:
0266 FCC7 SBRC R12,7
0267 D017 RCALL neg_R16_R19
0268 91B9 LD R27,Y+
0269 91A9 LD R26,Y+
026A 9199 LD R25,Y+
026B 9189 LD R24,Y+
026C 91E9 LD R30,Y+
026D 90C9 LD R12,Y+
026E 90B9 LD R11,Y+
026F 90A9 LD R10,Y+
0270 9099 LD R9,Y+
0271 9089 LD R8,Y+
0272 9079 LD R7,Y+
0273 9624 ADIW R28,4
0274 9508 RET
tst_R16_R19:
0275 2FE0 MOV R30,R16
0276 2BE1 OR R30,R17
0277 2BE2 OR R30,R18
0278 2BE3 OR R30,R19
0279 9508 RET
tst_R24_R27:
027A 2FE8 MOV R30,R24
027B 2BE9 OR R30,R25
027C 2BEA OR R30,R26
027D 2BEB OR R30,R27
027E 9508 RET
neg_R16_R19:
027F 9500 COM R16
0280 9510 COM R17
0281 9520 COM R18
0282 9530 COM R19
0283 5F0F SUBI R16,0xFF
0284 4F1F SBCI R17,0xFF
0285 4F2F SBCI R18,0xFF
0286 4F3F SBCI R19,0xFF
0287 9508 RET
neg_R24_R27:
0288 9580 COM R24
0289 9590 COM R25
028A 95A0 COM R26
028B 95B0 COM R27
028C 5F8F SUBI R24,0xFF
028D 4F9F SBCI R25,0xFF
028E 4FAF SBCI R26,0xFF
028F 4FBF SBCI R27,0xFF
0290 9508 RET
empy32s:
empy32u:
0291 940E02E9 CALL long_prolog
0293 927F PUSH R7
0294 940E0302 CALL tstzero1
0296 F139 BEQ 0x02BE
0297 2477 CLR R7
0298 940E0308 CALL tstzero2
029A F419 BNE 0x029E
029B 018C MOVW R16,R24
029C 019D MOVW R18,R26
029D C020 RJMP 0x02BE
029E 9F08 MUL R16,R24
029F 2CB0 MOV R11,R0
02A0 2CA1 MOV R10,R1
02A1 9F28 MUL R18,R24
02A2 2C90 MOV R9,R0
02A3 2C81 MOV R8,R1
02A4 9F18 MUL R17,R24
02A5 0CA0 ADD R10,R0
02A6 1C91 ADC R9,R1
02A7 1C87 ADC R8,R7
02A8 9F09 MUL R16,R25
02A9 0CA0 ADD R10,R0
02AA 1C91 ADC R9,R1
02AB 1C87 ADC R8,R7
02AC 9F19 MUL R17,R25
02AD 0C90 ADD R9,R0
02AE 1C81 ADC R8,R1
02AF 9F0A MUL R16,R26
02B0 0C90 ADD R9,R0
02B1 1C81 ADC R8,R1
02B2 9F38 MUL R19,R24
02B3 0C80 ADD R8,R0
02B4 9F29 MUL R18,R25
02B5 0C80 ADD R8,R0
02B6 9F1A MUL R17,R26
02B7 0C80 ADD R8,R0
02B8 9F0B MUL R16,R27
02B9 0C80 ADD R8,R0
02BA 2D0B MOV R16,R11
02BB 2D1A MOV R17,R10
02BC 2D29 MOV R18,R9
02BD 2D38 MOV R19,R8
02BE 907F POP R7
02BF 940C02F7 JMP long_epilog
pop_gset2:
02C1 E0E2 LDI R30,2
02C2 940C02D6 JMP pop
pop_gset3:
02C4 E0E4 LDI R30,4
02C5 940C02D6 JMP pop
pop_gset4:
02C7 E0E8 LDI R30,0x8
02C8 940C02D6 JMP pop
push_gset5:
02CA 92FA ST R15,-Y
02CB 92EA ST R14,-Y
push_gset4:
02CC 92DA ST R13,-Y
02CD 92CA ST R12,-Y
push_gset3:
02CE 92BA ST R11,-Y
02CF 92AA ST R10,-Y
push_gset2:
02D0 937A ST R23,-Y
02D1 936A ST R22,-Y
push_gset1:
02D2 935A ST R21,-Y
02D3 934A ST R20,-Y
02D4 9508 RET
pop_gset1:
02D5 E0E1 LDI R30,1
pop:
02D6 9149 LD R20,Y+
02D7 9159 LD R21,Y+
02D8 FDE0 SBRC R30,0
02D9 9508 RET
02DA 9169 LD R22,Y+
02DB 9179 LD R23,Y+
02DC FDE1 SBRC R30,1
02DD 9508 RET
02DE 90A9 LD R10,Y+
02DF 90B9 LD R11,Y+
02E0 FDE2 SBRC R30,2
02E1 9508 RET
02E2 90C9 LD R12,Y+
02E3 90D9 LD R13,Y+
02E4 FDE3 SBRC R30,3
02E5 9508 RET
02E6 90E9 LD R14,Y+
02E7 90F9 LD R15,Y+
02E8 9508 RET
long_prolog:
02E9 928A ST R8,-Y
02EA 929A ST R9,-Y
02EB 92AA ST R10,-Y
02EC 92BA ST R11,-Y
02ED 93EA ST R30,-Y
02EE 938A ST R24,-Y
02EF 939A ST R25,-Y
02F0 93AA ST R26,-Y
02F1 93BA ST R27,-Y
02F2 8589 LDD R24,Y+9
02F3 859A LDD R25,Y+10
02F4 85AB LDD R26,Y+11
02F5 85BC LDD R27,Y+12
02F6 9508 RET
long_epilog:
02F7 91B9 LD R27,Y+
02F8 91A9 LD R26,Y+
02F9 9199 LD R25,Y+
02FA 9189 LD R24,Y+
02FB 91E9 LD R30,Y+
02FC 90B9 LD R11,Y+
02FD 90A9 LD R10,Y+
02FE 9099 LD R9,Y+
02FF 9089 LD R8,Y+
0300 9624 ADIW R28,4
0301 9508 RET
tstzero1:
0302 27EE CLR R30
0303 2BE0 OR R30,R16
0304 2BE1 OR R30,R17
0305 2BE2 OR R30,R18
0306 2BE3 OR R30,R19
0307 9508 RET
tstzero2:
0308 27EE CLR R30
0309 2BE8 OR R30,R24
030A 2BE9 OR R30,R25
030B 2BEA OR R30,R26
030C 2BEB OR R30,R27
030D 9508 RET
lsr32:
030E 920F PUSH R0
030F 9009 LD R0,Y+
0310 2000 TST R0
0311 F031 BEQ 0x0318
0312 9536 LSR R19
0313 9527 ROR R18
0314 9517 ROR R17
0315 9507 ROR R16
0316 940A DEC R0
0317 CFF8 RJMP 0x0310
0318 900F POP R0
0319 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -