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

📄 main.c

📁 sst芯片参考 增强UART功能
💻 C
字号:
#include <2_UART_SST.h>
#include <stdio.h>

extern xdata struct uart1_rx_strut 
{
	uchar  no_data_count ;			//接收缓冲区无数据的时间计数,接收到数据,将置为0,没有数据时,20ms加一(在定时中断内加一)
	uchar  rx_state ;				//接收的状态
	uchar  rx_bitcont ;				//接收的一个数据的位数(常用的为8位宽度)
	uchar  buff[MAX_SIZE_BUF] ;		//接收缓冲区大小
	uint   count   ;				//已经接收的数据个数,也可根据接收的数目,来判断有无新数据,在取出数据后,将这个数目清零
}uart2_rx,uart1_rx ;				//原来的BUFFER设为256,由于SST89E516的XRAM为300H,如果分配4个256的BUFFER,SST MCU内部的XRAM便不够,
									//因此出现第2个UART不能接收或发送的现象.
//----------------------------------------
void main(void )
{
	UART_SST_init( ) ;			//调用扩展UART的初始化函数
	UART1_rx_disable();			//这里无用,只是防止在编译时出现未调用的警告.
	UART1_rx_enable( );			//允许UART1进行接收
	UART2_rx_disable();			//这里无用,只是防止在编译时出现未调用的警告.
	UART2_rx_enable( );			////允许UART1进行接收

	EA = 1 ;					//开总中断

	while(1)
	{	
		if( uart2_rx.no_data_count > 250 )		//连续250循环中没有接收到数据,开始发送接收的数据
		{										//if didn't receive data beyond 1 second, consider receive data finished
			if( uart2_rx.count != 0 )
				{									//if received data ,transfer it			
				UART2_send_out( uart2_rx.buff ,uart2_rx.count );	//就将接收缓冲区的数据全部发送出去
				uart2_rx.count = 0 ;						//发送完毕,就将接收的数目改为0,表示接收区的内容已全部取出
				}
			uart2_rx.no_data_count = 0 ;		//置接收缓冲区内有数据标志,没有数据时,置为非0标志
		}


		if ( uart1_rx.no_data_count > 250 )		//连续250循环中没有接收到数据,开始发送接收的数据
		{										//if didn't receive data beyond 1 second, consider receive data finished
			if( uart1_rx.count != 0 )
				{									//if received data ,transfer it			
				UART1_send_out( uart1_rx.buff ,uart1_rx.count );	//就将接收缓冲区的数据全部发送出去
				uart1_rx.count = 0 ;						//发送完毕,就将接收的数目改为0,表示接收区的内容已全部取出
				}
			uart1_rx.no_data_count = 0 ;		//置接收缓冲区内有数据标志,没有数据时,置为非0标志
		}


		uart1_rx.no_data_count++;				//一个循环,接收无数据的次数加一
		uart2_rx.no_data_count++;				//一个循环,接收无数据的次数加一
	}	
}	

⌨️ 快捷键说明

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