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

📄 uart.c

📁 以前自己编的avr_gcc的uart的程序
💻 C
字号:
	/*******************************
	内部RC   8 M Hz
	
	*******************************/
	
	
	#include <avr/io.h>
	#include <avr/delay.h>
	#include <avr/interrupt.h>
    
	///宏定义
	
	#define      uchar          unsigned char 
	
	#define      uint           unsigned int 
	
	#define      send_byte      send_data 
	
	#define      rec_byte       rec_data       
    
	uchar rec_buff[8]={0}; 
	uchar m=0,overflag=0;
	uchar recive;
	uchar flag=0;
    
	void  device_init(void)
		{
			DDRB =0XFF;
			DDRC =0XFF;
			DDRD =0XFF;
			PORTD=0XFF;
			PORTC=0XFF;
			PORTB=0XFF;
		}
		
	void  delay(uint t)
		{   
		    uchar i=0,j;
			for(i=0;i<t;i++)
			for(j=0;j<10;j++);
		}
	
	/*****************************
	           串口传送
    ******************************/
			   
	void uart_trans(uchar send_data)
	{
	    uint i=0;
		i++;
     	while(!(UCSRA&(1<<UDRE)));
		UDR=send_data;
		if(i==3)
        {PORTB=0XA0;}	  
       
	}
	
	/**********************************
	           串口中断接收
	**********************************/
    SIGNAL(SIG_UART_RECV)
	{	
        uchar m=0,k=0,temp;  
		while(!(UCSRA)&(1<<RXC));
		for(m=0;m<20;m++)
		temp=UDR;
		k++;
		rec_buff[k]=temp;
		recive=temp;
		if(k==8)  {overflag=1;}  
        PORTB=0Xaa;
        flag=1;	
	}
	
	
	void UART_init(void)
	{
		UBRRH=0;                                   //先写高位寄存器 再写低位 
		UBRRL=51;                                  //8MHz    BAUD=9600  bps
		UCSRB|=_BV(RXEN)|_BV(TXEN)|_BV(RXCIE);    //接收 发送 接收中断使能
		                                           /* 设置帧格式: 8 个数据位, 2 个停止位*/
	}
	
	
	
	int main(void) 
	{
	    device_init();
	    UART_init();
		sei();		
		delay(100);
	    uart_trans(0Xff);
		PORTB=0XF0;
	    delay(100);
		delay(100);
	    uart_trans(0Xff);
	    delay(100);
		
		while(1)
		{
		if(flag==1)
			{uart_trans(recive);flag=0;}

		}
		
		 
	}

⌨️ 快捷键说明

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