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

📄 usart1.c

📁 ARP协议,含ARP
💻 C
字号:

char *hex_char = "0123456789ABCDEF";
extern volatile uc rx1_char;

void put_char(uc c)
{ 
 
    while (!(UCSR1A & (1<<UDRE1)));  /* 等待发送缓冲器为空*/
 	UDR1 = c;    /* 发送数据*/

}

/* 功能:UART发送双字节程序
 * 输入:
 * 输出:无
 * 返回值:无
 * 说明:无
 */
void put_Word(us c)
{ 
  put_char(c);
  put_char(c>>8);
} 

/* 功能:UART发送字符串
 * 输入:
 * 输出:无
 * 返回值:无
 * 说明:无
 */
void put_str(uc *p)
{//发送字符串函数,发送数组
	
	while(0!=*p)
	{
		put_char(*p);
		p++;		
	}
	
}




/* 功能:串口初始化
 * 输入:无
 * 输出:无
 * 返回值:无
 * 说明:无
 */
void init_uart1 (void) 
{

    sbi(DDRD,3);
    cbi(PORTD,3);

    rx1_char = 0;

    //在1Mhz的主频下,9600波特率设置
    UBRR1H = 0;
    UBRR1L = 12;

    //倍速:是;多机模式:否
    UCSR1A = 0x02;

    //使能UART的TX,RX
    //使能接收中断
    //使能发送结束中断;禁止发送缓冲区空中断
    UCSR1B = 0x98;

    //模式设置:异步,8位数据,1位停止位,无校验
    UCSR1C = 0x06;
   // UBRR1H=0x00;
    //UBRR1L=0x06;
}


void put_hex (uc ch) {
    uc idx;
    idx = (ch >> 4);
    put_char (hex_char[idx]);
    idx = (ch & 0x0f);
    put_char (hex_char[idx]);
}

void put_str_hex(uc *p)
{//发送字符串函数,发送数组
	
	while(0!=*p)
	{
		put_hex(*p);
		p++;		
	}
	
}
void put_hex_2 (us n) {
    uc *p;

    p = (uc *)&n;

    put_hex (p[1]);
    put_hex (p[0]);
}

void put_hex_4 (ul n) 
{
    uc *p;

    p = (uc *)&n;

    put_hex (p[3]);
    put_hex (p[2]);
    put_hex (p[1]);
    put_hex (p[0]);
}

void put_hex_6 (uc *p) 
{
	uc i;
	for(i=0;i<6;i++)
	{
		put_hex(*p);
		p++;		
	}
}

void put_hex4 (uc *p) 
{
	uc i;
	for(i=0;i<4;i++)
	{
		put_hex(*p);
		p++;		
	}
}

void putl_str (char *s) 
{
    while (0 != *s) 
	{
        put_char (*s);
        s++;
    }
    put_char ('\r');
    put_char ('\n');
}

⌨️ 快捷键说明

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