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

📄 uart.c

📁 用ATMEGA 128L 单片机实现对温度传感器LM75的控制
💻 C
字号:
#include <avr/io.h>
#include "type.h"

uchar PC_RecvBuf[20];     //接收数据缓冲区
uchar pc_bRxdPos=0;     //接收定位计数器
uchar pc_bRxdLen=0;     //等待接收字节数
uint  cmddata;

void uart0_init(void)  //串口初始化
{ 
    DDRE &= 0xFE;
    DDRE |= 0x02;
    UCSR0A= 0x00;     // 使用异步正常模式
    UCSR0B= 0x98;     // 1001 1000B 
    UCSR0C= 0x06;     // 0000 0110B 二者说明UCSZ[2~0]=011 则字符长度是8位  没有校验位
    UBRR0H= 0x00;     // 设置波特率寄存器
    UBRR0L= 47;       // UBRR=47 而外部晶振是7.3728MHZ 故波特率由表格知是9600b/s
	 //UBRR0L= 51;
}     

void uart0_Send_Str(char *p) //串口发送字符串 
{	
	uchar j;	 
	for(j=0;*(p+j)!='\0';j++)
	{
		 UDR0=*(p+j);//发送数据
		 while(!(UCSR0A&0x20));//等待发送完成
	}
}

void uart0_Send_Data(char *p,uchar n) //串口发送数据 
{	
	uchar j;	 
	for(j=0;j<n;j++)
	{
		 UDR0=*(p+j);//发送数据
		 while(!(UCSR0A&0x20));//等待发送完成
	}
}

void uart0_Send_uchar(uchar data) //串口发送数据 
{
	 UDR0=data;//发送数据
     while(!(UCSR0A&0x20));//等待发送完成
}

void uart0_Send_uint(uint data) //串口发送数据 
{
	 UDR0=data>>8;//发送数据
     while(!(UCSR0A&0x20));//等待发送完成
	 UDR1=data;//发送数据
     while(!(UCSR0A&0x20));//等待发送完成
}
/*
void uart0_Receive(void)  //串口接受数据
{		 
	for(uchar j=0;j<10;j++)
	{
		 while(!(UCSR0A&0x80));//等待接收完成
		 PC_RecvBuf[j]=UDR0;//接收数据
	}
}*/

//接收指定长度数据到接收缓冲区
void RecvFromPC(uchar size,uchar bwait)
{
    pc_bRxdPos=0;
    pc_bRxdLen=size;
    if(bwait)
	{
        while(pc_bRxdLen>0);
	}
}

//是否接收完成
uchar IsRecvComplete(void)
{
    return pc_bRxdLen==0;
}

⌨️ 快捷键说明

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