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

📄 uart.c

📁 atmega128串口通信程序
💻 C
字号:

#include <iom128v.h>
#include "type.h"
#include "bitdef.h"
#include "global.h"

//UART0 initialize
// desired baud rate: 2400
// actual: baud rate:2404 (0.2%)
// char size: 8 bit
// parity: Disabled
void uart0_init(void)
{
 UCSR0B = 0x00; //disable while setting baud rate
 UCSR0A = 0x00;
 UCSR0C = 0x06;
 UBRR0L = 0x67; //set baud rate lo
 UBRR0H = 0x00; //set baud rate hi
 UCSR0B = 0xD8;
}

/*一个字符接收完成中断*///////////////
#pragma interrupt_handler uart0_rx_isr:19
void uart0_rx_isr(void)
{
 //uart has received a character in UDR
 	BYTE com;

 	com=UDR0;
 	rx_buf[rx_point]=com;
 	if(com!=255)
 	{
  	 	rx_point++;
		if(rx_point>19) rx_point=0;
 	}
	else
	{
		rx_point=0;
		if(rx_buf[0]!=bj_address)
		{
		 	siu_flag=FALSE;
			return;
		}
		siu_flag=TRUE;
	}
 
}

/*////////////////////////////////////
一个字符发送完成中断
*/////////////////////////////////////
#pragma interrupt_handler uart0_tx_isr:21
void uart0_tx_isr(void)
{
 //character has been transmitted
	BYTE com;
	if(tx_end)
	{
	    TXCON = 0;   /*释放通讯总线,保持为接收状态,因为485通信是半双工*/
		UCSR0B &= ~(1<<TXCIE0);    /*禁止发送完成中断*/
	 	return;
	}
	com=tx_buf[tx_point];
	UDR0=com;
	tx_point++;
	if(com==255 || tx_point>19)  /*要发送的数据发送结束*/
	{
	 	tx_point=0;
		tx_end=TRUE;
	}
	 
}

⌨️ 快捷键说明

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