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

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

C51單片機串口通信

作者:huqin   來源:本站原創   點擊數:  更新時間:2014年04月13日   【字體:

1、在使用串口之前,應對其進行初始化,步驟如下:
(1)定時器1工作模式,設置TMOD寄存器
(2)裝載TH1,TL1,決定波特率的值
(3)啟動定時器1
(4)串口工作模式設置,SCON
(5)如需中斷,開總中斷,開串行中斷

 

2、如需奇偶校驗:
偶校驗:就是發送的8個數據位的1的個數為偶數時,TB8=0;為奇數時,TB8=1;
奇校驗:與偶校驗相反的TB8。

用軟件產生奇偶校驗位是根據51系列單片機的狀態寄存器PSW的定義:當累加器ACC中為1的個數為奇數時,P=1,否則P=0。

 

3、程序(采用偶校驗)
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar rcvd_num;
bit chk_error;
bit rcvd_ok;
void init(void);
void main(void)
{
    init();
    while(1)
    {
        if(rcvd_ok)
        {
            rcvd_ok=0;
            ES=0;
            if(chk_error)
            {
                ACC='e';
                TB8=P;
                SBUF='e';
                while(!TI);
                TI=0;               
            }
            else
            {
                P0=rcvd_num;
                ACC='c';
                TB8=P;
                SBUF='c';
                while(!TI);
                TI=0;
            }
            ES=1;
        }
     
}
void init(void)
{
    TMOD=0x20;  //定時器1工作模式2
    TH1=0xfd; //初值裝載,波特率9600
    TL1=0xfd;
    SCON=0x50;  //串口工作模式3
    EA=1;       //開總中斷
    ES=1;       //開串行中斷
    TR1=1;      //啟動定時器1
}
void serial() interrupt 4
{
    rcvd_num=SBUF;
    ACC=rcvd_num;       //將數據送入累加器中算出1奇偶個數,奇數時P為1,偶數時P為0;
    if(RB8==P)chk_error=0; //1奇偶個數與發送的相同,則數據無錯
    else chk_error=1;
    RI=0;
    rcvd_ok=1;      //接收完成標志位 
}

 

關閉窗口

相關文章

主站蜘蛛池模板: 日韩一二区 | 成人性生活免费视频 | 青青草视频在线观看 | 亚洲免费看片 | 久久久综合 | 日本熟妇毛耸耸xxxxxx | 在线黄网 | 久久黄色大片 | 精品一区二区免费视频 | 国产精品一区二区三 | 欧美成人一区二区 | 欧美精品日韩少妇 | 日韩天堂网 | www.婷婷.com | 国产精品日韩欧美 | www.99riav| 五月婷婷六月激情 | 日韩精品观看 | 一区二区三区网站 | 五月婷婷丁香网 | 一级片久久久 | 日韩视频免费大全中文字幕 | 日韩精品一区二区三区免费视频 | 在线亚洲天堂 | 激情小说亚洲 | 色综合小说 | 久久性视频| 欧美vieox另类极品 | 亚洲视频在线免费观看 | 国产乱国产乱300精品 | 久久久久久国产 | 91视频专区| 夜夜欢天天干 | 91免费看视频 | 自拍偷拍亚洲 | 成人av免费看 | 一区二区视频在线 | 九一国产精品 | 黄色av毛片| 黄色激情视频在线观看 | 手机看片福利视频 |