mega16試驗(yàn)板測(cè)試代碼1-串口測(cè)試程序
//uart.h
/**********串口端口定義**********/
#define RxD PD0
#define TxD PD1
#define baudrate 9600 //波特率
#define F_CPU 8000000UL //定義晶振頻率
void uart_init(void)
{
/*****RS232口線設(shè)置*****/
PORTD|=BIT(RxD)|BIT(TxD);
DDRD&=~BIT(RxD);
DDRD|=BIT(TxD);
/* 設(shè)置波特率*/
UBRRL=(F_CPU/baudrate/16-1)%256; //本設(shè)置波特率不加倍及U2X=0
UBRRH=(F_CPU/baudrate/16-1)/256;
/* 接收器與發(fā)送器使能*/
UCSRB|=BIT(4)|BIT(3);
/*設(shè)置傳輸格式*/
//異步,8位數(shù)據(jù),無(wú)奇偶校驗(yàn),一個(gè)停止位,無(wú)倍速
UCSRC|=BIT(7)|BIT(2)|BIT(1);
}
//串口數(shù)據(jù)發(fā)送,查詢方式
void putc(unsigned char c)
{
/* 等待發(fā)送緩沖器為空 */
while (!(UCSRA&(1<
UDR = c;
}
//串口字符串發(fā)送,查詢方式
void puts(unsigned char *s)
{
while(*s)
{
putc(*s);
s++;
}
putc('n');
//return 1;
}
//串口數(shù)據(jù)接收,查詢方式
unsigned char getc(void)
{
/* 等待接收數(shù)據(jù)*/
while (!(UCSRA&(1<
return UDR;
}
//串口接收數(shù)據(jù)存儲(chǔ),存儲(chǔ)到數(shù)組中
void get_s(unsigned char *js,unsigned int num)
{
unsigned int i;
for(i=0;i
js[i]=getc();//保存數(shù)據(jù)到數(shù)組里面
}
}
//test.c
//ICC-AVR application builder : 2008-11-4 12:34:31
// Target : M16
// Crystal: 8.0000Mhz
#include
#include
#include "uart.h"
void main(void)
{
uart_init();
while(1)
{
putc(getc());
}
}