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

📄 cs5532_test.lst

📁 CS5532的驱动程序
💻 LST
📖 第 1 页 / 共 4 页
字号:
(0849) 		
(0850) 		for(i=0;i<uart_rx_counter;i++)
    01D3 2744      CLR	R20
    01D4 2755      CLR	R21
    01D5 C009      RJMP	0x01DF
(0851) 		{
(0852) 			put_char(uart_rx_buf[i]);
    01D6 E68A      LDI	R24,0x6A
    01D7 E090      LDI	R25,0
    01D8 01FA      MOVW	R30,R20
    01D9 0FE8      ADD	R30,R24
    01DA 1FF9      ADC	R31,R25
    01DB 8100      LDD	R16,Z+0
    01DC D036      RCALL	_put_char
    01DD 5F4F      SUBI	R20,0xFF
    01DE 4F5F      SBCI	R21,0xFF
    01DF 9020007F  LDS	R2,uart_rx_counter
    01E1 2433      CLR	R3
    01E2 1542      CP	R20,R2
    01E3 0553      CPC	R21,R3
    01E4 F388      BCS	0x01D6
(0853) 		}
(0854) 		/*switch(cmd)
(0855) 		{
(0856) 			case 0:
(0857) 			{
(0858) 				break;
(0859) 			}
(0860) 			default:
(0861) 			{
(0862) 				break;
(0863) 			}
(0864) 		}*/
(0865) 	}
    01E5 940E02A2  CALL	pop_gset1
    01E7 9508      RET
_uart0_tx_isr:
    01E8 922A      ST	R2,-Y
    01E9 938A      ST	R24,-Y
    01EA 939A      ST	R25,-Y
    01EB 93EA      ST	R30,-Y
    01EC 93FA      ST	R31,-Y
    01ED B62F      IN	R2,0x3F
    01EE 922A      ST	R2,-Y
(0866) }
(0867) 
(0868) /**********************************************************************
(0869) functionName:void uart0_tx_isr(void)
(0870) description:串口发送中断函数
(0871) **********************************************************************/
(0872) #pragma interrupt_handler uart0_tx_isr:14
(0873) void uart0_tx_isr(void)
(0874) {
(0875)  	uart_tx_counter--;
    01EF 9180007E  LDS	R24,uart_tx_counter
    01F1 5081      SUBI	R24,1
    01F2 9380007E  STS	uart_tx_counter,R24
(0876)  	if(uart_tx_counter)		//如果还没有发送完成
    01F4 2388      TST	R24
    01F5 F0A1      BEQ	0x020A
(0877)  	{
(0878)  		UDR=uart_tx_buf[uart_tx_rd_ptr];
    01F6 E882      LDI	R24,0x82
    01F7 E090      LDI	R25,0
    01F8 91E00080  LDS	R30,uart_tx_rd_ptr
    01FA 27FF      CLR	R31
    01FB 0FE8      ADD	R30,R24
    01FC 1FF9      ADC	R31,R25
    01FD 8020      LDD	R2,Z+0
    01FE B82C      OUT	0x0C,R2
(0879) 		uart_tx_rd_ptr++;
    01FF 91800080  LDS	R24,uart_tx_rd_ptr
    0201 5F8F      SUBI	R24,0xFF
    0202 93800080  STS	uart_tx_rd_ptr,R24
(0880) 		if(uart_tx_rd_ptr==UART_BUF_SIZE)uart_tx_rd_ptr=0;
    0204 3184      CPI	R24,0x14
    0205 F429      BNE	0x020B
    0206 2422      CLR	R2
    0207 92200080  STS	uart_tx_rd_ptr,R2
(0881)  	}
    0209 C001      RJMP	0x020B
(0882)  	else
(0883)  	{
(0884)  		UCSRB&=~BIT(TXCIE);		//发送结束中断不使能
    020A 9856      CBI	0x0A,6
(0885)  		//UART_TX_LED;
(0886)  	}
    020B 9029      LD	R2,Y+
    020C BE2F      OUT	0x3F,R2
    020D 91F9      LD	R31,Y+
    020E 91E9      LD	R30,Y+
    020F 9199      LD	R25,Y+
    0210 9189      LD	R24,Y+
    0211 9029      LD	R2,Y+
    0212 9518      RETI
(0887) }
(0888) 
(0889) 
(0890) /**********************************************************************
(0891) functionName:uint08 write_uart(uint08 uart_data)
(0892) description:写串口数据
(0893) **********************************************************************/
(0894) uint08 put_char(uint08 uart_data)
(0895) {
(0896) 	if(uart_tx_counter==UART_BUF_SIZE)
_put_char:
  uart_data            --> R16
    0213 9180007E  LDS	R24,uart_tx_counter
    0215 3184      CPI	R24,0x14
    0216 F411      BNE	0x0219
(0897) 	{
(0898) 		return(UART_FALSE);		//表示串口缓冲器溢出
    0217 2700      CLR	R16
    0218 C02E      RJMP	0x0247
(0899) 	}
(0900) 	uart_tx_buf[uart_tx_wr_ptr]=uart_data;
    0219 E882      LDI	R24,0x82
    021A E090      LDI	R25,0
    021B 91E00081  LDS	R30,uart_tx_wr_ptr
    021D 27FF      CLR	R31
    021E 0FE8      ADD	R30,R24
    021F 1FF9      ADC	R31,R25
    0220 8300      STD	Z+0,R16
(0901) 	uart_tx_wr_ptr++;
    0221 91800081  LDS	R24,uart_tx_wr_ptr
    0223 5F8F      SUBI	R24,0xFF
    0224 93800081  STS	uart_tx_wr_ptr,R24
(0902) 	if(uart_tx_wr_ptr>=UART_BUF_SIZE)uart_tx_wr_ptr=0;
    0226 3184      CPI	R24,0x14
    0227 F018      BCS	0x022B
    0228 2422      CLR	R2
    0229 92200081  STS	uart_tx_wr_ptr,R2
(0903) 	uart_tx_counter++;
    022B 9180007E  LDS	R24,uart_tx_counter
    022D 5F8F      SUBI	R24,0xFF
    022E 9380007E  STS	uart_tx_counter,R24
(0904) 	if(uart_tx_counter==1)
    0230 3081      CPI	R24,1
    0231 F4A1      BNE	0x0246
(0905) 	{
(0906) 		UDR=uart_tx_buf[uart_tx_rd_ptr];
    0232 E882      LDI	R24,0x82
    0233 E090      LDI	R25,0
    0234 91E00080  LDS	R30,uart_tx_rd_ptr
    0236 27FF      CLR	R31
    0237 0FE8      ADD	R30,R24
    0238 1FF9      ADC	R31,R25
    0239 8020      LDD	R2,Z+0
    023A B82C      OUT	0x0C,R2
(0907) 		uart_tx_rd_ptr++;
    023B 91800080  LDS	R24,uart_tx_rd_ptr
    023D 5F8F      SUBI	R24,0xFF
    023E 93800080  STS	uart_tx_rd_ptr,R24
(0908) 		if(uart_tx_rd_ptr==UART_BUF_SIZE)uart_tx_rd_ptr=0;
    0240 3184      CPI	R24,0x14
    0241 F419      BNE	0x0245
    0242 2422      CLR	R2
    0243 92200080  STS	uart_tx_rd_ptr,R2
(0909) 		UCSRB|=BIT(TXCIE);		//发送结束中断使能
    0245 9A56      SBI	0x0A,6
(0910) 	}
(0911) 	return(UART_TURE);
    0246 EF0F      LDI	R16,0xFF
    0247 9508      RET
_put_chars:
  sentData             --> R20
    0248 940E029F  CALL	push_gset1
    024A 01A8      MOVW	R20,R16
(0912) }
(0913) 
(0914) 
(0915) /**********************************************************************
(0916) functionName:putChars(BYTE *sentData)
(0917) description:通过串口发送数据字符串
(0918) **********************************************************************/
(0919) uint08 put_chars(uint08 *sentData)
(0920) {
    024B C009      RJMP	0x0255
(0921)  	while(*sentData)
(0922)  	{
(0923)  		if(put_char(*sentData)==UART_FALSE)
    024C 01FA      MOVW	R30,R20
    024D 8100      LDD	R16,Z+0
    024E DFC4      RCALL	_put_char
    024F 2300      TST	R16
    0250 F411      BNE	0x0253
(0924)  		return(UART_FALSE);
    0251 2700      CLR	R16
    0252 C007      RJMP	0x025A
(0925)  		sentData++;
    0253 5F4F      SUBI	R20,0xFF
    0254 4F5F      SBCI	R21,0xFF
    0255 01FA      MOVW	R30,R20
    0256 8020      LDD	R2,Z+0
    0257 2022      TST	R2
    0258 F799      BNE	0x024C
(0926)  		
(0927)  	}
(0928)  	return(UART_TURE);
    0259 EF0F      LDI	R16,0xFF
    025A 940E02A2  CALL	pop_gset1
    025C 9508      RET
FILE: G:\CS5532\firmware\initial.c
(0001) /****************************************Copyright (c)**************************************************
(0002) **                                 
(0003) **                                     
(0004) **                                 	
(0005) ** 文   件   名: initial.c
(0006) ** 最后修改日期: 2007-10-8 11:17
(0007) ** 描        述: 初始化函数
(0008) ** 版	     本: V1.0
(0009) ** 主  控  芯 片:M16 晶振频率:7.37MHZ, 
(0010) ** IDE:ICCAVR 6.31
(0011) **********************************************************************************************************/
(0012) #include <iom16v.h>
(0013) #include <macros.h>
(0014) 
(0015) #include "DEFINE.H"
(0016) #include "UART.H"
(0017) 
(0018) 
(0019) 
(0020) /**********************************************************************
(0021) functionName:void paraInit(void)
(0022) description:变量初始化
(0023) **********************************************************************/
(0024) void global_para_init(void)
(0025) {
(0026) 	;
_global_para_init:
    025D 9508      RET
(0027) }
(0028) 
(0029) 
(0030) /**********************************************************************
(0031) functionName:void eepromParaInit(void)
(0032) description:对存储在EEPROM的变量初始化
(0033) **********************************************************************/
(0034) void eeprom_para_init(void)
(0035) {
(0036) 	;
_eeprom_para_init:
    025E 9508      RET
(0037) 	
(0038) }
(0039) 
(0040) 
(0041) 
(0042) 
(0043) /**********************************************************************
(0044) functionName:void portInit(void)
(0045) description:M8 IO初始化
(0046) ************************************ **********************************/
(0047) void port_init(void)
(0048) {
(0049)  	PORTA = 0xFF;
_port_init:
    025F EF8F      LDI	R24,0xFF
    0260 BB8B      OUT	0x1B,R24
(0050)  	DDRA  =	0xFF;	
    0261 BB8A      OUT	0x1A,R24
(0051) 	
(0052) 	PORTB = 0xFF;
    0262 BB88      OUT	0x18,R24
(0053)  	DDRB  =	0xFF;	
    0263 BB87      OUT	0x17,R24
(0054)  	
(0055)  	PORTC = 0xFF;
    0264 BB85      OUT	0x15,R24
(0056)  	DDRC  = 0xFF;
    0265 BB84      OUT	0x14,R24
(0057)  	
(0058)  	PORTD = 0xFF;
    0266 BB82      OUT	0x12,R24
(0059)  	DDRD  = 0xFF;
    0267 BB81      OUT	0x11,R24
    0268 9508      RET
(0060) }
(0061) 
(0062) 
(0063) 
(0064) 
(0065) 
(0066) /**********************************************************************
(0067) functionName:void t0Init(void)
(0068) description:定时器0初始化
(0069) **********************************************************************/
(0070) void timer0_init(void)
(0071) {
(0072)  	;
_timer0_init:
    0269 9508      RET
(0073) }
(0074) 
(0075) 
(0076) 
(0077) 
(0078) 
(0079) /**********************************************************************
(0080) functionName:void allInit(void)
(0081) description:初始化所有的器件以及变量
(0082) **********************************************************************/
(0083) void all_init(void)
(0084) {
(0085)  	//开始初始化工作
(0086)  	CLI(); 				//关闭中断源 
_all_init:
    026A 94F8      BCLR	7
(0087)  	port_init();
    026B DFF3      RCALL	_port_init
(0088) 	uart_init();
    026C 940E00EC  CALL	_uart_init
(0089) 	global_para_init();
    026E DFEE      RCALL	_global_para_init
(0090) 	eeprom_para_init();
    026F DFEE      RCALL	_eeprom_para_init
(0091) 	timer0_init();
    0270 DFF8      RCALL	_timer0_init
(0092) 					
(0093) 	MCUCR = 0x00;
    0271 2422      CLR	R2
    0272 BE25      OUT	0x35,R2
(0094)  	GICR  = 0x00;
    0273 BE2B      OUT	0x3B,R2
(0095)  	TIMSK = 0x00; 					//定时器0中断源设置
    0274 BE29      OUT	0x39,R2
(0096)   	SEI();
    0275 9478      BSET	7
    0276 9508      RET
_us_delay:
  i                    --> R20
  ud                   --> R16
    0277 940E029F  CALL	push_gset1
FILE: G:\CS5532\firmware\delay.c
(0001) /****************************************Copyright (c)**************************************************
(0002) **                                 
(0003) **                                     
(0004) **                                 	
(0005) ** 文   件   名: delay.c
(0006) ** 最后修改日期: 2007-10-8 11:19
(0007) ** 描        述: 延时函数
(0008) ** 版	     本: V1.0
(0009) ** 主  控  芯 片:M16  晶振频率:7.37MHZ, 
(0010) ** IDE:ICCAVR 6.31
(0011) **********************************************************************************************************/
(0012) #include <iom16v.h>
(0013) #include <macros.h>
(0014) 
(0015) #include "DEFINE.H"
(0016) 
(0017) /**********************************************************************
(0018) functionName:void us_delay(uint08 ud)
(0019) description:us级别的函数
(0020) ud=10			10us
(0021) ud=50			32.5us
(0022) ud=100			60us
(0023) ud=200			114us
(0024) **********************************************************************/
(0025) void us_delay(uint08 ud)
(0026) {
(0027) 	uint08 i;
(0028) 	for(i=0;i<ud;i++);
    0279 2744      CLR	R20
    027A C001      RJMP	0x027C
    027B 9543      INC	R20
    027C 1740      CP	R20,R16
    027D F3E8      BCS	0x027B
    027E 940E02A2  CALL	pop_gset1
    0280 9508      RET
_ms_delay:
  j                    --> R20
  i                    --> R10
  md                   --> R22
    0281 940E029B  CALL	push_gset3
    0283 2F60      MOV	R22,R16
(0029) }
(0030) 
(0031) /**********************************************************************
(0032) functionName:void ms_delay(void)
(0033) description:ms级别的函数
(0034) md=10	10ms
(0035) md=50	50ms
(0036) md=100	100ms
(0037) md=150	150ms
(0038) md=200	200ms
(0039) **********************************************************************/
(0040) void ms_delay(uint08 md)
(0041) {
(0042) 	uint08 i,j;
(0043) 	for(j=0;j<md;j++)
    0284 2744      CLR	R20
    0285 C009      RJMP	0x028F
(0044) 	{
(0045) 		for(i=0;i<10;i++)
    0286 24AA      CLR	R10
    0287 C003      RJMP	0x028B
(0046) 		us_delay(173);
FILE: <library>
    0288 EA0D      LDI	R16,0xAD
    0289 DFED      RCALL	_us_delay
    028A 94A3      INC	R10
    028B 2D8A      MOV	R24,R10
    028C 308A      CPI	R24,0xA
    028D F3D0      BCS	0x0288
    028E 9543      INC	R20
    028F 1746      CP	R20,R22
    0290 F3A8      BCS	0x0286
    0291 940E0294  CALL	pop_gset3
    0293 9508      RET
pop_gset3:
    0294 E0E4      LDI	R30,4
    0295 940C02A3  JMP	pop
push_gset5:
    0297 92FA      ST	R15,-Y
    0298 92EA      ST	R14,-Y
push_gset4:
    0299 92DA      ST	R13,-Y
    029A 92CA      ST	R12,-Y
push_gset3:
    029B 92BA      ST	R11,-Y
    029C 92AA      ST	R10,-Y
push_gset2:
    029D 937A      ST	R23,-Y
    029E 936A      ST	R22,-Y
push_gset1:
    029F 935A      ST	R21,-Y
    02A0 934A      ST	R20,-Y
    02A1 9508      RET
pop_gset1:
    02A2 E0E1      LDI	R30,1
pop:
    02A3 9149      LD	R20,Y+
    02A4 9159      LD	R21,Y+
    02A5 FDE0      SBRC	R30,0
    02A6 9508      RET
    02A7 9169      LD	R22,Y+
    02A8 9179      LD	R23,Y+
    02A9 FDE1      SBRC	R30,1
    02AA 9508      RET
    02AB 90A9      LD	R10,Y+
    02AC 90B9      LD	R11,Y+
    02AD FDE2      SBRC	R30,2
    02AE 9508      RET
    02AF 90C9      LD	R12,Y+
    02B0 90D9      LD	R13,Y+
    02B1 FDE3      SBRC	R30,3
    02B2 9508      RET
    02B3 90E9      LD	R14,Y+
    02B4 90F9      LD	R15,Y+
    02B5 9508      RET
lsr32:
    02B6 920F      PUSH	R0
    02B7 9009      LD	R0,Y+
    02B8 2000      TST	R0
    02B9 F031      BEQ	0x02C0
    02BA 9536      LSR	R19
    02BB 9527      ROR	R18
    02BC 9517      ROR	R17
    02BD 9507      ROR	R16
    02BE 940A      DEC	R0
    02BF CFF8      RJMP	0x02B8
    02C0 900F      POP	R0
    02C1 9508      RET

⌨️ 快捷键说明

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