📄 queryad.lst
字号:
(0025) ----------------------------------------------------------------------
(0026) 实验内容:
(0027) 使用查询检测AD0口,使用PB/PD口的LED指示AD读到的数据。
(0028) ----------------------------------------------------------------------
(0029) 硬件连接:
(0030) 将“ADJ0.AD0”引针与“MCU.AD0” 引针使用短路帽短接。
(0031) 将PB/PD口的LED指示灯使能开关切换到"ON"状态。
(0032) ----------------------------------------------------------------------
(0033) 注意事项:
(0034) (1)若有加载库函数,请将光盘根目录下的“库函数”下的“ICC_H”文件夹拷到D盘
(0035) (2)请详细阅读:光盘根目录下的“产品资料\开发板实验板\SMK系列\SMK1632\说明资料”
(0036)
(0037) ----------------------------------------------------------------------
(0038) 10101010101010101010101010101010101010101010101010101010101010101010*/
(0039)
(0040) #include <iom16v.h>
(0041) #include "D:\ICC_H\CmmICC.H"
(0042)
(0043) #define H_VAL_DISP_DDR DDRD
(0044) #define L_VAL_DISP_DDR DDRB
(0045) #define H_VAL_DISP_PORT PORTD
(0046) #define L_VAL_DISP_PORT PORTB
(0047)
(0048) const uint8 ADEnStatus[8] = {0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};
(0049)
(0050) uint8 AdcMux; //ADC通道
(0051) uint16 AdcVal; //ADC转换值
(0052)
(0053) /*--------------------------------------------------------------------
(0054) 函数名称:
(0055) 函数功能:
(0056) 注意事项:
(0057) 提示说明:
(0058) 输 入:
(0059) 返 回:
(0060) --------------------------------------------------------------------*/
(0061) void adc_init()
(0062) {
(0063) /*--------
(0064) 设置对应的IO口为输入高阻态
(0065) --------*/
(0066) 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
(0067) 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
(0068)
(0069) ADCSR = 0x00; //disable adc
0212 2422 CLR R2
0213 B826 OUT 0x06,R2
(0070) ADMUX = (1<<REFS0)|(AdcMux&0x0F); //set AVcc as Vref, set adc input channel
0214 91800062 LDS R24,AdcMux
0216 708F ANDI R24,0xF
0217 6480 ORI R24,0x40
0218 B987 OUT 0x07,R24
(0071) ACSR = (1<<ACD); //close analog comparator
0219 E880 LDI R24,0x80
021A B988 OUT 0x08,R24
021B 9508 RET
(0072) //ADCSRA=(1<<ADEN)|(1<<ADIE)|(1<<ADSC)|(1<<ADPS2)|(1<<ADPS1);//64分频
(0073) }
(0074) /*--------------------------------------------------------------------
(0075) 函数名称:
(0076) 函数功能:
(0077) 注意事项:
(0078) 提示说明:
(0079) 输 入:
(0080) 返 回:
(0081) --------------------------------------------------------------------*/
(0082) void main(void)
(0083) {
(0084) H_VAL_DISP_DDR = 0xFF;
_main:
021C EF8F LDI R24,0xFF
021D BB81 OUT 0x11,R24
(0085) L_VAL_DISP_DDR = 0xFF;
021E BB87 OUT 0x17,R24
(0086) AdcMux = 0; //使用ADC通道0
021F 2422 CLR R2
0220 92200062 STS AdcMux,R2
(0087) adc_init();
0222 DFDB RCALL _adc_init
0223 C00D RJMP 0x0231
(0088) while(1)
(0089) {
(0090) ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADPS2)|(1<<ADPS1);
0224 EC86 LDI R24,0xC6
0225 B986 OUT 0x06,R24
(0091) while(!ADSC);
(0092) H_VAL_DISP_PORT = (ADC&0x300)>>8; //ADC的高2位Val
0226 B184 IN R24,0x04
0227 B195 IN R25,0x05
0228 7080 ANDI R24,0
0229 7093 ANDI R25,3
022A 2F89 MOV R24,R25
022B 2799 CLR R25
022C BB82 OUT 0x12,R24
(0093) L_VAL_DISP_PORT = ADC&0xFF; //ADC的低8位Val
FILE: <library>
022D B184 IN R24,0x04
022E B195 IN R25,0x05
022F 7090 ANDI R25,0
0230 BB88 OUT 0x18,R24
0231 CFF2 RJMP 0x0224
0232 9508 RET
push_arg4:
0233 933A ST R19,-Y
0234 932A ST R18,-Y
push_arg2:
0235 931A ST R17,-Y
0236 930A ST R16,-Y
0237 9508 RET
div32u:
0238 94E8 BCLR 6
0239 C001 RJMP 0x023B
mod32u:
023A 9468 BSET 6
023B D02F RCALL long_div_prolog
023C 24CC CLR R12
023D C008 RJMP 0x0246
div32s:
023E 94E8 BCLR 6
023F C001 RJMP 0x0241
mod32s:
0240 9468 BSET 6
0241 D029 RCALL long_div_prolog
0242 FD37 SBRC R19,7
0243 D053 RCALL neg_R16_R19
0244 FDB7 SBRC R27,7
0245 D05A RCALL neg_R24_R27
0246 2477 CLR R7
0247 2488 CLR R8
0248 2499 CLR R9
0249 24AA CLR R10
024A 24BB CLR R11
024B D041 RCALL tst_R16_R19
024C F0C1 BEQ 0x0265
024D D044 RCALL tst_R24_R27
024E F0B1 BEQ 0x0265
024F E2E8 LDI R30,0x28
0250 0F00 LSL R16
0251 1F11 ROL R17
0252 1F22 ROL R18
0253 1F33 ROL R19
0254 1C77 ROL R7
0255 1C88 ROL R8
0256 1C99 ROL R9
0257 1CAA ROL R10
0258 1CBB ROL R11
0259 1688 CP R8,R24
025A 0699 CPC R9,R25
025B 06AA CPC R10,R26
025C 06BB CPC R11,R27
025D F028 BCS 0x0263
025E 1A88 SUB R8,R24
025F 0A99 SBC R9,R25
0260 0AAA SBC R10,R26
0261 0ABB SBC R11,R27
0262 9503 INC R16
0263 95EA DEC R30
0264 F759 BNE 0x0250
0265 F426 BRTC 0x026A
0266 2D08 MOV R16,R8
0267 2D19 MOV R17,R9
0268 2D2A MOV R18,R10
0269 2D3B MOV R19,R11
026A C013 RJMP long_div_epilog
long_div_prolog:
026B 927A ST R7,-Y
026C 928A ST R8,-Y
026D 929A ST R9,-Y
026E 92AA ST R10,-Y
026F 92BA ST R11,-Y
0270 92CA ST R12,-Y
0271 93EA ST R30,-Y
0272 938A ST R24,-Y
0273 939A ST R25,-Y
0274 93AA ST R26,-Y
0275 93BA ST R27,-Y
0276 858B LDD R24,Y+11
0277 859C LDD R25,Y+12
0278 85AD LDD R26,Y+13
0279 85BE LDD R27,Y+14
027A 2EC3 MOV R12,R19
027B F00E BRTS 0x027D
027C 26CB EOR R12,R27
027D 9508 RET
long_div_epilog:
027E FCC7 SBRC R12,7
027F D017 RCALL neg_R16_R19
0280 91B9 LD R27,Y+
0281 91A9 LD R26,Y+
0282 9199 LD R25,Y+
0283 9189 LD R24,Y+
0284 91E9 LD R30,Y+
0285 90C9 LD R12,Y+
0286 90B9 LD R11,Y+
0287 90A9 LD R10,Y+
0288 9099 LD R9,Y+
0289 9089 LD R8,Y+
028A 9079 LD R7,Y+
028B 9624 ADIW R28,4
028C 9508 RET
tst_R16_R19:
028D 2FE0 MOV R30,R16
028E 2BE1 OR R30,R17
028F 2BE2 OR R30,R18
0290 2BE3 OR R30,R19
0291 9508 RET
tst_R24_R27:
0292 2FE8 MOV R30,R24
0293 2BE9 OR R30,R25
0294 2BEA OR R30,R26
0295 2BEB OR R30,R27
0296 9508 RET
neg_R16_R19:
0297 9500 COM R16
0298 9510 COM R17
0299 9520 COM R18
029A 9530 COM R19
029B 5F0F SUBI R16,0xFF
029C 4F1F SBCI R17,0xFF
029D 4F2F SBCI R18,0xFF
029E 4F3F SBCI R19,0xFF
029F 9508 RET
neg_R24_R27:
02A0 9580 COM R24
02A1 9590 COM R25
02A2 95A0 COM R26
02A3 95B0 COM R27
02A4 5F8F SUBI R24,0xFF
02A5 4F9F SBCI R25,0xFF
02A6 4FAF SBCI R26,0xFF
02A7 4FBF SBCI R27,0xFF
02A8 9508 RET
empy32s:
empy32u:
02A9 940E02FE CALL long_prolog
02AB 927F PUSH R7
02AC 940E0317 CALL tstzero1
02AE F139 BEQ 0x02D6
02AF 2477 CLR R7
02B0 940E031D CALL tstzero2
02B2 F419 BNE 0x02B6
02B3 018C MOVW R16,R24
02B4 019D MOVW R18,R26
02B5 C020 RJMP 0x02D6
02B6 9F08 MUL R16,R24
02B7 2CB0 MOV R11,R0
02B8 2CA1 MOV R10,R1
02B9 9F28 MUL R18,R24
02BA 2C90 MOV R9,R0
02BB 2C81 MOV R8,R1
02BC 9F18 MUL R17,R24
02BD 0CA0 ADD R10,R0
02BE 1C91 ADC R9,R1
02BF 1C87 ADC R8,R7
02C0 9F09 MUL R16,R25
02C1 0CA0 ADD R10,R0
02C2 1C91 ADC R9,R1
02C3 1C87 ADC R8,R7
02C4 9F19 MUL R17,R25
02C5 0C90 ADD R9,R0
02C6 1C81 ADC R8,R1
02C7 9F0A MUL R16,R26
02C8 0C90 ADD R9,R0
02C9 1C81 ADC R8,R1
02CA 9F38 MUL R19,R24
02CB 0C80 ADD R8,R0
02CC 9F29 MUL R18,R25
02CD 0C80 ADD R8,R0
02CE 9F1A MUL R17,R26
02CF 0C80 ADD R8,R0
02D0 9F0B MUL R16,R27
02D1 0C80 ADD R8,R0
02D2 2D0B MOV R16,R11
02D3 2D1A MOV R17,R10
02D4 2D29 MOV R18,R9
02D5 2D38 MOV R19,R8
02D6 907F POP R7
02D7 940C030C JMP long_epilog
pop_gset2:
02D9 E0E2 LDI R30,2
02DA 940C02EB JMP pop
pop_gset4:
02DC E0E8 LDI R30,0x8
02DD 940C02EB JMP pop
push_gset5:
02DF 92FA ST R15,-Y
02E0 92EA ST R14,-Y
push_gset4:
02E1 92DA ST R13,-Y
02E2 92CA ST R12,-Y
push_gset3:
02E3 92BA ST R11,-Y
02E4 92AA ST R10,-Y
push_gset2:
02E5 937A ST R23,-Y
02E6 936A ST R22,-Y
push_gset1:
02E7 935A ST R21,-Y
02E8 934A ST R20,-Y
02E9 9508 RET
pop_gset1:
02EA E0E1 LDI R30,1
pop:
02EB 9149 LD R20,Y+
02EC 9159 LD R21,Y+
02ED FDE0 SBRC R30,0
02EE 9508 RET
02EF 9169 LD R22,Y+
02F0 9179 LD R23,Y+
02F1 FDE1 SBRC R30,1
02F2 9508 RET
02F3 90A9 LD R10,Y+
02F4 90B9 LD R11,Y+
02F5 FDE2 SBRC R30,2
02F6 9508 RET
02F7 90C9 LD R12,Y+
02F8 90D9 LD R13,Y+
02F9 FDE3 SBRC R30,3
02FA 9508 RET
02FB 90E9 LD R14,Y+
02FC 90F9 LD R15,Y+
02FD 9508 RET
long_prolog:
02FE 928A ST R8,-Y
02FF 929A ST R9,-Y
0300 92AA ST R10,-Y
0301 92BA ST R11,-Y
0302 93EA ST R30,-Y
0303 938A ST R24,-Y
0304 939A ST R25,-Y
0305 93AA ST R26,-Y
0306 93BA ST R27,-Y
0307 8589 LDD R24,Y+9
0308 859A LDD R25,Y+10
0309 85AB LDD R26,Y+11
030A 85BC LDD R27,Y+12
030B 9508 RET
long_epilog:
030C 91B9 LD R27,Y+
030D 91A9 LD R26,Y+
030E 9199 LD R25,Y+
030F 9189 LD R24,Y+
0310 91E9 LD R30,Y+
0311 90B9 LD R11,Y+
0312 90A9 LD R10,Y+
0313 9099 LD R9,Y+
0314 9089 LD R8,Y+
0315 9624 ADIW R28,4
0316 9508 RET
tstzero1:
0317 27EE CLR R30
0318 2BE0 OR R30,R16
0319 2BE1 OR R30,R17
031A 2BE2 OR R30,R18
031B 2BE3 OR R30,R19
031C 9508 RET
tstzero2:
031D 27EE CLR R30
031E 2BE8 OR R30,R24
031F 2BE9 OR R30,R25
0320 2BEA OR R30,R26
0321 2BEB OR R30,R27
0322 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -