⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 queryad.lst

📁 AVR 单片机 多路AD转换采集程序
💻 LST
📖 第 1 页 / 共 4 页
字号:
(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 + -