📄 uart.c
字号:
//#include <iom16v.h>
//#include <macros.h>
#include <avr/io.h>
unsigned char ill_num=0x00;
unsigned char temp;
unsigned char i,k;
///////////////////////////////////
void delay(void)
{
unsigned int i,j;
for(i=0;i<40000;i++)
for(j=0;j<1;j++)
;
}
///////////////////////////////////
//端口初始化
void port_Init(void)
{
DDRA=0xff;//A口做输出口
PORTA=0x00;//
DDRB=0xff; //B口做输出口
PORTB=0X00;//
DDRC=0xff;//C口作输出口
PORTC=0x00;//
DDRD=0xff;//D口作输出口
PORTD=0x00;//
}
/////////////////////////////////////////////////////
//功能:串口初始化
void Usart_Init(void)//9600,8,1,
{
UCSRB = 0x00; //disable while setting baud rate
UCSRA = 0x00;
UCSRC = 0x86;
UBRRL = 0x33; //set baud rate lo
UBRRH = 0x00; //set baud rate hi
UCSRB = 0x18;
}
//字符输出函数
void Usart_Tx(unsigned char data)
{
while (!(UCSRA&(1<<UDRE)));
UDR=data;
}
//字符输入函数
unsigned char Usart_Rx(void)
{
while(!(UCSRA& (1<<RXC)));
return UDR;
}
///////////////////////////////////////////
void data_class(unsigned char ill_num)
{
Usart_Tx(0xff);//header
Usart_Tx(0x07);//year
Usart_Tx(0x05);//month
Usart_Tx(0x01);//day
Usart_Tx(ill_num);//ill_number
Usart_Tx(0x01);//project_name
Usart_Tx(0x11);//8 正常范围
Usart_Tx(0x22);
Usart_Tx(0x33);
Usart_Tx(0x44);
Usart_Tx(0x55);
Usart_Tx(0x66);
Usart_Tx(0x77);
Usart_Tx(0x88);
Usart_Tx(0x11);//4浓度
Usart_Tx(0x22);
Usart_Tx(0x33);
Usart_Tx(0x44);
Usart_Tx(0x01);//单位
}
///////////////////////////////////////////
void init_devices(void)
{
//CLI(); //禁止所有中断
MCUCR = 0x00;
port_Init();
Usart_Init();
//SEI();//开全局中断
}
//主函数
int main(void)
{
OSCCAL=0xB8;
init_devices();
//data_class(ill_num);
data_class(ill_num);
while(1)
{
/*
do
{
NOP();
}
while(temp==1);
NOP();*/
temp=Usart_Rx();
if(temp!=0)
if(temp==0xFF)
{
data_class(ill_num);
}
else if(temp==0x55)
{
ill_num++;
data_class(ill_num);
}
else
;
else
;
}
return 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -