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

📄 16c752例程.txt

📁 飞利浦的sc16c752b芯片应用
💻 TXT
字号:
unsigned int receive_232_data[160];
unsigned int receive_count;
unsigned int deal_count;
unsigned int temp;
unsigned int over_flag; 
int i=0;

void main(void)
{
    	   
    	over_flag = 0; 
    	receive_count = 0;
    	deal_count = 0;
    	DINT;
    	SystemInit(); 
    	init_UART();
    	*IFR = 0x3f;
		*IMR = 0x01; 
    	
    	EINT;    


	for(;;)
	{
		if(receive_count != deal_count)
		{	
			temp = UARTA_LSR&0x40;
        	if(temp == 0x40)
        	{
        		for(i = 0; i < 16; i++)
        		{
        			UARTA_THR = receive_232_data[16*deal_count+i];
        		}  
        		deal_count++;
        		if(deal_count == 10)	deal_count = 0;
        	}         
        }


/*
        	for(i = 0; i < 0xffff; i++)
        	{
        	     asm(" NOP");
        	} 
        	
        	temp = UARTA_LSR&0x01;              
        	if(temp == 0x01)
   			{
   				for(i = 0; i < 16; i++)
   				{
   					receive_232_data[i] = UARTA_RHR&0xff;
   				} 
   				over_flag = 1; 
   			}  */
	}
} 	

void SystemInit(void)
{	
	WSGR = 0x1ff;
	*WDCR = 0x6f;
	*SCSR1 = 0x0200; 
	
	*MCRA = 0x04; 
	*XINT1CR = 0x01;
}     

void PHANTOM(void)
{

}

void init_UART(void)
{
	
/*	UARTA_LCR = 0xbf;
	UARTA_EFR = 0x10;
	UARTA_LCR = 0;
	UARTA_MCR = 0;*/
	
	
	
	UARTA_LCR = (data_w8+data_s1+uart_parity+LC_1_DLAB);	/*8位数据 1停止位 偶校验位 开启除数转换*/
	UARTA_DLL = buad_19k2_l;						/*9.6K波特率*/
	UARTA_DLH = buad_19k2_h;
	UARTA_LCR = (data_w8+data_s1+uart_parity+LC_0_DLAB);	/*8位数据 1停止位 偶校验位 开启其余寄存器转换*/
	
	UARTA_MCR = UartLoop;
	
	UARTA_FCR = fifo_reset;
//	UARTA_IER = 0;
	UARTA_FCR = fifo_enable+fifo_txdip16+fifo_rxdip16;
	
	 
//	temp = UARTA_RHR;
	UARTA_IER = uartint_rhr;
} 

interrupt void c_int1(void)
{
	int i;

	if((*PIVR & 0x01) == 0x01)
	{
		
   		if((INT1_RD & 0x02) == 0x02)
   		{
   			if((UARTA_LSR&0x01) == 0x01)
   			{
   				for(i = 0; i < 16; i++)
   				{
   					receive_232_data[16*receive_count+i] = UARTA_RHR&0xff;  
   				}
   				receive_count++; 
   				if(receive_count == 10)	receive_count = 0;  
   			}
   			else
   			{
   				UARTA_FCR = 0x02;
   			}
   		}
	}    
	*XINT1CR = *XINT1CR | 0x8000;
	*IFR = 0x01; 
	EINT;
}

⌨️ 快捷键说明

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