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

📄 adc.lst

📁 基于MEGA128的双通道AD转换例程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
    03B5 81E0      LDD	R30,Z+0
    03B6 27FF      CLR	R31
    03B7 0FE8      ADD	R30,R24
    03B8 1FF9      ADC	R31,R25
    03B9 8140      LDD	R20,Z+0
(0380) 		REV_DIS();
    03BA 9857      CBI	0x0A,7
(0381) 		RTbuf->R_count--;
    03BB 01CB      MOVW	R24,R22
    03BC 9602      ADIW	R24,2
    03BD 01FC      MOVW	R30,R24
    03BE 8180      LDD	R24,Z+0
    03BF 5081      SUBI	R24,1
    03C0 8380      STD	Z+0,R24
(0382) 		RTbuf->R_front=(RTbuf->R_front+1) % RBUF_SIZE;
    03C1 E614      LDI	R17,0x64
    03C2 01FB      MOVW	R30,R22
    03C3 8100      LDD	R16,Z+0
    03C4 5F0F      SUBI	R16,0xFF
    03C5 940E04EB  CALL	mod8u
    03C7 01FB      MOVW	R30,R22
    03C8 8300      STD	Z+0,R16
(0383) 		REV_EN();
    03C9 9A57      SBI	0x0A,7
(0384) 		}
(0385) 	return (Btemp);
    03CA 2F04      MOV	R16,R20
    03CB 940E0503  CALL	pop_gset2
    03CD 9508      RET
_uart0_rx_isr:
  data                 --> R22
  status               --> R10
  RTbuf                --> R20
    03CE 922A      ST	R2,-Y
    03CF 923A      ST	R3,-Y
    03D0 930A      ST	R16,-Y
    03D1 931A      ST	R17,-Y
    03D2 938A      ST	R24,-Y
    03D3 939A      ST	R25,-Y
    03D4 93EA      ST	R30,-Y
    03D5 93FA      ST	R31,-Y
    03D6 B62F      IN	R2,0x3F
    03D7 922A      ST	R2,-Y
    03D8 940E0510  CALL	push_gset3
(0386) 	
(0387) }
(0388) /*********************************************************************************************************
(0389) ** 函数名称: Tbuf_getchar
(0390) ** 功能描述: 从发送缓冲区读一个字符
(0391) ** 输 入: 
(0392) ** 输出	 :  读字符
(0393) ** 全局变量: 无
(0394) ** 调用模块: 
(0395) ** 说明:
(0396) ** 注意:
(0397) ********************************************************************************************************
(0398) unsigned char Tbuf_getchar(void){
(0399) 	unsigned char Btemp;
(0400) 	if (!Tbuf_empty()){
(0401) 		Btemp=RTbuf->T_buf[RTbuf->T_front];
(0402) 		TXC_DIS();
(0403) 		RTbuf->T_count--;
(0404) 		RTbuf->T_front=(RTbuf->T_front+1) % TBUF_SIZE;
(0405) 		TXC_EN();
(0406) 		return (Btemp);
(0407) 	}
(0408) }
(0409) */
(0410) 
(0411) /******************************* 中断处理函数 ***************************
(0412) * 功能:完成数据得的接收和发送
(0413) ***********************************************************************/
(0414) #if USEUART0
(0415) #pragma interrupt_handler uart0_rx_isr:iv_USART0_RXC 
(0416) void uart0_rx_isr(void)
(0417) {
(0418)  unsigned char status,data;
(0419)  siocirqueue *RTbuf;
(0420)  RTbuf=&RTbuf_UART0;
    03DA E24F      LDI	R20,0x2F
    03DB E051      LDI	R21,1
(0421) // CLI();
(0422)  status=UCSR0A;
    03DC B0AB      IN	R10,0x0B
(0423)  data=UDR0;
    03DD B16C      IN	R22,0x0C
(0424)  //WDR(); //喂狗
(0425)  if((status & (FRAMING_ERROR | DATA_OVERRUN))==0)
    03DE 2D8A      MOV	R24,R10
    03DF 7188      ANDI	R24,0x18
    03E0 F009      BEQ	0x03E2
    03E1 C022      RJMP	0x0404
(0426)  	{
(0427) 	if(RTbuf->R_count<RBUF_SIZE){
    03E2 01FA      MOVW	R30,R20
    03E3 8182      LDD	R24,Z+2
    03E4 3684      CPI	R24,0x64
    03E5 F008      BCS	0x03E7
    03E6 C01A      RJMP	0x0401
(0428) 		RTbuf->R_count++;
    03E7 01CA      MOVW	R24,R20
    03E8 9602      ADIW	R24,2
    03E9 01FC      MOVW	R30,R24
    03EA 8180      LDD	R24,Z+0
    03EB 5F8F      SUBI	R24,0xFF
    03EC 8380      STD	Z+0,R24
(0429) 		RTbuf->R_buf[RTbuf->R_rear]=data;
    03ED 01CA      MOVW	R24,R20
    03EE 9604      ADIW	R24,4
    03EF 01FA      MOVW	R30,R20
    03F0 81E1      LDD	R30,Z+1
    03F1 27FF      CLR	R31
    03F2 0FE8      ADD	R30,R24
    03F3 1FF9      ADC	R31,R25
    03F4 8360      STD	Z+0,R22
(0430) 		RTbuf->R_rear=(RTbuf->R_rear+1) % RBUF_SIZE;
    03F5 01CA      MOVW	R24,R20
    03F6 9601      ADIW	R24,1
    03F7 011C      MOVW	R2,R24
    03F8 E614      LDI	R17,0x64
    03F9 01FC      MOVW	R30,R24
    03FA 8100      LDD	R16,Z+0
    03FB 5F0F      SUBI	R16,0xFF
    03FC 940E04EB  CALL	mod8u
    03FE 01F1      MOVW	R30,R2
    03FF 8300      STD	Z+0,R16
(0431) 		}
    0400 C003      RJMP	0x0404
(0432) 	else 
(0433) 	   {
(0434) 	   RTbuf->R_overflow=1;
    0401 E081      LDI	R24,1
    0402 01FA      MOVW	R30,R20
    0403 8383      STD	Z+3,R24
(0435) 	   }
(0436) 	}
    0404 940E0506  CALL	pop_gset3
    0406 9029      LD	R2,Y+
    0407 BE2F      OUT	0x3F,R2
    0408 91F9      LD	R31,Y+
    0409 91E9      LD	R30,Y+
    040A 9199      LD	R25,Y+
    040B 9189      LD	R24,Y+
    040C 9119      LD	R17,Y+
    040D 9109      LD	R16,Y+
    040E 9039      LD	R3,Y+
    040F 9029      LD	R2,Y+
    0410 9518      RETI
_uart0_tx_isr:
  RTbuf                --> R20
    0411 922A      ST	R2,-Y
    0412 923A      ST	R3,-Y
    0413 930A      ST	R16,-Y
    0414 931A      ST	R17,-Y
    0415 938A      ST	R24,-Y
    0416 939A      ST	R25,-Y
    0417 93EA      ST	R30,-Y
    0418 93FA      ST	R31,-Y
    0419 B62F      IN	R2,0x3F
    041A 922A      ST	R2,-Y
    041B 940E0514  CALL	push_gset1
(0437) //SEI();
(0438) }
(0439) 	
(0440) #pragma interrupt_handler uart0_tx_isr: iv_USART0_TXC
(0441) void uart0_tx_isr(void)
(0442) {
(0443) //CLI();
(0444)  siocirqueue *RTbuf;
(0445)  //WDR(); //喂狗
(0446)  RTbuf=&RTbuf_UART0;
    041D E24F      LDI	R20,0x2F
    041E E051      LDI	R21,1
(0447)  if (RTbuf->T_count>0){
    041F 2422      CLR	R2
    0420 01FA      MOVW	R30,R20
    0421 59E6      SUBI	R30,0x96
    0422 4FFF      SBCI	R31,0xFF
    0423 8030      LDD	R3,Z+0
    0424 1423      CP	R2,R3
    0425 F008      BCS	0x0427
    0426 C020      RJMP	0x0447
(0448) 	UDR0=RTbuf->T_buf[RTbuf->T_front];
    0427 01CA      MOVW	R24,R20
    0428 5985      SUBI	R24,0x95
    0429 4F9F      SBCI	R25,0xFF
    042A 01FA      MOVW	R30,R20
    042B 59E8      SUBI	R30,0x98
    042C 4FFF      SBCI	R31,0xFF
    042D 81E0      LDD	R30,Z+0
    042E 27FF      CLR	R31
    042F 0FE8      ADD	R30,R24
    0430 1FF9      ADC	R31,R25
    0431 8020      LDD	R2,Z+0
    0432 B82C      OUT	0x0C,R2
(0449) 	RTbuf->T_count--;
    0433 01CA      MOVW	R24,R20
    0434 5986      SUBI	R24,0x96
    0435 4F9F      SBCI	R25,0xFF
    0436 01FC      MOVW	R30,R24
    0437 8180      LDD	R24,Z+0
    0438 5081      SUBI	R24,1
    0439 8380      STD	Z+0,R24
(0450) 	RTbuf->T_front=(RTbuf->T_front+1) % TBUF_SIZE;
    043A 01CA      MOVW	R24,R20
    043B 5988      SUBI	R24,0x98
    043C 4F9F      SBCI	R25,0xFF
    043D 011C      MOVW	R2,R24
    043E E614      LDI	R17,0x64
    043F 01FC      MOVW	R30,R24
    0440 8100      LDD	R16,Z+0
    0441 5F0F      SUBI	R16,0xFF
    0442 940E04EB  CALL	mod8u
    0444 01F1      MOVW	R30,R2
    0445 8300      STD	Z+0,R16
(0451) 	}
    0446 C005      RJMP	0x044C
(0452)  else RTbuf->T_disabled=1;
FILE: <library>
    0447 E081      LDI	R24,1
    0448 01FA      MOVW	R30,R20
    0449 53E1      SUBI	R30,0x31
    044A 4FFF      SBCI	R31,0xFF
    044B 8380      STD	Z+0,R24
    044C 940E0517  CALL	pop_gset1
    044E 9029      LD	R2,Y+
    044F BE2F      OUT	0x3F,R2
    0450 91F9      LD	R31,Y+
    0451 91E9      LD	R30,Y+
    0452 9199      LD	R25,Y+
    0453 9189      LD	R24,Y+
    0454 9119      LD	R17,Y+
    0455 9109      LD	R16,Y+
    0456 9039      LD	R3,Y+
    0457 9029      LD	R2,Y+
    0458 9518      RETI
push_arg4:
    0459 933A      ST	R19,-Y
    045A 932A      ST	R18,-Y
push_arg2:
    045B 931A      ST	R17,-Y
    045C 930A      ST	R16,-Y
    045D 9508      RET
mod16u:
    045E 9468      BSET	6
    045F C001      RJMP	xdiv16u
div16u:
    0460 94E8      BCLR	6
xdiv16u:
    0461 92EA      ST	R14,-Y
    0462 92FA      ST	R15,-Y
    0463 938A      ST	R24,-Y
    0464 24EE      CLR	R14
    0465 24FF      CLR	R15
    0466 E180      LDI	R24,0x10
    0467 0F00      LSL	R16
    0468 1F11      ROL	R17
    0469 1CEE      ROL	R14
    046A 1CFF      ROL	R15
    046B 16E2      CP	R14,R18
    046C 06F3      CPC	R15,R19
    046D F018      BCS	0x0471
    046E 1AE2      SUB	R14,R18
    046F 0AF3      SBC	R15,R19
    0470 9503      INC	R16
    0471 958A      DEC	R24
    0472 F7A1      BNE	0x0467
    0473 F416      BRTC	0x0476
    0474 2D0E      MOV	R16,R14
    0475 2D1F      MOV	R17,R15
    0476 9189      LD	R24,Y+
    0477 90F9      LD	R15,Y+
    0478 90E9      LD	R14,Y+
    0479 9508      RET
div32u:
    047A 94E8      BCLR	6
    047B C001      RJMP	0x047D
mod32u:
    047C 9468      BSET	6
    047D D02F      RCALL	long_div_prolog
    047E 24CC      CLR	R12
    047F C008      RJMP	0x0488
div32s:
    0480 94E8      BCLR	6
    0481 C001      RJMP	0x0483
mod32s:
    0482 9468      BSET	6
    0483 D029      RCALL	long_div_prolog
    0484 FD37      SBRC	R19,7
    0485 D053      RCALL	neg_R16_R19
    0486 FDB7      SBRC	R27,7
    0487 D05A      RCALL	neg_R24_R27
    0488 2477      CLR	R7
    0489 2488      CLR	R8
    048A 2499      CLR	R9
    048B 24AA      CLR	R10
    048C 24BB      CLR	R11
    048D D041      RCALL	tst_R16_R19
    048E F0C1      BEQ	0x04A7
    048F D044      RCALL	tst_R24_R27
    0490 F0B1      BEQ	0x04A7
    0491 E2E8      LDI	R30,0x28
    0492 0F00      LSL	R16
    0493 1F11      ROL	R17
    0494 1F22      ROL	R18
    0495 1F33      ROL	R19
    0496 1C77      ROL	R7
    0497 1C88      ROL	R8
    0498 1C99      ROL	R9
    0499 1CAA      ROL	R10
    049A 1CBB      ROL	R11
    049B 1688      CP	R8,R24
    049C 0699      CPC	R9,R25
    049D 06AA      CPC	R10,R26
    049E 06BB      CPC	R11,R27
    049F F028      BCS	0x04A5
    04A0 1A88      SUB	R8,R24
    04A1 0A99      SBC	R9,R25
    04A2 0AAA      SBC	R10,R26
    04A3 0ABB      SBC	R11,R27
    04A4 9503      INC	R16
    04A5 95EA      DEC	R30
    04A6 F759      BNE	0x0492
    04A7 F426      BRTC	0x04AC
    04A8 2D08      MOV	R16,R8
    04A9 2D19      MOV	R17,R9
    04AA 2D2A      MOV	R18,R10
    04AB 2D3B      MOV	R19,R11
    04AC C013      RJMP	long_div_epilog
long_div_prolog:
    04AD 927A      ST	R7,-Y
    04AE 928A      ST	R8,-Y
    04AF 929A      ST	R9,-Y
    04B0 92AA      ST	R10,-Y
    04B1 92BA      ST	R11,-Y
    04B2 92CA      ST	R12,-Y
    04B3 93EA      ST	R30,-Y
    04B4 938A      ST	R24,-Y
    04B5 939A      ST	R25,-Y
    04B6 93AA      ST	R26,-Y
    04B7 93BA      ST	R27,-Y
    04B8 858B      LDD	R24,Y+11
    04B9 859C      LDD	R25,Y+12
    04BA 85AD      LDD	R26,Y+13
    04BB 85BE      LDD	R27,Y+14
    04BC 2EC3      MOV	R12,R19
    04BD F00E      BRTS	0x04BF
    04BE 26CB      EOR	R12,R27
    04BF 9508      RET
long_div_epilog:
    04C0 FCC7      SBRC	R12,7
    04C1 D017      RCALL	neg_R16_R19
    04C2 91B9      LD	R27,Y+
    04C3 91A9      LD	R26,Y+
    04C4 9199      LD	R25,Y+
    04C5 9189      LD	R24,Y+
    04C6 91E9      LD	R30,Y+
    04C7 90C9      LD	R12,Y+
    04C8 90B9      LD	R11,Y+
    04C9 90A9      LD	R10,Y+
    04CA 9099      LD	R9,Y+
    04CB 9089      LD	R8,Y+
    04CC 9079      LD	R7,Y+
    04CD 9624      ADIW	R28,4
    04CE 9508      RET
tst_R16_R19:
    04CF 2FE0      MOV	R30,R16
    04D0 2BE1      OR	R30,R17
    04D1 2BE2      OR	R30,R18
    04D2 2BE3      OR	R30,R19
    04D3 9508      RET
tst_R24_R27:
    04D4 2FE8      MOV	R30,R24
    04D5 2BE9      OR	R30,R25
    04D6 2BEA      OR	R30,R26
    04D7 2BEB      OR	R30,R27
    04D8 9508      RET
neg_R16_R19:
    04D9 9500      COM	R16
    04DA 9510      COM	R17
    04DB 9520      COM	R18
    04DC 9530      COM	R19
    04DD 5F0F      SUBI	R16,0xFF
    04DE 4F1F      SBCI	R17,0xFF
    04DF 4F2F      SBCI	R18,0xFF
    04E0 4F3F      SBCI	R19,0xFF
    04E1 9508      RET
neg_R24_R27:
    04E2 9580      COM	R24
    04E3 9590      COM	R25
    04E4 95A0      COM	R26
    04E5 95B0      COM	R27
    04E6 5F8F      SUBI	R24,0xFF
    04E7 4F9F      SBCI	R25,0xFF
    04E8 4FAF      SBCI	R26,0xFF
    04E9 4FBF      SBCI	R27,0xFF
    04EA 9508      RET
mod8u:
    04EB 9468      BSET	6
    04EC C001      RJMP	xdiv8u
div8u:
    04ED 94E8      BCLR	6
xdiv8u:
    04EE 932A      ST	R18,-Y
    04EF 92FA      ST	R15,-Y
    04F0 92EA      ST	R14,-Y
    04F1 24FF      CLR	R15
    04F2 24EE      CLR	R14
    04F3 E120      LDI	R18,0x10
    04F4 0F00      LSL	R16
    04F5 1CFF      ROL	R15
    04F6 1CEE      ROL	R14
    04F7 16E1      CP	R14,R17
    04F8 F010      BCS	0x04FB

⌨️ 快捷键说明

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