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

📄 main.lst

📁 bootloader
💻 LST
📖 第 1 页 / 共 3 页
字号:
(0367) ** 全局变量: 无
(0368) ** 调用模块: 
(0369) ** 说明:
(0370) ** 注意:
(0371) ********************************************************************************************************/
(0372) uint8 Rbuf_getchar(siocirqueue *RTbuf){
(0373) 	uint8 Btemp=0;
    01DB 2744      CLR	R20
(0374) 	if (!Rbuf_empty(RTbuf)){
    01DC 018B      MOVW	R16,R22
    01DD DFAC      RCALL	_Rbuf_empty
    01DE 2300      TST	R16
    01DF F4C1      BNE	0x01F8
(0375) 		Btemp=RTbuf->R_buf[RTbuf->R_front];
    01E0 01CB      MOVW	R24,R22
    01E1 9604      ADIW	R24,4
    01E2 01FB      MOVW	R30,R22
    01E3 81E0      LDD	R30,Z+0
    01E4 27FF      CLR	R31
    01E5 0FE8      ADD	R30,R24
    01E6 1FF9      ADC	R31,R25
    01E7 8140      LDD	R20,Z+0
(0376) 		REV_DIS();
    01E8 9857      CBI	0x0A,7
(0377) 		RTbuf->R_count--;
    01E9 01CB      MOVW	R24,R22
    01EA 9602      ADIW	R24,2
    01EB 01FC      MOVW	R30,R24
    01EC 8180      LDD	R24,Z+0
    01ED 5081      SUBI	R24,1
    01EE 8380      STD	Z+0,R24
(0378) 		RTbuf->R_front=(RTbuf->R_front+1) % RBUF_SIZE;
    01EF E01A      LDI	R17,0xA
    01F0 01FB      MOVW	R30,R22
    01F1 8100      LDD	R16,Z+0
    01F2 5F0F      SUBI	R16,0xFF
    01F3 940E02EF  CALL	mod8u
    01F5 01FB      MOVW	R30,R22
    01F6 8300      STD	Z+0,R16
(0379) 		REV_EN();
    01F7 9A57      SBI	0x0A,7
(0380) 		}
(0381) 	return (Btemp);
    01F8 2F04      MOV	R16,R20
    01F9 940E0307  CALL	pop_gset2
    01FB 9508      RET
_uart0_rx_isr:
  data                 --> R22
  status               --> R10
  RTbuf                --> R20
    01FC 922A      ST	R2,-Y
    01FD 923A      ST	R3,-Y
    01FE 930A      ST	R16,-Y
    01FF 931A      ST	R17,-Y
    0200 938A      ST	R24,-Y
    0201 939A      ST	R25,-Y
    0202 93EA      ST	R30,-Y
    0203 93FA      ST	R31,-Y
    0204 B62F      IN	R2,0x3F
    0205 922A      ST	R2,-Y
    0206 940E0314  CALL	push_gset3
(0382) 	
(0383) }
(0384) /*********************************************************************************************************
(0385) ** 函数名称: Tbuf_getchar
(0386) ** 功能描述: 从发送缓冲区读一个字符
(0387) ** 输 入: 
(0388) ** 输出	 :  读字符
(0389) ** 全局变量: 无
(0390) ** 调用模块: 
(0391) ** 说明:
(0392) ** 注意:
(0393) ********************************************************************************************************
(0394) uint8 Tbuf_getchar(void){
(0395) 	uint8 Btemp;
(0396) 	if (!Tbuf_empty()){
(0397) 		Btemp=RTbuf->T_buf[RTbuf->T_front];
(0398) 		TXC_DIS();
(0399) 		RTbuf->T_count--;
(0400) 		RTbuf->T_front=(RTbuf->T_front+1) % TBUF_SIZE;
(0401) 		TXC_EN();
(0402) 		return (Btemp);
(0403) 	}
(0404) }
(0405) */
(0406) 
(0407) /******************************* 中断处理函数 ***************************
(0408) * 功能:完成数据得的接收和发送
(0409) ***********************************************************************/
(0410) #if USEUART0
(0411) #pragma interrupt_handler uart0_rx_isr:iv_USART0_RXC 
(0412) void uart0_rx_isr(void)
(0413) {
(0414)  uint8 status,data;
(0415)  siocirqueue *RTbuf;
(0416)  RTbuf=&RTbuf_UART0;
    0208 E64D      LDI	R20,0x6D
    0209 E050      LDI	R21,0
(0417) // CLI();
(0418)  status=UCSR0A;
    020A B0AB      IN	R10,0x0B
(0419)  data=UDR0;
    020B B16C      IN	R22,0x0C
(0420)  //WDR(); //喂狗
(0421)  if((status & (FRAMING_ERROR | DATA_OVERRUN))==0)
    020C 2D8A      MOV	R24,R10
    020D 7188      ANDI	R24,0x18
    020E F009      BEQ	0x0210
    020F C022      RJMP	0x0232
(0422)  	{
(0423) 	if(RTbuf->R_count<RBUF_SIZE){
    0210 01FA      MOVW	R30,R20
    0211 8182      LDD	R24,Z+2
    0212 308A      CPI	R24,0xA
    0213 F008      BCS	0x0215
    0214 C01A      RJMP	0x022F
(0424) 		RTbuf->R_count++;
    0215 01CA      MOVW	R24,R20
    0216 9602      ADIW	R24,2
    0217 01FC      MOVW	R30,R24
    0218 8180      LDD	R24,Z+0
    0219 5F8F      SUBI	R24,0xFF
    021A 8380      STD	Z+0,R24
(0425) 		RTbuf->R_buf[RTbuf->R_rear]=data;
    021B 01CA      MOVW	R24,R20
    021C 9604      ADIW	R24,4
    021D 01FA      MOVW	R30,R20
    021E 81E1      LDD	R30,Z+1
    021F 27FF      CLR	R31
    0220 0FE8      ADD	R30,R24
    0221 1FF9      ADC	R31,R25
    0222 8360      STD	Z+0,R22
(0426) 		RTbuf->R_rear=(RTbuf->R_rear+1) % RBUF_SIZE;
    0223 01CA      MOVW	R24,R20
    0224 9601      ADIW	R24,1
    0225 011C      MOVW	R2,R24
    0226 E01A      LDI	R17,0xA
    0227 01FC      MOVW	R30,R24
    0228 8100      LDD	R16,Z+0
    0229 5F0F      SUBI	R16,0xFF
    022A 940E02EF  CALL	mod8u
    022C 01F1      MOVW	R30,R2
    022D 8300      STD	Z+0,R16
(0427) 		}
    022E C003      RJMP	0x0232
(0428) 	else 
(0429) 	   {
(0430) 	   RTbuf->R_overflow=1;
    022F E081      LDI	R24,1
    0230 01FA      MOVW	R30,R20
    0231 8383      STD	Z+3,R24
(0431) 	   }
(0432) 	}
    0232 940E030A  CALL	pop_gset3
    0234 9029      LD	R2,Y+
    0235 BE2F      OUT	0x3F,R2
    0236 91F9      LD	R31,Y+
    0237 91E9      LD	R30,Y+
    0238 9199      LD	R25,Y+
    0239 9189      LD	R24,Y+
    023A 9119      LD	R17,Y+
    023B 9109      LD	R16,Y+
    023C 9039      LD	R3,Y+
    023D 9029      LD	R2,Y+
    023E 9518      RETI
_uart0_tx_isr:
  RTbuf                --> R20
    023F 922A      ST	R2,-Y
    0240 923A      ST	R3,-Y
    0241 930A      ST	R16,-Y
    0242 931A      ST	R17,-Y
    0243 938A      ST	R24,-Y
    0244 939A      ST	R25,-Y
    0245 93EA      ST	R30,-Y
    0246 93FA      ST	R31,-Y
    0247 B62F      IN	R2,0x3F
    0248 922A      ST	R2,-Y
    0249 940E0318  CALL	push_gset1
(0433) //SEI();
(0434) }
(0435) 	
(0436) #pragma interrupt_handler uart0_tx_isr: iv_USART0_TXC
(0437) void uart0_tx_isr(void)
(0438) {
(0439) //CLI();
(0440)  siocirqueue *RTbuf;
(0441)  //WDR(); //喂狗
(0442)  RTbuf=&RTbuf_UART0;
    024B E64D      LDI	R20,0x6D
    024C E050      LDI	R21,0
(0443)  if (RTbuf->T_count>0){
    024D 2422      CLR	R2
    024E 01FA      MOVW	R30,R20
    024F 8830      LDD	R3,Z+16
    0250 1423      CP	R2,R3
    0251 F008      BCS	0x0253
    0252 C01B      RJMP	0x026E
(0444) 	UDR0=RTbuf->T_buf[RTbuf->T_front];
    0253 01CA      MOVW	R24,R20
    0254 9641      ADIW	R24,0x11
    0255 01FA      MOVW	R30,R20
    0256 85E6      LDD	R30,Z+14
    0257 27FF      CLR	R31
    0258 0FE8      ADD	R30,R24
    0259 1FF9      ADC	R31,R25
    025A 8020      LDD	R2,Z+0
    025B B82C      OUT	0x0C,R2
(0445) 	RTbuf->T_count--;
    025C 01CA      MOVW	R24,R20
    025D 9640      ADIW	R24,0x10
    025E 01FC      MOVW	R30,R24
    025F 8180      LDD	R24,Z+0
    0260 5081      SUBI	R24,1
    0261 8380      STD	Z+0,R24
(0446) 	RTbuf->T_front=(RTbuf->T_front+1) % TBUF_SIZE;
    0262 01CA      MOVW	R24,R20
    0263 960E      ADIW	R24,0xE
    0264 011C      MOVW	R2,R24
    0265 E01A      LDI	R17,0xA
    0266 01FC      MOVW	R30,R24
    0267 8100      LDD	R16,Z+0
    0268 5F0F      SUBI	R16,0xFF
    0269 940E02EF  CALL	mod8u
    026B 01F1      MOVW	R30,R2
    026C 8300      STD	Z+0,R16
(0447) 	}
    026D C003      RJMP	0x0271
(0448)  else RTbuf->T_disabled=1;
FILE: <library>
    026E E081      LDI	R24,1
    026F 01FA      MOVW	R30,R20
    0270 8F83      STD	Z+27,R24
    0271 940E031B  CALL	pop_gset1
    0273 9029      LD	R2,Y+
    0274 BE2F      OUT	0x3F,R2
    0275 91F9      LD	R31,Y+
    0276 91E9      LD	R30,Y+
    0277 9199      LD	R25,Y+
    0278 9189      LD	R24,Y+
    0279 9119      LD	R17,Y+
    027A 9109      LD	R16,Y+
    027B 9039      LD	R3,Y+
    027C 9029      LD	R2,Y+
    027D 9518      RETI
div32u:
    027E 94E8      BCLR	6
    027F C001      RJMP	0x0281
mod32u:
    0280 9468      BSET	6
    0281 D02F      RCALL	long_div_prolog
    0282 24CC      CLR	R12
    0283 C008      RJMP	0x028C
div32s:
    0284 94E8      BCLR	6
    0285 C001      RJMP	0x0287
mod32s:
    0286 9468      BSET	6
    0287 D029      RCALL	long_div_prolog
    0288 FD37      SBRC	R19,7
    0289 D053      RCALL	neg_R16_R19
    028A FDB7      SBRC	R27,7
    028B D05A      RCALL	neg_R24_R27
    028C 2477      CLR	R7
    028D 2488      CLR	R8
    028E 2499      CLR	R9
    028F 24AA      CLR	R10
    0290 24BB      CLR	R11
    0291 D041      RCALL	tst_R16_R19
    0292 F0C1      BEQ	0x02AB
    0293 D044      RCALL	tst_R24_R27
    0294 F0B1      BEQ	0x02AB
    0295 E2E8      LDI	R30,0x28
    0296 0F00      LSL	R16
    0297 1F11      ROL	R17
    0298 1F22      ROL	R18
    0299 1F33      ROL	R19
    029A 1C77      ROL	R7
    029B 1C88      ROL	R8
    029C 1C99      ROL	R9
    029D 1CAA      ROL	R10
    029E 1CBB      ROL	R11
    029F 1688      CP	R8,R24
    02A0 0699      CPC	R9,R25
    02A1 06AA      CPC	R10,R26
    02A2 06BB      CPC	R11,R27
    02A3 F028      BCS	0x02A9
    02A4 1A88      SUB	R8,R24
    02A5 0A99      SBC	R9,R25
    02A6 0AAA      SBC	R10,R26
    02A7 0ABB      SBC	R11,R27
    02A8 9503      INC	R16
    02A9 95EA      DEC	R30
    02AA F759      BNE	0x0296
    02AB F426      BRTC	0x02B0
    02AC 2D08      MOV	R16,R8
    02AD 2D19      MOV	R17,R9
    02AE 2D2A      MOV	R18,R10
    02AF 2D3B      MOV	R19,R11
    02B0 C013      RJMP	long_div_epilog
long_div_prolog:
    02B1 927A      ST	R7,-Y
    02B2 928A      ST	R8,-Y
    02B3 929A      ST	R9,-Y
    02B4 92AA      ST	R10,-Y
    02B5 92BA      ST	R11,-Y
    02B6 92CA      ST	R12,-Y
    02B7 93EA      ST	R30,-Y
    02B8 938A      ST	R24,-Y
    02B9 939A      ST	R25,-Y
    02BA 93AA      ST	R26,-Y
    02BB 93BA      ST	R27,-Y
    02BC 858B      LDD	R24,Y+11
    02BD 859C      LDD	R25,Y+12
    02BE 85AD      LDD	R26,Y+13
    02BF 85BE      LDD	R27,Y+14
    02C0 2EC3      MOV	R12,R19
    02C1 F00E      BRTS	0x02C3
    02C2 26CB      EOR	R12,R27
    02C3 9508      RET
long_div_epilog:
    02C4 FCC7      SBRC	R12,7
    02C5 D017      RCALL	neg_R16_R19
    02C6 91B9      LD	R27,Y+
    02C7 91A9      LD	R26,Y+
    02C8 9199      LD	R25,Y+
    02C9 9189      LD	R24,Y+
    02CA 91E9      LD	R30,Y+
    02CB 90C9      LD	R12,Y+
    02CC 90B9      LD	R11,Y+
    02CD 90A9      LD	R10,Y+
    02CE 9099      LD	R9,Y+
    02CF 9089      LD	R8,Y+
    02D0 9079      LD	R7,Y+
    02D1 9624      ADIW	R28,4
    02D2 9508      RET
tst_R16_R19:
    02D3 2FE0      MOV	R30,R16
    02D4 2BE1      OR	R30,R17
    02D5 2BE2      OR	R30,R18
    02D6 2BE3      OR	R30,R19
    02D7 9508      RET
tst_R24_R27:
    02D8 2FE8      MOV	R30,R24
    02D9 2BE9      OR	R30,R25
    02DA 2BEA      OR	R30,R26
    02DB 2BEB      OR	R30,R27
    02DC 9508      RET
neg_R16_R19:
    02DD 9500      COM	R16
    02DE 9510      COM	R17
    02DF 9520      COM	R18
    02E0 9530      COM	R19
    02E1 5F0F      SUBI	R16,0xFF
    02E2 4F1F      SBCI	R17,0xFF
    02E3 4F2F      SBCI	R18,0xFF
    02E4 4F3F      SBCI	R19,0xFF
    02E5 9508      RET
neg_R24_R27:
    02E6 9580      COM	R24
    02E7 9590      COM	R25
    02E8 95A0      COM	R26
    02E9 95B0      COM	R27
    02EA 5F8F      SUBI	R24,0xFF
    02EB 4F9F      SBCI	R25,0xFF
    02EC 4FAF      SBCI	R26,0xFF
    02ED 4FBF      SBCI	R27,0xFF
    02EE 9508      RET
mod8u:
    02EF 9468      BSET	6
    02F0 C001      RJMP	xdiv8u
div8u:
    02F1 94E8      BCLR	6
xdiv8u:
    02F2 932A      ST	R18,-Y
    02F3 92FA      ST	R15,-Y
    02F4 92EA      ST	R14,-Y
    02F5 24FF      CLR	R15
    02F6 24EE      CLR	R14
    02F7 E120      LDI	R18,0x10
    02F8 0F00      LSL	R16
    02F9 1CFF      ROL	R15
    02FA 1CEE      ROL	R14
    02FB 16E1      CP	R14,R17
    02FC F010      BCS	0x02FF
    02FD 1AE1      SUB	R14,R17
    02FE 9503      INC	R16
    02FF 952A      DEC	R18
    0300 F7B9      BNE	0x02F8
    0301 F40E      BRTC	0x0303
    0302 2D0E      MOV	R16,R14
    0303 90E9      LD	R14,Y+
    0304 90F9      LD	R15,Y+
    0305 9129      LD	R18,Y+
    0306 9508      RET
pop_gset2:
    0307 E0E2      LDI	R30,2
    0308 940C031C  JMP	pop
pop_gset3:
    030A E0E4      LDI	R30,4
    030B 940C031C  JMP	pop
pop_gset4:
    030D E0E8      LDI	R30,0x8
    030E 940C031C  JMP	pop
push_gset5:
    0310 92FA      ST	R15,-Y
    0311 92EA      ST	R14,-Y
push_gset4:
    0312 92DA      ST	R13,-Y
    0313 92CA      ST	R12,-Y
push_gset3:
    0314 92BA      ST	R11,-Y
    0315 92AA      ST	R10,-Y
push_gset2:
    0316 937A      ST	R23,-Y
    0317 936A      ST	R22,-Y
push_gset1:
    0318 935A      ST	R21,-Y
    0319 934A      ST	R20,-Y
    031A 9508      RET
pop_gset1:
    031B E0E1      LDI	R30,1
pop:
    031C 9149      LD	R20,Y+
    031D 9159      LD	R21,Y+
    031E FDE0      SBRC	R30,0
    031F 9508      RET
    0320 9169      LD	R22,Y+
    0321 9179      LD	R23,Y+
    0322 FDE1      SBRC	R30,1
    0323 9508      RET
    0324 90A9      LD	R10,Y+
    0325 90B9      LD	R11,Y+
    0326 FDE2      SBRC	R30,2
    0327 9508      RET
    0328 90C9      LD	R12,Y+
    0329 90D9      LD	R13,Y+
    032A FDE3      SBRC	R30,3
    032B 9508      RET
    032C 90E9      LD	R14,Y+
    032D 90F9      LD	R15,Y+
    032E 9508      RET

⌨️ 快捷键说明

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