久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

52單片機串口發送

[復制鏈接]
跳轉到指定樓層
樓主
ID:373565 發表于 2018-7-18 12:22 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
/*-----------------------------------------------
  名稱:串口通信
  編寫:LZM
  日期:2015.05
  修改:無
  內容:連接好串口波特率設置為9600,無奇偶校驗
        晶振11.0592MHz
                接上串口,可以接收到自己發送的字符
------------------------------------------------*/

#include<reg52.h> //包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存器的定義                        

/*******************************************************************
請提前計算一下所選晶振能達到的最高速度,波特率不能超過最高速度
(1) 波特率加倍(SMOD=1):  Max_Baud = FOSC/12/16
(2) 波特率不加倍(SMOD=0):Max_Baud = FOSC/12/32
例如:22.1184MHz晶振,波特率加倍時,最大波特率=22118400/12/16=115200
*******************************************************************/
#define FOSC        11059200                //振蕩頻率
#define BAUD        9600                        //波特率
#define SMOD        1                        //是否波特率加倍
#if SMOD
        #define TC_VAL        (256-FOSC/16/12/BAUD)
#else
        #define TC_VAL        (256-FOSC/32/12/BAUD)
#endif

typedef unsigned char uint8;
typedef unsigned int uint16;

code const char str1[] = "The string is 來自單片機!\r\n";
code const char str2[] = "Author: louis \r\n";
//const  限定一個變量不允許被改變。在一定程度上提高程序安全性和可靠性
//code 存儲區間為 程序存儲區

/***************函數聲明*******************/
void InitUART(void);
void SendOneByte(uint8);
void SendrStr(const uint8 *ptr);

/****************主函數********************/
void main(void)
{
    uint8 i=0;
    InitUART();

    while(str2[i]!='\0')
    {
        SendOneByte(str2[i++]);       
    }

    SendrStr(str1);

    while(1);
}

/****************中斷服務函數***************/
void UART_ISR(void) interrupt 4
{
    uint8 RX_Data;
    //只響應"接收"中斷,"發送"中斷來了就直接抹掉
    if(RI)
   {
     RI = 0;        //串口中斷標志不能自己清除,需要手動清除
     RX_Data=SBUF;
     SendOneByte(RX_Data);
   }
   else
     TI = 0;                //串口發中斷是發送完緩沖區數據之后產生
}

/****************串口初始化函數*************/
void InitUART(void)
{
    TMOD = 0x20;    //定時器1,模式2工作模式          
    SCON = 0x50;    //串口工作模式1,允許REN   /* SCON: 模式 1,  8-bit UART, 使能接收         */
    TH1 = TC_VAL;
    TL1 = TH1;
    PCON = 0x80;         //發送速率加倍
    ES = 1;
    EA = 1;
    TR1 = 1;
}
/**************串口發送字符函數*************/
void SendOneByte(uint8 c)
{
    ES = 0;                        //禁止中斷,讓串口安心工作啊
    SBUF = c;
    while(!TI);                //等待發送完畢
    TI = 0;                        //清TI中斷
    ES = 1;                        //打開中斷
}
/**************串口發送字符串函數*************/
void SendrStr(const uint8 *ptr)
{
    do
    {
        SendOneByte(*ptr);                //其實發送字符串也是在調用發送字符的函數~~
    }while(*ptr++!='\0');        //要有結束判斷,否則串口發送 字符串 不知道什么時候停止
}


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日本一区二区三区在线观看 | 国产精品久久久久久久久久久久冷 | 在线播放国产视频 | 激情久久av一区av二区av三区 | 久久免费国产 | 成人一级视频在线观看 | 99久久国产综合精品麻豆 | 国产精品精品3d动漫 | 日韩在线播放第一页 | 最新国产精品视频 | 国产成人久久精品一区二区三区 | 精品一区二区三区日本 | 日韩av手机在线观看 | 黄页网址在线观看 | 欧美激情综合五月色丁香小说 | 最新中文字幕在线 | 黄色免费在线观看网站 | 欧美黄色性生活视频 | 2022精品国偷自产免费观看 | 国产精品美女久久久久久不卡 | 欧美视频三区 | 欧美99| 国产色婷婷精品综合在线播放 | 国产精品久久久久久久久久免费看 | 2020国产在线 | 在线亚州 | 中文字幕一区二区三区精彩视频 | 一级片免费观看 | 成人在线视频一区 | 久久久99精品免费观看 | 视频1区2区 | 51ⅴ精品国产91久久久久久 | 国产午夜精品一区二区三区嫩草 | 91精品国产一区二区三区动漫 | 亚洲午夜精品 | 亚洲手机视频在线 | 日本黄色影片在线观看 | 国产日韩一区 | 日韩精品一区二区三区在线播放 | 欧美日韩成人影院 | 国产精品无码久久久久 |