📄 queryad.lst
字号:
010D E110 LDI R17,0x10
010E 2F04 MOV R16,R20
010F 940E01DF CALL mod8u
0111 8308 STD Y+0,R16
(0206) dec=t[1]*10+t[0];
0112 8029 LDD R2,Y+1
0113 E08A LDI R24,0xA
0114 9D82 MUL R24,R2
0115 2D40 MOV R20,R0
0116 0F40 ADD R20,R16
(0207) return dec;
0117 2F04 MOV R16,R20
0118 9622 ADIW R28,2
0119 940E022D CALL pop_gset1
011B 9508 RET
_converseHToD:
dec --> R20
t --> Y+0
hex --> R20
011C 940E022A CALL push_gset1
011E 2F40 MOV R20,R16
011F 9722 SBIW R28,2
(0208) }
(0209) /*--------------------------------------------------------------------
(0210) 函数全称:十六进制化为十进制
(0211) 函数功能:
(0212) 注意事项:无
(0213) 提示说明:调用converseHToD(21),return 33
(0214) 输 入:
(0215) 返 回:uint8 dec
(0216) --------------------------------------------------------------------*/
(0217) uint8 converseHToD(uint8 hex)
(0218) {
(0219) uint8 dec;
(0220) uint8 t[2];
(0221) t[1]=hex/10;
0120 E01A LDI R17,0xA
0121 2F04 MOV R16,R20
0122 940E01E1 CALL div8u
0124 8309 STD Y+1,R16
(0222) t[0]=hex%10;
0125 E01A LDI R17,0xA
0126 2F04 MOV R16,R20
0127 940E01DF CALL mod8u
0129 8308 STD Y+0,R16
(0223) dec=t[1]*16+t[0];
012A 8029 LDD R2,Y+1
012B E180 LDI R24,0x10
012C 9D82 MUL R24,R2
012D 2D40 MOV R20,R0
012E 0F40 ADD R20,R16
(0224) return dec;
012F 2F04 MOV R16,R20
0130 9622 ADIW R28,2
0131 940E022D CALL pop_gset1
0133 9508 RET
FILE: E:\ProductPro\M16SD\ICCAVR\AD\QueryAD\QueryAD.C
(0001)
(0002) #include <iom16v.h>
(0003) #include "E:\ICCAVR_H\CmmICC.H"
(0004)
(0005) #define H_VAL_DISP_DDR DDRD
(0006) #define L_VAL_DISP_DDR DDRB
(0007) #define H_VAL_DISP_PORT PORTD
(0008) #define L_VAL_DISP_PORT PORTB
(0009)
(0010) const uint8 ADEnStatus[8] = {0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};
(0011)
(0012) uint8 AdcMux; //ADC通道
(0013) uint16 AdcVal; //ADC转换值
(0014)
(0015) void adc_init()
(0016) {
(0017) /*--------
(0018) 设置对应的IO口为输入高阻态
(0019) --------*/
(0020) DDRA &= ADEnStatus[AdcMux];
_adc_init:
0134 E584 LDI R24,0x54
0135 E090 LDI R25,0
0136 91E00062 LDS R30,_AdcMux
0138 27FF CLR R31
0139 0FE8 ADD R30,R24
013A 1FF9 ADC R31,R25
013B 91E4 LPM R30,0(Z)
013C B22A IN R2,0x1A
013D 222E AND R2,R30
013E BA2A OUT 0x1A,R2
(0021) PORTA &= ADEnStatus[AdcMux];
013F 91E00062 LDS R30,_AdcMux
0141 27FF CLR R31
0142 0FE8 ADD R30,R24
0143 1FF9 ADC R31,R25
0144 91E4 LPM R30,0(Z)
0145 B22B IN R2,0x1B
0146 222E AND R2,R30
0147 BA2B OUT 0x1B,R2
(0022)
(0023) ADCSR = 0x00; //disable adc
0148 2422 CLR R2
0149 B826 OUT 0x06,R2
(0024) ADMUX = (1<<REFS0)|(AdcMux&0x0F); //set AVcc as Vref, set adc input channel
014A 91800062 LDS R24,_AdcMux
014C 708F ANDI R24,0xF
014D 6480 ORI R24,0x40
014E B987 OUT 0x07,R24
(0025) ACSR = (1<<ACD); //close analog comparator
014F E880 LDI R24,0x80
0150 B988 OUT 0x08,R24
(0026) //ADCSRA=(1<<ADEN)|(1<<ADIE)|(1<<ADSC)|(1<<ADPS2)|(1<<ADPS1);//64分频
(0027) }
0151 9508 RET
(0028)
(0029) void main(void)
(0030) {
(0031) H_VAL_DISP_DDR = 0xFF;
_main:
0152 EF8F LDI R24,0xFF
0153 BB81 OUT 0x11,R24
(0032) L_VAL_DISP_DDR = 0xFF;
0154 BB87 OUT 0x17,R24
(0033) AdcMux = 0; //使用ADC通道0
0155 2422 CLR R2
0156 92200062 STS _AdcMux,R2
(0034) adc_init();
0158 DFDB RCALL _adc_init
0159 C00D RJMP 0x0167
(0035) while(1)
(0036) {
(0037) ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADPS2)|(1<<ADPS1);
015A EC86 LDI R24,0xC6
015B B986 OUT 0x06,R24
(0038) while(!ADSC);
(0039) H_VAL_DISP_PORT = (ADC&0x300)>>8; //ADC的高2位Val
015C B184 IN R24,0x04
015D B195 IN R25,0x05
015E 7080 ANDI R24,0
015F 7093 ANDI R25,3
0160 2F89 MOV R24,R25
0161 2799 CLR R25
0162 BB82 OUT 0x12,R24
(0040) L_VAL_DISP_PORT = ADC&0xFF; //ADC的低8位Val
0163 B184 IN R24,0x04
0164 B195 IN R25,0x05
0165 7090 ANDI R25,0
0166 BB88 OUT 0x18,R24
0167 CFF2 RJMP 0x015A
(0041) }
(0042) }
FILE: <library>
0168 9508 RET
push_arg4:
0169 933A ST R19,-Y
016A 932A ST R18,-Y
push_arg2:
016B 931A ST R17,-Y
016C 930A ST R16,-Y
016D 9508 RET
div32u:
016E 94E8 BCLR 6
016F C001 RJMP 0x0171
mod32u:
0170 9468 BSET 6
0171 D02F RCALL long_div_prolog
0172 24CC CLR R12
0173 C008 RJMP 0x017C
div32s:
0174 94E8 BCLR 6
0175 C001 RJMP 0x0177
mod32s:
0176 9468 BSET 6
0177 D029 RCALL long_div_prolog
0178 FD37 SBRC R19,7
0179 D053 RCALL neg_R16_R19
017A FDB7 SBRC R27,7
017B D05A RCALL neg_R24_R27
017C 2477 CLR R7
017D 2488 CLR R8
017E 2499 CLR R9
017F 24AA CLR R10
0180 24BB CLR R11
0181 D041 RCALL tst_R16_R19
0182 F0C1 BEQ 0x019B
0183 D044 RCALL tst_R24_R27
0184 F0B1 BEQ 0x019B
0185 E2E8 LDI R30,0x28
0186 0F00 LSL R16
0187 1F11 ROL R17
0188 1F22 ROL R18
0189 1F33 ROL R19
018A 1C77 ROL R7
018B 1C88 ROL R8
018C 1C99 ROL R9
018D 1CAA ROL R10
018E 1CBB ROL R11
018F 1688 CP R8,R24
0190 0699 CPC R9,R25
0191 06AA CPC R10,R26
0192 06BB CPC R11,R27
0193 F028 BCS 0x0199
0194 1A88 SUB R8,R24
0195 0A99 SBC R9,R25
0196 0AAA SBC R10,R26
0197 0ABB SBC R11,R27
0198 9503 INC R16
0199 95EA DEC R30
019A F759 BNE 0x0186
019B F426 BRTC 0x01A0
019C 2D08 MOV R16,R8
019D 2D19 MOV R17,R9
019E 2D2A MOV R18,R10
019F 2D3B MOV R19,R11
01A0 C013 RJMP long_div_epilog
long_div_prolog:
01A1 927A ST R7,-Y
01A2 928A ST R8,-Y
01A3 929A ST R9,-Y
01A4 92AA ST R10,-Y
01A5 92BA ST R11,-Y
01A6 92CA ST R12,-Y
01A7 93EA ST R30,-Y
01A8 938A ST R24,-Y
01A9 939A ST R25,-Y
01AA 93AA ST R26,-Y
01AB 93BA ST R27,-Y
01AC 858B LDD R24,Y+11
01AD 859C LDD R25,Y+12
01AE 85AD LDD R26,Y+13
01AF 85BE LDD R27,Y+14
01B0 2EC3 MOV R12,R19
01B1 F00E BRTS 0x01B3
01B2 26CB EOR R12,R27
01B3 9508 RET
long_div_epilog:
01B4 FCC7 SBRC R12,7
01B5 D017 RCALL neg_R16_R19
01B6 91B9 LD R27,Y+
01B7 91A9 LD R26,Y+
01B8 9199 LD R25,Y+
01B9 9189 LD R24,Y+
01BA 91E9 LD R30,Y+
01BB 90C9 LD R12,Y+
01BC 90B9 LD R11,Y+
01BD 90A9 LD R10,Y+
01BE 9099 LD R9,Y+
01BF 9089 LD R8,Y+
01C0 9079 LD R7,Y+
01C1 9624 ADIW R28,4
01C2 9508 RET
tst_R16_R19:
01C3 2FE0 MOV R30,R16
01C4 2BE1 OR R30,R17
01C5 2BE2 OR R30,R18
01C6 2BE3 OR R30,R19
01C7 9508 RET
tst_R24_R27:
01C8 2FE8 MOV R30,R24
01C9 2BE9 OR R30,R25
01CA 2BEA OR R30,R26
01CB 2BEB OR R30,R27
01CC 9508 RET
neg_R16_R19:
01CD 9500 COM R16
01CE 9510 COM R17
01CF 9520 COM R18
01D0 9530 COM R19
01D1 5F0F SUBI R16,0xFF
01D2 4F1F SBCI R17,0xFF
01D3 4F2F SBCI R18,0xFF
01D4 4F3F SBCI R19,0xFF
01D5 9508 RET
neg_R24_R27:
01D6 9580 COM R24
01D7 9590 COM R25
01D8 95A0 COM R26
01D9 95B0 COM R27
01DA 5F8F SUBI R24,0xFF
01DB 4F9F SBCI R25,0xFF
01DC 4FAF SBCI R26,0xFF
01DD 4FBF SBCI R27,0xFF
01DE 9508 RET
mod8u:
01DF 9468 BSET 6
01E0 C001 RJMP xdiv8u
div8u:
01E1 94E8 BCLR 6
xdiv8u:
01E2 932A ST R18,-Y
01E3 92FA ST R15,-Y
01E4 92EA ST R14,-Y
01E5 24FF CLR R15
01E6 24EE CLR R14
01E7 E120 LDI R18,0x10
01E8 0F00 LSL R16
01E9 1CFF ROL R15
01EA 1CEE ROL R14
01EB 16E1 CP R14,R17
01EC F010 BCS 0x01EF
01ED 1AE1 SUB R14,R17
01EE 9503 INC R16
01EF 952A DEC R18
01F0 F7B9 BNE 0x01E8
01F1 F40E BRTC 0x01F3
01F2 2D0E MOV R16,R14
01F3 90E9 LD R14,Y+
01F4 90F9 LD R15,Y+
01F5 9129 LD R18,Y+
01F6 9508 RET
empy32u:
empy32s:
01F7 940E024D CALL long_prolog
01F9 927F PUSH R7
01FA 940E0266 CALL tstzero1
01FC F139 BEQ 0x0224
01FD 2477 CLR R7
01FE 940E026C CALL tstzero2
0200 F419 BNE 0x0204
0201 018C MOVW R16,R24
0202 019D MOVW R18,R26
0203 C020 RJMP 0x0224
0204 9F08 MUL R16,R24
0205 2CB0 MOV R11,R0
0206 2CA1 MOV R10,R1
0207 9F28 MUL R18,R24
0208 2C90 MOV R9,R0
0209 2C81 MOV R8,R1
020A 9F18 MUL R17,R24
020B 0CA0 ADD R10,R0
020C 1C91 ADC R9,R1
020D 1C87 ADC R8,R7
020E 9F09 MUL R16,R25
020F 0CA0 ADD R10,R0
0210 1C91 ADC R9,R1
0211 1C87 ADC R8,R7
0212 9F19 MUL R17,R25
0213 0C90 ADD R9,R0
0214 1C81 ADC R8,R1
0215 9F0A MUL R16,R26
0216 0C90 ADD R9,R0
0217 1C81 ADC R8,R1
0218 9F38 MUL R19,R24
0219 0C80 ADD R8,R0
021A 9F29 MUL R18,R25
021B 0C80 ADD R8,R0
021C 9F1A MUL R17,R26
021D 0C80 ADD R8,R0
021E 9F0B MUL R16,R27
021F 0C80 ADD R8,R0
0220 2D0B MOV R16,R11
0221 2D1A MOV R17,R10
0222 2D29 MOV R18,R9
0223 2D38 MOV R19,R8
0224 907F POP R7
0225 940C025B JMP long_epilog
pop_gset4:
0227 E0E8 LDI R30,0x8
0228 940C022E JMP pop
push_gset1:
022A 935A ST R21,-Y
022B 934A ST R20,-Y
022C 9508 RET
pop_gset1:
022D E0E1 LDI R30,1
pop:
022E 9149 LD R20,Y+
022F 9159 LD R21,Y+
0230 FDE0 SBRC R30,0
0231 9508 RET
0232 9169 LD R22,Y+
0233 9179 LD R23,Y+
0234 FDE1 SBRC R30,1
0235 9508 RET
0236 90A9 LD R10,Y+
0237 90B9 LD R11,Y+
0238 FDE2 SBRC R30,2
0239 9508 RET
023A 90C9 LD R12,Y+
023B 90D9 LD R13,Y+
023C FDE3 SBRC R30,3
023D 9508 RET
023E 90E9 LD R14,Y+
023F 90F9 LD R15,Y+
0240 9508 RET
push_gset2:
0241 937A ST R23,-Y
0242 936A ST R22,-Y
0243 940C022A JMP push_gset1
push_gset3:
0245 92BA ST R11,-Y
0246 92AA ST R10,-Y
0247 940C0241 JMP push_gset2
push_gset4:
0249 92DA ST R13,-Y
024A 92CA ST R12,-Y
024B 940C0245 JMP push_gset3
long_prolog:
024D 928A ST R8,-Y
024E 929A ST R9,-Y
024F 92AA ST R10,-Y
0250 92BA ST R11,-Y
0251 93EA ST R30,-Y
0252 938A ST R24,-Y
0253 939A ST R25,-Y
0254 93AA ST R26,-Y
0255 93BA ST R27,-Y
0256 8589 LDD R24,Y+9
0257 859A LDD R25,Y+10
0258 85AB LDD R26,Y+11
0259 85BC LDD R27,Y+12
025A 9508 RET
long_epilog:
025B 91B9 LD R27,Y+
025C 91A9 LD R26,Y+
025D 9199 LD R25,Y+
025E 9189 LD R24,Y+
025F 91E9 LD R30,Y+
0260 90B9 LD R11,Y+
0261 90A9 LD R10,Y+
0262 9099 LD R9,Y+
0263 9089 LD R8,Y+
0264 9624 ADIW R28,4
0265 9508 RET
tstzero1:
0266 27EE CLR R30
0267 2BE0 OR R30,R16
0268 2BE1 OR R30,R17
0269 2BE2 OR R30,R18
026A 2BE3 OR R30,R19
026B 9508 RET
tstzero2:
026C 27EE CLR R30
026D 2BE8 OR R30,R24
026E 2BE9 OR R30,R25
026F 2BEA OR R30,R26
0270 2BEB OR R30,R27
0271 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -