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

📄 intad.lst

📁 AVR MCU 用于AVR单片机采集模拟信号
💻 LST
📖 第 1 页 / 共 4 页
字号:
(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 + -