實驗五 UART實驗
一、實驗目的
1. 了解單片機的UART的工作原理。
2. 掌握單片機的UART的應用。
二、實驗內容
//1. 編寫程序,設置單片機UART的波特率為9600,用UART的接收中斷接收數據,每接收10個數據,再用UART的發送出去。
typedef unsigned char u8;
#include <stc15.h>
void UartInit(void); //9600bps@11.0592MHz
u8 uart=0;
u8 num=0;
u8 rxdbuf[10]={0};
void main()
{
UartInit();
EA=1;
while(1)
{
}
}
void UartInit(void) //9600bps@11.0592MHz
{
SCON = 0x50; //8位數據,可變波特率
AUXR |= 0x40; //定時器1時鐘為Fosc,即1T
AUXR &= 0xFE; //串口1選擇定時器1為波特率發生器
TMOD &= 0x0F; //設定定時器1為16位自動重裝方式
TL1 = 0xE0; //設定定時初值
TH1 = 0xFE; //設定定時初值
ET1 = 0; //禁止定時器1中斷
ES = 1; //使能串口中斷
TR1 = 1; //啟動定時器1
}
void Uart2() interrupt 4
{
if(RI==1) //接收中斷
{
RI=0; // 標志位清零
rxdbuf[num]=SBUF; //將數據送到數據存儲器
num++;
if(num>=10)
{
num=0;
SBUF=rxdbuf[0]; // 傳輸十次回到第一次傳輸的數據
uart=1; // 成功接收的標志位
}
}
if(TI==1) //發送中斷
{
TI=0; //標志位清零
if(uart<10)
{
SBUF=rxdbuf[uart];//數據發送到 數據存儲器
uart++;
}
}
}
|