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

📄 intad.lst

📁 ATmega16应用例子
💻 LST
📖 第 1 页 / 共 2 页
字号:
    0119 940E0248  CALL	pop_gset1
    011B 9508      RET
_converseHToD:
  dec                  --> R20
  t                    --> Y+0
  hex                  --> R20
    011C 940E0245  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 940E01FC  CALL	div8u
    0124 8309      STD	Y+1,R16
(0222)     t[0]=hex%10;
    0125 E01A      LDI	R17,0xA
    0126 2F04      MOV	R16,R20
    0127 940E01FA  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 940E0248  CALL	pop_gset1
    0133 9508      RET
FILE: E:\ProductPro\M16SD\ICCAVR\AD\IntAD\IntAD.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) /* 设置对应的IO口为输入高阻态 */
(0018) 	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
(0019) 	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
(0020) 
(0021) 	ADCSRA = 0x00;				//disable adc
    0148 2422      CLR	R2
    0149 B826      OUT	0x06,R2
(0022) 	ADMUX = (1<<REFS1)|(1<<REFS0)|(AdcMux&0x0F);	//select adc input channel
    014A 91800062  LDS	R24,_AdcMux
    014C 708F      ANDI	R24,0xF
    014D 6C80      ORI	R24,0xC0
    014E B987      OUT	0x07,R24
(0023) 	ACSR = (1<<ACD);			//close analog comparator
    014F E880      LDI	R24,0x80
    0150 B988      OUT	0x08,R24
(0024) 	ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADIE)|(1<<ADPS2)|(1<<ADPS1); 
    0151 EC8E      LDI	R24,0xCE
    0152 B986      OUT	0x06,R24
(0025) }
    0153 9508      RET
_adc_isr:
    0154 938A      ST	R24,-Y
    0155 939A      ST	R25,-Y
    0156 B78F      IN	R24,0x3F
    0157 938A      ST	R24,-Y
(0026) 
(0027) #pragma interrupt_handler adc_isr:15
(0028) void adc_isr(void)
(0029) {
(0030) 	AdcVal = ADC&0x3FF;
    0158 B184      IN	R24,0x04
    0159 B195      IN	R25,0x05
    015A 7093      ANDI	R25,3
    015B 93900061  STS	_AdcVal+1,R25
    015D 93800060  STS	_AdcVal,R24
(0031) 	ADMUX = (1<<REFS0)|(AdcMux&0x0F);	//使用 AVcc 作为ADC参考电源
    015F 91800062  LDS	R24,_AdcMux
    0161 708F      ANDI	R24,0xF
    0162 6480      ORI	R24,0x40
    0163 B987      OUT	0x07,R24
(0032) 	ADCSRA |= (1<<ADSC);				//ADSC: AD start conversion
    0164 9A36      SBI	0x06,6
(0033) }
    0165 9189      LD	R24,Y+
    0166 BF8F      OUT	0x3F,R24
    0167 9199      LD	R25,Y+
    0168 9189      LD	R24,Y+
    0169 9518      RETI
(0034) 
(0035) void main(void)
(0036) {
(0037) 	H_VAL_DISP_DDR = 0xFF;
_main:
    016A EF8F      LDI	R24,0xFF
    016B BB81      OUT	0x11,R24
(0038) 	L_VAL_DISP_DDR = 0xFF;
    016C BB87      OUT	0x17,R24
(0039) 	AdcMux = 0;	   	 	  //使用ADC通道0
    016D 2422      CLR	R2
    016E 92200062  STS	_AdcMux,R2
(0040) 	adc_init(); 
    0170 DFC3      RCALL	_adc_init
(0041) 	SEI(); 
    0171 9478      BSET	7
    0172 C00F      RJMP	0x0182
(0042) 	while(1)
(0043) 	{  		 
(0044) 		H_VAL_DISP_PORT = (AdcVal&0x300)>>8;	//ADC的高2位Val
    0173 91800060  LDS	R24,_AdcVal
    0175 91900061  LDS	R25,_AdcVal+1
    0177 7080      ANDI	R24,0
    0178 7093      ANDI	R25,3
    0179 2F89      MOV	R24,R25
    017A 2799      CLR	R25
    017B BB82      OUT	0x12,R24
(0045) 		L_VAL_DISP_PORT = AdcVal&0xFF;			//ADC的低8位Val
    017C 91800060  LDS	R24,_AdcVal
    017E 91900061  LDS	R25,_AdcVal+1
    0180 7090      ANDI	R25,0
    0181 BB88      OUT	0x18,R24
    0182 CFF0      RJMP	0x0173
(0046) 	}
(0047) }
FILE: <library>
    0183 9508      RET
push_arg4:
    0184 933A      ST	R19,-Y
    0185 932A      ST	R18,-Y
push_arg2:
    0186 931A      ST	R17,-Y
    0187 930A      ST	R16,-Y
    0188 9508      RET
div32u:
    0189 94E8      BCLR	6
    018A C001      RJMP	0x018C
mod32u:
    018B 9468      BSET	6
    018C D02F      RCALL	long_div_prolog
    018D 24CC      CLR	R12
    018E C008      RJMP	0x0197
div32s:
    018F 94E8      BCLR	6
    0190 C001      RJMP	0x0192
mod32s:
    0191 9468      BSET	6
    0192 D029      RCALL	long_div_prolog
    0193 FD37      SBRC	R19,7
    0194 D053      RCALL	neg_R16_R19
    0195 FDB7      SBRC	R27,7
    0196 D05A      RCALL	neg_R24_R27
    0197 2477      CLR	R7
    0198 2488      CLR	R8
    0199 2499      CLR	R9
    019A 24AA      CLR	R10
    019B 24BB      CLR	R11
    019C D041      RCALL	tst_R16_R19
    019D F0C1      BEQ	0x01B6
    019E D044      RCALL	tst_R24_R27
    019F F0B1      BEQ	0x01B6
    01A0 E2E8      LDI	R30,0x28
    01A1 0F00      LSL	R16
    01A2 1F11      ROL	R17
    01A3 1F22      ROL	R18
    01A4 1F33      ROL	R19
    01A5 1C77      ROL	R7
    01A6 1C88      ROL	R8
    01A7 1C99      ROL	R9
    01A8 1CAA      ROL	R10
    01A9 1CBB      ROL	R11
    01AA 1688      CP	R8,R24
    01AB 0699      CPC	R9,R25
    01AC 06AA      CPC	R10,R26
    01AD 06BB      CPC	R11,R27
    01AE F028      BCS	0x01B4
    01AF 1A88      SUB	R8,R24
    01B0 0A99      SBC	R9,R25
    01B1 0AAA      SBC	R10,R26
    01B2 0ABB      SBC	R11,R27
    01B3 9503      INC	R16
    01B4 95EA      DEC	R30
    01B5 F759      BNE	0x01A1
    01B6 F426      BRTC	0x01BB
    01B7 2D08      MOV	R16,R8
    01B8 2D19      MOV	R17,R9
    01B9 2D2A      MOV	R18,R10
    01BA 2D3B      MOV	R19,R11
    01BB C013      RJMP	long_div_epilog
long_div_prolog:
    01BC 927A      ST	R7,-Y
    01BD 928A      ST	R8,-Y
    01BE 929A      ST	R9,-Y
    01BF 92AA      ST	R10,-Y
    01C0 92BA      ST	R11,-Y
    01C1 92CA      ST	R12,-Y
    01C2 93EA      ST	R30,-Y
    01C3 938A      ST	R24,-Y
    01C4 939A      ST	R25,-Y
    01C5 93AA      ST	R26,-Y
    01C6 93BA      ST	R27,-Y
    01C7 858B      LDD	R24,Y+11
    01C8 859C      LDD	R25,Y+12
    01C9 85AD      LDD	R26,Y+13
    01CA 85BE      LDD	R27,Y+14
    01CB 2EC3      MOV	R12,R19
    01CC F00E      BRTS	0x01CE
    01CD 26CB      EOR	R12,R27
    01CE 9508      RET
long_div_epilog:
    01CF FCC7      SBRC	R12,7
    01D0 D017      RCALL	neg_R16_R19
    01D1 91B9      LD	R27,Y+
    01D2 91A9      LD	R26,Y+
    01D3 9199      LD	R25,Y+
    01D4 9189      LD	R24,Y+
    01D5 91E9      LD	R30,Y+
    01D6 90C9      LD	R12,Y+
    01D7 90B9      LD	R11,Y+
    01D8 90A9      LD	R10,Y+
    01D9 9099      LD	R9,Y+
    01DA 9089      LD	R8,Y+
    01DB 9079      LD	R7,Y+
    01DC 9624      ADIW	R28,4
    01DD 9508      RET
tst_R16_R19:
    01DE 2FE0      MOV	R30,R16
    01DF 2BE1      OR	R30,R17
    01E0 2BE2      OR	R30,R18
    01E1 2BE3      OR	R30,R19
    01E2 9508      RET
tst_R24_R27:
    01E3 2FE8      MOV	R30,R24
    01E4 2BE9      OR	R30,R25
    01E5 2BEA      OR	R30,R26
    01E6 2BEB      OR	R30,R27
    01E7 9508      RET
neg_R16_R19:
    01E8 9500      COM	R16
    01E9 9510      COM	R17
    01EA 9520      COM	R18
    01EB 9530      COM	R19
    01EC 5F0F      SUBI	R16,0xFF
    01ED 4F1F      SBCI	R17,0xFF
    01EE 4F2F      SBCI	R18,0xFF
    01EF 4F3F      SBCI	R19,0xFF
    01F0 9508      RET
neg_R24_R27:
    01F1 9580      COM	R24
    01F2 9590      COM	R25
    01F3 95A0      COM	R26
    01F4 95B0      COM	R27
    01F5 5F8F      SUBI	R24,0xFF
    01F6 4F9F      SBCI	R25,0xFF
    01F7 4FAF      SBCI	R26,0xFF
    01F8 4FBF      SBCI	R27,0xFF
    01F9 9508      RET
mod8u:
    01FA 9468      BSET	6
    01FB C001      RJMP	xdiv8u
div8u:
    01FC 94E8      BCLR	6
xdiv8u:
    01FD 932A      ST	R18,-Y
    01FE 92FA      ST	R15,-Y
    01FF 92EA      ST	R14,-Y
    0200 24FF      CLR	R15
    0201 24EE      CLR	R14
    0202 E120      LDI	R18,0x10
    0203 0F00      LSL	R16
    0204 1CFF      ROL	R15
    0205 1CEE      ROL	R14
    0206 16E1      CP	R14,R17
    0207 F010      BCS	0x020A
    0208 1AE1      SUB	R14,R17
    0209 9503      INC	R16
    020A 952A      DEC	R18
    020B F7B9      BNE	0x0203
    020C F40E      BRTC	0x020E
    020D 2D0E      MOV	R16,R14
    020E 90E9      LD	R14,Y+
    020F 90F9      LD	R15,Y+
    0210 9129      LD	R18,Y+
    0211 9508      RET
empy32u:
empy32s:
    0212 940E0268  CALL	long_prolog
    0214 927F      PUSH	R7
    0215 940E0281  CALL	tstzero1
    0217 F139      BEQ	0x023F
    0218 2477      CLR	R7
    0219 940E0287  CALL	tstzero2
    021B F419      BNE	0x021F
    021C 018C      MOVW	R16,R24
    021D 019D      MOVW	R18,R26
    021E C020      RJMP	0x023F
    021F 9F08      MUL	R16,R24
    0220 2CB0      MOV	R11,R0
    0221 2CA1      MOV	R10,R1
    0222 9F28      MUL	R18,R24
    0223 2C90      MOV	R9,R0
    0224 2C81      MOV	R8,R1
    0225 9F18      MUL	R17,R24
    0226 0CA0      ADD	R10,R0
    0227 1C91      ADC	R9,R1
    0228 1C87      ADC	R8,R7
    0229 9F09      MUL	R16,R25
    022A 0CA0      ADD	R10,R0
    022B 1C91      ADC	R9,R1
    022C 1C87      ADC	R8,R7
    022D 9F19      MUL	R17,R25
    022E 0C90      ADD	R9,R0
    022F 1C81      ADC	R8,R1
    0230 9F0A      MUL	R16,R26
    0231 0C90      ADD	R9,R0
    0232 1C81      ADC	R8,R1
    0233 9F38      MUL	R19,R24
    0234 0C80      ADD	R8,R0
    0235 9F29      MUL	R18,R25
    0236 0C80      ADD	R8,R0
    0237 9F1A      MUL	R17,R26
    0238 0C80      ADD	R8,R0
    0239 9F0B      MUL	R16,R27
    023A 0C80      ADD	R8,R0
    023B 2D0B      MOV	R16,R11
    023C 2D1A      MOV	R17,R10
    023D 2D29      MOV	R18,R9
    023E 2D38      MOV	R19,R8
    023F 907F      POP	R7
    0240 940C0276  JMP	long_epilog
pop_gset4:
    0242 E0E8      LDI	R30,0x8
    0243 940C0249  JMP	pop
push_gset1:
    0245 935A      ST	R21,-Y
    0246 934A      ST	R20,-Y
    0247 9508      RET
pop_gset1:
    0248 E0E1      LDI	R30,1
pop:
    0249 9149      LD	R20,Y+
    024A 9159      LD	R21,Y+
    024B FDE0      SBRC	R30,0
    024C 9508      RET
    024D 9169      LD	R22,Y+
    024E 9179      LD	R23,Y+
    024F FDE1      SBRC	R30,1
    0250 9508      RET
    0251 90A9      LD	R10,Y+
    0252 90B9      LD	R11,Y+
    0253 FDE2      SBRC	R30,2
    0254 9508      RET
    0255 90C9      LD	R12,Y+
    0256 90D9      LD	R13,Y+
    0257 FDE3      SBRC	R30,3
    0258 9508      RET
    0259 90E9      LD	R14,Y+
    025A 90F9      LD	R15,Y+
    025B 9508      RET
push_gset2:
    025C 937A      ST	R23,-Y
    025D 936A      ST	R22,-Y
    025E 940C0245  JMP	push_gset1
push_gset3:
    0260 92BA      ST	R11,-Y
    0261 92AA      ST	R10,-Y
    0262 940C025C  JMP	push_gset2
push_gset4:
    0264 92DA      ST	R13,-Y
    0265 92CA      ST	R12,-Y
    0266 940C0260  JMP	push_gset3
long_prolog:
    0268 928A      ST	R8,-Y
    0269 929A      ST	R9,-Y
    026A 92AA      ST	R10,-Y
    026B 92BA      ST	R11,-Y
    026C 93EA      ST	R30,-Y
    026D 938A      ST	R24,-Y
    026E 939A      ST	R25,-Y
    026F 93AA      ST	R26,-Y
    0270 93BA      ST	R27,-Y
    0271 8589      LDD	R24,Y+9
    0272 859A      LDD	R25,Y+10
    0273 85AB      LDD	R26,Y+11
    0274 85BC      LDD	R27,Y+12
    0275 9508      RET
long_epilog:
    0276 91B9      LD	R27,Y+
    0277 91A9      LD	R26,Y+
    0278 9199      LD	R25,Y+
    0279 9189      LD	R24,Y+
    027A 91E9      LD	R30,Y+
    027B 90B9      LD	R11,Y+
    027C 90A9      LD	R10,Y+
    027D 9099      LD	R9,Y+
    027E 9089      LD	R8,Y+
    027F 9624      ADIW	R28,4
    0280 9508      RET
tstzero1:
    0281 27EE      CLR	R30
    0282 2BE0      OR	R30,R16
    0283 2BE1      OR	R30,R17
    0284 2BE2      OR	R30,R18
    0285 2BE3      OR	R30,R19
    0286 9508      RET
tstzero2:
    0287 27EE      CLR	R30
    0288 2BE8      OR	R30,R24
    0289 2BE9      OR	R30,R25
    028A 2BEA      OR	R30,R26
    028B 2BEB      OR	R30,R27
    028C 9508      RET

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -