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

📄 queryad.lst

📁 ATmega16应用例子
💻 LST
📖 第 1 页 / 共 2 页
字号:
    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 + -