亚洲春色中文字幕久久久-三上亚,91精品国产亚一区二区三区,久久久九色综合亚洲成色777,涩涩视频下载,国产午夜亚洲精品午夜鲁丝片,国产精品A一区二区三区腾讯导航,影音先锋色情AV在线看片,蜜臀国产在线视频,极品少妇高潮啪啪无码吴梦梦 ,精品人妻无码一区二区三区手机版

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2057|回復: 0
打印 上一主題 下一主題
收起左側

單片機UART接收中斷接收數據再發送出去

[復制鏈接]
跳轉到指定樓層
樓主
ID:284161 發表于 2018-12-21 10:11 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
實驗五 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++;
        }
        
    }

}



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表