?? 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 + -