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

📄 uart.c

📁 GSM FOR DATA TRANSFER
💻 C
字号:
#include <avr/interrupt.h>
#include "uart.h"

//#define UART_BAUD_RATE 9600L
//#define UART_BAUD_CALC(UART_BAUD_RATE,F_CPU) ((F_CPU)/((UART_BAUD_RATE)*16L)-1)

#define RBUFFLEN 150 

volatile unsigned char rbuff[RBUFFLEN];		
volatile uint8_t 	rbuffpos, 					
					rbuffcnt, 				
					udr_data;		

SIGNAL (SIG_UART_RECV) 		
{
	udr_data= UDR; 	
	
	if(rbuffcnt < RBUFFLEN)		
		rbuff[(rbuffpos+rbuffcnt++) % RBUFFLEN] = udr_data;	
}

unsigned char ser_getc (void)		
{
	unsigned char c;

	while(!rbuffcnt);   		
	
	cli();						
								
	rbuffcnt--;					
	c = rbuff [rbuffpos++];	
	if (rbuffpos >= RBUFFLEN)  rbuffpos = 0;

	sei();						

	return (c);				
}

void uart_putc(unsigned char c)
{
    while(!(UCSRA & (1 << UDRE)));   	
    UDR = c;    					
}

void uart_puts (char *s)
{
    while (*s)
    {   
        uart_putc(*s);
        s++;
    }
}

void uart_ini ()
{
	sei();	

	UCSRB |= (1 << TXEN);	
	UCSRB |= (1 << RXEN );	
	UCSRB |= (1 << RXCIE);	
	UCSRC |= (1<<URSEL)|(1<<UCSZ0)|(1<<UCSZ1);	
//	UBRRH=(uint8_t)(UART_BAUD_CALC(UART_BAUD_RATE,F_CPU)>>8);		// Choose Baudrate
//	UBRRL=(uint8_t)UART_BAUD_CALC(UART_BAUD_RATE,F_CPU);
}

⌨️ 快捷键说明

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