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

📄 uart.lst

📁 AVR单片机ATMEGA128实习之—串口通信(附带Proteus仿真例子)
💻 LST
📖 第 1 页 / 共 2 页
字号:
(0210) 	if (Tx_counter<10)
    010E 91800101  LDS	R24,0x101
    0110 308A      CPI	R24,0xA
    0111 F420      BCC	0x0116
(0211) 	{
(0212) 		Tx_counter += 1;
    0112 5F8F      SUBI	R24,0xFF
    0113 93800101  STS	0x101,R24
(0213) 	}
    0115 C003      RJMP	0x0119
(0214) 	else
(0215) 	{
(0216) 		Tx_counter = 1;
    0116 E081      LDI	R24,1
    0117 93800101  STS	0x101,R24
(0217) 	}
(0218) 	
(0219) 	Tx_data = Tx_data_buf[Tx_counter-1];
    0119 E081      LDI	R24,1
    011A E091      LDI	R25,1
    011B 91E00101  LDS	R30,0x101
    011D 27FF      CLR	R31
    011E 0FE8      ADD	R30,R24
    011F 1FF9      ADC	R31,R25
    0120 8020      LDD	R2,0+Z
    0121 9220013A  STS	_Tx_data,R2
(0220) 	
(0221) 	UDR0 = Tx_data;		//data to transmit
    0123 B82C      OUT	P0C,R2
(0222) 	UCSR0B &=0xbf ;		//1011 1111关闭发送中断
    0124 B18A      IN	R24,P0A
    0125 7B8F      ANDI	R24,0xBF
    0126 B98A      OUT	P0A,R24
(0223) 
(0224) 	while ( !( UCSR0A & (1<<UDRE0)) )	//等待发送缓冲区空
    0127 9B5D      SBIS	P0B,5
    0128 CFFE      RJMP	0x0127
(0225) 	{
(0226) 	}
(0227) 	
(0228) 	UCSR0B |= 0x80;	
    0129 9A57      SBI	P0A,7
(0229) }
    012A 9029      LD	R2,Y+
    012B BE2F      OUT	P3F,R2
    012C 91F9      LD	R31,Y+
    012D 91E9      LD	R30,Y+
    012E 9199      LD	R25,Y+
    012F 9189      LD	R24,Y+
    0130 9029      LD	R2,Y+
    0131 9518      RETI
_UART0_RX_INT:
    0132 922A      ST	R2,-Y
    0133 938A      ST	R24,-Y
    0134 939A      ST	R25,-Y
    0135 93EA      ST	R30,-Y
    0136 93FA      ST	R31,-Y
    0137 B62F      IN	R2,P3F
    0138 922A      ST	R2,-Y
(0230) 
(0231) void UART0_RX_INT(void)
(0232) {
(0233) 	Rx_data = UDR0;
    0139 B02C      IN	R2,P0C
    013A 9220012D  STS	_Rx_data,R2
(0234) 	UART0_RX_flag = 0;
    013C 2422      CLR	R2
    013D 9220010D  STS	0x10D,R2
(0235) 
(0236) 	if (Rx_counter < 10)
    013F 91800100  LDS	R24,0x100
    0141 308A      CPI	R24,0xA
    0142 F420      BCC	0x0147
(0237) 	{
(0238) 		Rx_counter += 1;
    0143 5F8F      SUBI	R24,0xFF
    0144 93800100  STS	0x100,R24
(0239) 	}
    0146 C003      RJMP	0x014A
(0240) 	else
(0241) 	{
(0242) 		Rx_counter = 1;
    0147 E081      LDI	R24,1
    0148 93800100  STS	0x100,R24
(0243) 	}
(0244) 
(0245) 	Rx_data_buf[Rx_counter - 1] = Rx_data; 
    014A E28D      LDI	R24,0x2D
    014B E091      LDI	R25,1
    014C 91E00100  LDS	R30,0x100
    014E 27FF      CLR	R31
    014F 0FE8      ADD	R30,R24
    0150 1FF9      ADC	R31,R25
    0151 9020012D  LDS	R2,_Rx_data
    0153 8220      STD	R2,0+Z
(0246) 	PORTB = Green_LED_on;
    0154 98C1      CBI	P18,1
(0247) 
(0248) }
    0155 9029      LD	R2,Y+
    0156 BE2F      OUT	P3F,R2
    0157 91F9      LD	R31,Y+
    0158 91E9      LD	R30,Y+
    0159 9199      LD	R25,Y+
    015A 9189      LD	R24,Y+
    015B 9029      LD	R2,Y+
    015C 9518      RETI
_External_INT_0:
    015D 920A      ST	R0,-Y
    015E B60F      IN	R0,P3F
    015F 920A      ST	R0,-Y
(0249) 
(0250) void External_INT_0(void)
(0251) {
(0252) 	UCSR0B |= 0x40;
    0160 9A56      SBI	P0A,6
(0253) 	UCSR0B &= ~(0x80);
    0161 9857      CBI	P0A,7
(0254) }
    0162 9009      LD	R0,Y+
    0163 BE0F      OUT	P3F,R0
    0164 9009      LD	R0,Y+
    0165 9518      RETI
_External_INT_1:
    0166 922A      ST	R2,-Y
    0167 938A      ST	R24,-Y
    0168 939A      ST	R25,-Y
    0169 B62F      IN	R2,P3F
    016A 922A      ST	R2,-Y
(0255) 
(0256) void External_INT_1(void)
(0257) {
(0258) 	if (Type_flag < 4 )
    016B 9180010E  LDS	R24,0x10E
    016D 3084      CPI	R24,4
    016E F420      BCC	0x0173
(0259) 	{
(0260) 		Type_flag += 1;
    016F 5F8F      SUBI	R24,0xFF
    0170 9380010E  STS	0x10E,R24
(0261) 	}
    0172 C003      RJMP	0x0176
(0262) 	else
(0263) 	{
(0264) 		Type_flag = 0;
    0173 2422      CLR	R2
    0174 9220010E  STS	0x10E,R2
(0265) 	}
(0266) }
    0176 9029      LD	R2,Y+
    0177 BE2F      OUT	P3F,R2
    0178 9199      LD	R25,Y+
    0179 9189      LD	R24,Y+
    017A 9029      LD	R2,Y+
    017B 9518      RETI
_External_INT_2:
    017C 922A      ST	R2,-Y
    017D 938A      ST	R24,-Y
    017E 939A      ST	R25,-Y
    017F 93EA      ST	R30,-Y
    0180 93FA      ST	R31,-Y
    0181 B62F      IN	R2,P3F
    0182 922A      ST	R2,-Y
(0267) void External_INT_2(void)
(0268) {
(0269)  	
(0270) 	if(m < 12)
    0183 91800127  LDS	R24,_m
    0185 308C      CPI	R24,0xC
    0186 F420      BCC	0x018B
(0271) 	{
(0272) 		m += 1;
    0187 5F8F      SUBI	R24,0xFF
    0188 93800127  STS	_m,R24
(0273) 	}
    018A C003      RJMP	0x018E
(0274) 	else
(0275) 	{
(0276) 		m = 1;
    018B E081      LDI	R24,1
    018C 93800127  STS	_m,R24
(0277) 	}
(0278) 
(0279) 	Display_type = 0x0f;
    018E E08F      LDI	R24,0xF
    018F 93800129  STS	_Display_type,R24
(0280) 	Display_value = Rx_data_buf[m-1];
    0191 E28D      LDI	R24,0x2D
    0192 E091      LDI	R25,1
    0193 91E00127  LDS	R30,_m
    0195 27FF      CLR	R31
    0196 0FE8      ADD	R30,R24
    0197 1FF9      ADC	R31,R25
    0198 8020      LDD	R2,0+Z
    0199 92200128  STS	_Display_value,R2
(0281) 
(0282) 	
(0283) }
    019B 9029      LD	R2,Y+
    019C BE2F      OUT	P3F,R2
    019D 91F9      LD	R31,Y+
    019E 91E9      LD	R30,Y+
    019F 9199      LD	R25,Y+
    01A0 9189      LD	R24,Y+
    01A1 9029      LD	R2,Y+
    01A2 9518      RETI
_LED_Display:
  Data                 --> R22
  Type                 --> R20
    01A3 940E022F  CALL	push_gset2
    01A5 2F62      MOV	R22,R18
    01A6 2F40      MOV	R20,R16
(0284) void LED_Display(unsigned char Type,unsigned char Data)
(0285) {
(0286) 	
(0287) 	DATA_to_NUM(Data);
    01A7 2F06      MOV	R16,R22
    01A8 D03A      RCALL	_DATA_to_NUM
(0288) 	
(0289) 	PORTA = LED_table[number_ge];
    01A9 E08F      LDI	R24,0xF
    01AA E091      LDI	R25,1
    01AB 91E0012A  LDS	R30,_number_ge
    01AD 27FF      CLR	R31
    01AE 0FE8      ADD	R30,R24
    01AF 1FF9      ADC	R31,R25
    01B0 8020      LDD	R2,0+Z
    01B1 BA2B      OUT	P1B,R2
(0290) 	PORTB = (PORTB|0xf0)&0x7F;
    01B2 B388      IN	R24,P18
    01B3 6F80      ORI	R24,0xF0
    01B4 778F      ANDI	R24,0x7F
    01B5 BB88      OUT	P18,R24
(0291) 	Delay();
    01B6 DF42      RCALL	_Delay
(0292) 
(0293) 	PORTA = LED_table[number_shi];
    01B7 E08F      LDI	R24,0xF
    01B8 E091      LDI	R25,1
    01B9 91E0012B  LDS	R30,_number_shi
    01BB 27FF      CLR	R31
    01BC 0FE8      ADD	R30,R24
    01BD 1FF9      ADC	R31,R25
    01BE 8020      LDD	R2,0+Z
    01BF BA2B      OUT	P1B,R2
(0294) 	PORTB = (PORTB|0xf0)&0xBF;
    01C0 B388      IN	R24,P18
    01C1 6F80      ORI	R24,0xF0
    01C2 7B8F      ANDI	R24,0xBF
    01C3 BB88      OUT	P18,R24
(0295) 	Delay();
    01C4 DF34      RCALL	_Delay
(0296) 	
(0297) 	PORTA = LED_table[number_bai];
    01C5 E08F      LDI	R24,0xF
    01C6 E091      LDI	R25,1
    01C7 91E0012C  LDS	R30,_number_bai
    01C9 27FF      CLR	R31
    01CA 0FE8      ADD	R30,R24
    01CB 1FF9      ADC	R31,R25
    01CC 8020      LDD	R2,0+Z
    01CD BA2B      OUT	P1B,R2
(0298) 	PORTB = (PORTB|0xf0)&0xDF;
    01CE B388      IN	R24,P18
    01CF 6F80      ORI	R24,0xF0
    01D0 7D8F      ANDI	R24,0xDF
    01D1 BB88      OUT	P18,R24
(0299) 	Delay();
    01D2 DF26      RCALL	_Delay
(0300) 
(0301) 	PORTA = LED_table[Type];
    01D3 E08F      LDI	R24,0xF
    01D4 E091      LDI	R25,1
    01D5 2FE4      MOV	R30,R20
    01D6 27FF      CLR	R31
    01D7 0FE8      ADD	R30,R24
    01D8 1FF9      ADC	R31,R25
    01D9 8020      LDD	R2,0+Z
    01DA BA2B      OUT	P1B,R2
(0302) 	PORTB =	(PORTB|0xf0)&0xEF;
    01DB B388      IN	R24,P18
    01DC 6F80      ORI	R24,0xF0
    01DD 7E8F      ANDI	R24,0xEF
    01DE BB88      OUT	P18,R24
(0303) 	Delay();
    01DF DF19      RCALL	_Delay
(0304) }
    01E0 940E0215  CALL	pop_gset2
    01E2 9508      RET
_DATA_to_NUM:
  data                 --> R20
    01E3 940E0218  CALL	push_gset1
    01E5 2F40      MOV	R20,R16
(0305) 
(0306) void DATA_to_NUM(unsigned char data)
(0307) {
(0308) 	number_bai = data/100;
    01E6 E614      LDI	R17,0x64
    01E7 2F04      MOV	R16,R20
    01E8 940E0203  CALL	div8u
    01EA 9300012C  STS	_number_bai,R16
(0309) 	number_shi = (data%100)/10;
    01EC E614      LDI	R17,0x64
    01ED 2F04      MOV	R16,R20
    01EE 940E0201  CALL	mod8u
    01F0 E01A      LDI	R17,0xA
    01F1 940E0203  CALL	div8u
    01F3 9300012B  STS	_number_shi,R16
(0310) 	number_ge  = (data%100)%10;
    01F5 E614      LDI	R17,0x64
    01F6 2F04      MOV	R16,R20
    01F7 940E0201  CALL	mod8u
    01F9 E01A      LDI	R17,0xA
    01FA 940E0201  CALL	mod8u
    01FC 9300012A  STS	_number_ge,R16
(0311) }
FILE: <library>
    01FE 940E021B  CALL	pop_gset1
    0200 9508      RET
mod8u:
    0201 9468      BSET	6
    0202 C001      RJMP	xdiv8u
div8u:
    0203 94E8      BCLR	6
xdiv8u:
    0204 932A      ST	R18,-Y
    0205 92FA      ST	R15,-Y
    0206 24FF      CLR	R15
    0207 E028      LDI	R18,0x8
    0208 0F00      LSL	R16
    0209 1CFF      ROL	R15
    020A 16F1      CP	R15,R17
    020B F010      BCS	0x020E
    020C 1AF1      SUB	R15,R17
    020D 9503      INC	R16
    020E 952A      DEC	R18
    020F F7C1      BNE	0x0208
    0210 F40E      BRTC	0x0212
    0211 2D0F      MOV	R16,R15
    0212 90F9      LD	R15,Y+
    0213 9129      LD	R18,Y+
    0214 9508      RET
pop_gset2:
    0215 E0E2      LDI	R30,2
    0216 940C021C  JMP	pop
push_gset1:
    0218 935A      ST	R21,-Y
    0219 934A      ST	R20,-Y
    021A 9508      RET
pop_gset1:
    021B E0E1      LDI	R30,1
pop:
    021C 9149      LD	R20,Y+
    021D 9159      LD	R21,Y+
    021E FDE0      SBRC	R30,0
    021F 9508      RET
    0220 9169      LD	R22,Y+
    0221 9179      LD	R23,Y+
    0222 FDE1      SBRC	R30,1
    0223 9508      RET
    0224 90A9      LD	R10,Y+
    0225 90B9      LD	R11,Y+
    0226 FDE2      SBRC	R30,2
    0227 9508      RET
    0228 90C9      LD	R12,Y+
    0229 90D9      LD	R13,Y+
    022A FDE3      SBRC	R30,3
    022B 9508      RET
    022C 90E9      LD	R14,Y+
    022D 90F9      LD	R15,Y+
    022E 9508      RET
push_gset2:
    022F 937A      ST	R23,-Y
    0230 936A      ST	R22,-Y
    0231 940C0218  JMP	push_gset1

⌨️ 快捷键说明

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