📄 intad.lst
字号:
(0049)
(0050) uint8 AdcMux; //ADC通道
(0051) uint16 AdcVal; //ADC转换值
(0052)
(0053) /*--------------------------------------------------------------------
(0054) 函数名称:
(0055) 函数功能:
(0056) 注意事项:
(0057) 提示说明:
(0058) 输 入:
(0059) 返 回:
(0060) --------------------------------------------------------------------*/
(0061) void adc_init()
(0062) {
(0063) /* 设置对应的IO口为输入高阻态 */
(0064) DDRA &= ADEnStatus[AdcMux];
_adc_init:
01FE E584 LDI R24,0x54
01FF E090 LDI R25,0
0200 91E00062 LDS R30,AdcMux
0202 27FF CLR R31
0203 0FE8 ADD R30,R24
0204 1FF9 ADC R31,R25
0205 91E4 LPM R30,0(Z)
0206 B22A IN R2,0x1A
0207 222E AND R2,R30
0208 BA2A OUT 0x1A,R2
(0065) PORTA &= ADEnStatus[AdcMux];
0209 91E00062 LDS R30,AdcMux
020B 27FF CLR R31
020C 0FE8 ADD R30,R24
020D 1FF9 ADC R31,R25
020E 91E4 LPM R30,0(Z)
020F B22B IN R2,0x1B
0210 222E AND R2,R30
0211 BA2B OUT 0x1B,R2
(0066)
(0067) ADCSRA = 0x00; //disable adc
0212 2422 CLR R2
0213 B826 OUT 0x06,R2
(0068) ADMUX = (1<<REFS1)|(1<<REFS0)|(AdcMux&0x0F); //select adc input channel
0214 91800062 LDS R24,AdcMux
0216 708F ANDI R24,0xF
0217 6C80 ORI R24,0xC0
0218 B987 OUT 0x07,R24
(0069) ACSR = (1<<ACD); //close analog comparator
0219 E880 LDI R24,0x80
021A B988 OUT 0x08,R24
(0070) ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADIE)|(1<<ADPS2)|(1<<ADPS1);
021B EC8E LDI R24,0xCE
021C B986 OUT 0x06,R24
021D 9508 RET
_adc_isr:
021E 938A ST R24,-Y
021F 939A ST R25,-Y
0220 B78F IN R24,0x3F
0221 938A ST R24,-Y
(0071) }
(0072) /*--------------------------------------------------------------------
(0073) 函数名称:
(0074) 函数功能:
(0075) 注意事项:
(0076) 提示说明:
(0077) 输 入:
(0078) 返 回:
(0079) --------------------------------------------------------------------*/
(0080) #pragma interrupt_handler adc_isr:15
(0081) void adc_isr(void)
(0082) {
(0083) AdcVal = ADC&0x3FF;
0222 B184 IN R24,0x04
0223 B195 IN R25,0x05
0224 7093 ANDI R25,3
0225 93900061 STS AdcVal+1,R25
0227 93800060 STS AdcVal,R24
(0084) ADMUX = (1<<REFS0)|(AdcMux&0x0F); //使用 AVcc 作为ADC参考电源
0229 91800062 LDS R24,AdcMux
022B 708F ANDI R24,0xF
022C 6480 ORI R24,0x40
022D B987 OUT 0x07,R24
(0085) ADCSRA |= (1<<ADSC); //ADSC: AD start conversion
022E 9A36 SBI 0x06,6
022F 9189 LD R24,Y+
0230 BF8F OUT 0x3F,R24
0231 9199 LD R25,Y+
0232 9189 LD R24,Y+
0233 9518 RETI
(0086) }
(0087) /*--------------------------------------------------------------------
(0088) 函数名称:
(0089) 函数功能:
(0090) 注意事项:
(0091) 提示说明:
(0092) 输 入:
(0093) 返 回:
(0094) --------------------------------------------------------------------*/
(0095) void main(void)
(0096) {
(0097) H_VAL_DISP_DDR = 0xFF;
_main:
0234 EF8F LDI R24,0xFF
0235 BB81 OUT 0x11,R24
(0098) L_VAL_DISP_DDR = 0xFF;
0236 BB87 OUT 0x17,R24
(0099) AdcMux = 0; //使用ADC通道0
0237 2422 CLR R2
0238 92200062 STS AdcMux,R2
(0100) adc_init();
023A DFC3 RCALL _adc_init
(0101) SEI();
023B 9478 BSET 7
023C C00F RJMP 0x024C
(0102) while(1)
(0103) {
(0104) H_VAL_DISP_PORT = (AdcVal&0x300)>>8; //ADC的高2位Val
023D 91800060 LDS R24,AdcVal
023F 91900061 LDS R25,AdcVal+1
0241 7080 ANDI R24,0
0242 7093 ANDI R25,3
0243 2F89 MOV R24,R25
0244 2799 CLR R25
0245 BB82 OUT 0x12,R24
(0105) L_VAL_DISP_PORT = AdcVal&0xFF; //ADC的低8位Val
FILE: <library>
0246 91800060 LDS R24,AdcVal
0248 91900061 LDS R25,AdcVal+1
024A 7090 ANDI R25,0
024B BB88 OUT 0x18,R24
024C CFF0 RJMP 0x023D
024D 9508 RET
push_arg4:
024E 933A ST R19,-Y
024F 932A ST R18,-Y
push_arg2:
0250 931A ST R17,-Y
0251 930A ST R16,-Y
0252 9508 RET
div32u:
0253 94E8 BCLR 6
0254 C001 RJMP 0x0256
mod32u:
0255 9468 BSET 6
0256 D02F RCALL long_div_prolog
0257 24CC CLR R12
0258 C008 RJMP 0x0261
div32s:
0259 94E8 BCLR 6
025A C001 RJMP 0x025C
mod32s:
025B 9468 BSET 6
025C D029 RCALL long_div_prolog
025D FD37 SBRC R19,7
025E D053 RCALL neg_R16_R19
025F FDB7 SBRC R27,7
0260 D05A RCALL neg_R24_R27
0261 2477 CLR R7
0262 2488 CLR R8
0263 2499 CLR R9
0264 24AA CLR R10
0265 24BB CLR R11
0266 D041 RCALL tst_R16_R19
0267 F0C1 BEQ 0x0280
0268 D044 RCALL tst_R24_R27
0269 F0B1 BEQ 0x0280
026A E2E8 LDI R30,0x28
026B 0F00 LSL R16
026C 1F11 ROL R17
026D 1F22 ROL R18
026E 1F33 ROL R19
026F 1C77 ROL R7
0270 1C88 ROL R8
0271 1C99 ROL R9
0272 1CAA ROL R10
0273 1CBB ROL R11
0274 1688 CP R8,R24
0275 0699 CPC R9,R25
0276 06AA CPC R10,R26
0277 06BB CPC R11,R27
0278 F028 BCS 0x027E
0279 1A88 SUB R8,R24
027A 0A99 SBC R9,R25
027B 0AAA SBC R10,R26
027C 0ABB SBC R11,R27
027D 9503 INC R16
027E 95EA DEC R30
027F F759 BNE 0x026B
0280 F426 BRTC 0x0285
0281 2D08 MOV R16,R8
0282 2D19 MOV R17,R9
0283 2D2A MOV R18,R10
0284 2D3B MOV R19,R11
0285 C013 RJMP long_div_epilog
long_div_prolog:
0286 927A ST R7,-Y
0287 928A ST R8,-Y
0288 929A ST R9,-Y
0289 92AA ST R10,-Y
028A 92BA ST R11,-Y
028B 92CA ST R12,-Y
028C 93EA ST R30,-Y
028D 938A ST R24,-Y
028E 939A ST R25,-Y
028F 93AA ST R26,-Y
0290 93BA ST R27,-Y
0291 858B LDD R24,Y+11
0292 859C LDD R25,Y+12
0293 85AD LDD R26,Y+13
0294 85BE LDD R27,Y+14
0295 2EC3 MOV R12,R19
0296 F00E BRTS 0x0298
0297 26CB EOR R12,R27
0298 9508 RET
long_div_epilog:
0299 FCC7 SBRC R12,7
029A D017 RCALL neg_R16_R19
029B 91B9 LD R27,Y+
029C 91A9 LD R26,Y+
029D 9199 LD R25,Y+
029E 9189 LD R24,Y+
029F 91E9 LD R30,Y+
02A0 90C9 LD R12,Y+
02A1 90B9 LD R11,Y+
02A2 90A9 LD R10,Y+
02A3 9099 LD R9,Y+
02A4 9089 LD R8,Y+
02A5 9079 LD R7,Y+
02A6 9624 ADIW R28,4
02A7 9508 RET
tst_R16_R19:
02A8 2FE0 MOV R30,R16
02A9 2BE1 OR R30,R17
02AA 2BE2 OR R30,R18
02AB 2BE3 OR R30,R19
02AC 9508 RET
tst_R24_R27:
02AD 2FE8 MOV R30,R24
02AE 2BE9 OR R30,R25
02AF 2BEA OR R30,R26
02B0 2BEB OR R30,R27
02B1 9508 RET
neg_R16_R19:
02B2 9500 COM R16
02B3 9510 COM R17
02B4 9520 COM R18
02B5 9530 COM R19
02B6 5F0F SUBI R16,0xFF
02B7 4F1F SBCI R17,0xFF
02B8 4F2F SBCI R18,0xFF
02B9 4F3F SBCI R19,0xFF
02BA 9508 RET
neg_R24_R27:
02BB 9580 COM R24
02BC 9590 COM R25
02BD 95A0 COM R26
02BE 95B0 COM R27
02BF 5F8F SUBI R24,0xFF
02C0 4F9F SBCI R25,0xFF
02C1 4FAF SBCI R26,0xFF
02C2 4FBF SBCI R27,0xFF
02C3 9508 RET
empy32u:
empy32s:
02C4 940E0319 CALL long_prolog
02C6 927F PUSH R7
02C7 940E0332 CALL tstzero1
02C9 F139 BEQ 0x02F1
02CA 2477 CLR R7
02CB 940E0338 CALL tstzero2
02CD F419 BNE 0x02D1
02CE 018C MOVW R16,R24
02CF 019D MOVW R18,R26
02D0 C020 RJMP 0x02F1
02D1 9F08 MUL R16,R24
02D2 2CB0 MOV R11,R0
02D3 2CA1 MOV R10,R1
02D4 9F28 MUL R18,R24
02D5 2C90 MOV R9,R0
02D6 2C81 MOV R8,R1
02D7 9F18 MUL R17,R24
02D8 0CA0 ADD R10,R0
02D9 1C91 ADC R9,R1
02DA 1C87 ADC R8,R7
02DB 9F09 MUL R16,R25
02DC 0CA0 ADD R10,R0
02DD 1C91 ADC R9,R1
02DE 1C87 ADC R8,R7
02DF 9F19 MUL R17,R25
02E0 0C90 ADD R9,R0
02E1 1C81 ADC R8,R1
02E2 9F0A MUL R16,R26
02E3 0C90 ADD R9,R0
02E4 1C81 ADC R8,R1
02E5 9F38 MUL R19,R24
02E6 0C80 ADD R8,R0
02E7 9F29 MUL R18,R25
02E8 0C80 ADD R8,R0
02E9 9F1A MUL R17,R26
02EA 0C80 ADD R8,R0
02EB 9F0B MUL R16,R27
02EC 0C80 ADD R8,R0
02ED 2D0B MOV R16,R11
02EE 2D1A MOV R17,R10
02EF 2D29 MOV R18,R9
02F0 2D38 MOV R19,R8
02F1 907F POP R7
02F2 940C0327 JMP long_epilog
pop_gset2:
02F4 E0E2 LDI R30,2
02F5 940C0306 JMP pop
pop_gset4:
02F7 E0E8 LDI R30,0x8
02F8 940C0306 JMP pop
push_gset5:
02FA 92FA ST R15,-Y
02FB 92EA ST R14,-Y
push_gset4:
02FC 92DA ST R13,-Y
02FD 92CA ST R12,-Y
push_gset3:
02FE 92BA ST R11,-Y
02FF 92AA ST R10,-Y
push_gset2:
0300 937A ST R23,-Y
0301 936A ST R22,-Y
push_gset1:
0302 935A ST R21,-Y
0303 934A ST R20,-Y
0304 9508 RET
pop_gset1:
0305 E0E1 LDI R30,1
pop:
0306 9149 LD R20,Y+
0307 9159 LD R21,Y+
0308 FDE0 SBRC R30,0
0309 9508 RET
030A 9169 LD R22,Y+
030B 9179 LD R23,Y+
030C FDE1 SBRC R30,1
030D 9508 RET
030E 90A9 LD R10,Y+
030F 90B9 LD R11,Y+
0310 FDE2 SBRC R30,2
0311 9508 RET
0312 90C9 LD R12,Y+
0313 90D9 LD R13,Y+
0314 FDE3 SBRC R30,3
0315 9508 RET
0316 90E9 LD R14,Y+
0317 90F9 LD R15,Y+
0318 9508 RET
long_prolog:
0319 928A ST R8,-Y
031A 929A ST R9,-Y
031B 92AA ST R10,-Y
031C 92BA ST R11,-Y
031D 93EA ST R30,-Y
031E 938A ST R24,-Y
031F 939A ST R25,-Y
0320 93AA ST R26,-Y
0321 93BA ST R27,-Y
0322 8589 LDD R24,Y+9
0323 859A LDD R25,Y+10
0324 85AB LDD R26,Y+11
0325 85BC LDD R27,Y+12
0326 9508 RET
long_epilog:
0327 91B9 LD R27,Y+
0328 91A9 LD R26,Y+
0329 9199 LD R25,Y+
032A 9189 LD R24,Y+
032B 91E9 LD R30,Y+
032C 90B9 LD R11,Y+
032D 90A9 LD R10,Y+
032E 9099 LD R9,Y+
032F 9089 LD R8,Y+
0330 9624 ADIW R28,4
0331 9508 RET
tstzero1:
0332 27EE CLR R30
0333 2BE0 OR R30,R16
0334 2BE1 OR R30,R17
0335 2BE2 OR R30,R18
0336 2BE3 OR R30,R19
0337 9508 RET
tstzero2:
0338 27EE CLR R30
0339 2BE8 OR R30,R24
033A 2BE9 OR R30,R25
033B 2BEA OR R30,R26
033C 2BEB OR R30,R27
033D 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -