欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 單片機UART接收中斷接收數據再發(fā)送出去 [打印本頁]

作者: 墨水是你    時間: 2018-12-21 10:11
標題: 單片機UART接收中斷接收數據再發(fā)送出去
實驗五 UART實驗
一、實驗目的
1. 了解單片機的UART的工作原理。
2. 掌握單片機的UART的應用。
二、實驗內容

//1. 編寫程序,設置單片機UART的波特率為9600,用UART的接收中斷接收數據,每接收10個數據,再用UART的發(fā)送出去。
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為波特率發(fā)生器
    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)  //發(fā)送中斷
    {        
        TI=0;    //標志位清零
        if(uart<10)
        {
            SBUF=rxdbuf[uart];//數據發(fā)送到 數據存儲器
            uart++;
        }
        
    }

}








歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1