久久久久久久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;      //接收完成標志位 
}

 

關閉窗口

相關文章

主站蜘蛛池模板: 涩色视频在线观看 | 中文字幕一区二区三区四区不卡 | 日韩二三区 | 精品国产一区二区在线 | 国产91久久久久久久免费 | 中文字幕亚洲在线 | 国产精品视频一 | 国产一区在线免费 | 国产精品国产三级国产播12软件 | 天天草草草 | 视频二区 | 一级片av | 欧美一区二区三区在线播放 | 国产亚洲精品美女久久久久久久久久 | 亚洲免费精品 | 国产在线一区二 | 日日摸夜夜添夜夜添精品视频 | 日韩字幕 | 久久在线看 | 在线 丝袜 欧美 日韩 制服 | 成人久久 | 久久精品视频9 | 免费特黄视频 | 一区二区三区视频免费看 | 在线免费观看视频你懂的 | 欧美亚洲视频 | 亚洲视频在线观看 | 四虎影院新网址 | 插插宗合网 | 国产精品国产精品国产专区不片 | 97av在线| 一区二区三区久久久 | 97人人超碰 | 人人操日日干 | 中文字幕国产 | 99久久国产综合精品麻豆 | 欧美在线观看一区 | 亚洲一区二区三区视频 | 国产精品视频一区二区三区, | 国产成人免费 | 日日摸日日碰夜夜爽亚洲精品蜜乳 |