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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

STC12C單片機串口通信波特率怎么設置9600

[復制鏈接]
跳轉到指定樓層
樓主
ID:102000 發表于 2016-4-1 17:52 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
60黑幣
選工作方式2,波特率怎么設置?晶振11.0592的

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

使用道具 舉報

沙發
ID:110895 發表于 2016-4-5 13:52 | 只看該作者
SCON = 0x50;                //8位數據,可變波特率
        AUXR |= 0x40;                //定時器1時鐘為Fosc,即1T
        AUXR &= 0xFE;                //串口1選擇定時器1為波特率發生器
        TMOD &= 0x0F;                //設定定時器1為16位自動重裝方式
        TL1 = 0xE0;                //設定定時初值
        TH1 = 0xFE;                //設定定時初值
        ET1 = 0;                //禁止定時器1中斷
        TR1 = 1;                //啟動定時器1
回復

使用道具 舉報

板凳
ID:110895 發表于 2016-4-5 13:53 | 只看該作者
SCON = 0x50;                //8位數據,可變波特率
        AUXR |= 0x40;                //定時器1時鐘為Fosc,即1T
        AUXR &= 0xFE;                //串口1選擇定時器1為波特率發生器
        TMOD &= 0x0F;                //設定定時器1為16位自動重裝方式
        TL1 = 0xE0;                //設定定時初值
        TH1 = 0xFE;                //設定定時初值
        ET1 = 0;                //禁止定時器1中斷
        TR1 = 1;                //啟動定時器1
回復

使用道具 舉報

地板
ID:107339 發表于 2016-4-5 20:32 | 只看該作者
/*------------------------------------------------------------------*/ /* --- STC MCU Limited ---------------------------------------------*/ /* --- STC12C5Axx Series MCU UART (8-bit/9-bit)Demo ----------------*/ /* --- Mobile: (86)13922805190 -------------------------------------*/ /* --- Fax: 86-755-82905966 ----------------------------------------*/ /* --- Tel: 86-755-82948412 ----------------------------------------*/ /* --- Web: www.STCMCU.com -----------------------------------------*/ /* If you want to use the program or the program referenced in the  */ /* article, please specify in which data and procedures from STC    */ /*------------------------------------------------------------------*/  #include "reg51.h" #include "intrins.h"  typedef unsigned char BYTE; typedef unsigned int WORD;  #define FOSC 18432000L      //System frequency #define BAUD 9600           //UART baudrate  /*Define UART parity mode*/ #define NONE_PARITY     0   //None parity #define ODD_PARITY      1   //Odd parity #define EVEN_PARITY     2   //Even parity #define MARK_PARITY     3   //Mark parity #define SPACE_PARITY    4   //Space parity  #define PARITYBIT EVEN_PARITY   //Testing even parity  sbit bit9 = P2^2;           //P2.2 show UART data bit9 bit busy;  void SendData(BYTE dat); void SendString(char *s);  void main() { #if (PARITYBIT == NONE_PARITY)     SCON = 0x50;            //8-bit variable UART #elif (PARITYBIT == ODD_PARITY) || (PARITYBIT == EVEN_PARITY) || (PARITYBIT == MARK_PARITY)     SCON = 0xda;            //9-bit variable UART, parity bit initial to 1 #elif (PARITYBIT == SPACE_PARITY)     SCON = 0xd2;            //9-bit variable UART, parity bit initial to 0 #endif      TMOD = 0x20;            //Set Timer1 as 8-bit auto reload mode     TH1 = TL1 = -(FOSC/12/32/BAUD); //Set auto-reload vaule     TR1 = 1;                //Timer1 start run     ES = 1;                 //Enable UART interrupt     EA = 1;                 //Open master interrupt switch      SendString("STC12C5A60S2\r\nUart Test !\r\n");     while(1); }  /*---------------------------- UART interrupt service routine ----------------------------*/ void Uart_Isr() interrupt 4 using 1 {     if (RI)     {         RI = 0;             //Clear receive interrupt flag         P0 = SBUF;          //P0 show UART data         bit9 = RB8;         //P2.2 show parity bit     }     if (TI)     {         TI = 0;             //Clear transmit interrupt flag         busy = 0;           //Clear transmit busy flag     } }  /*---------------------------- Send a byte data to UART Input: dat (data to be sent) Output:None ----------------------------*/ void SendData(BYTE dat) {     while (busy);           //Wait for the completion of the previous data is sent     ACC = dat;              //Calculate the even parity bit P (PSW.0)     if (P)                  //Set the parity bit according to P     { #if (PARITYBIT == ODD_PARITY)         TB8 = 0;            //Set parity bit to 0 #elif (PARITYBIT == EVEN_PARITY)         TB8 = 1;            //Set parity bit to 1 #endif     }     else     { #if (PARITYBIT == ODD_PARITY)         TB8 = 1;            //Set parity bit to 1 #elif (PARITYBIT == EVEN_PARITY)         TB8 = 0;            //Set parity bit to 0 #endif     }     busy = 1;     SBUF = ACC;             //Send data to UART buffer }  /*---------------------------- Send a string to UART Input: s (address of string) Output:None ----------------------------*/ void SendString(char *s) {     while (*s)              //Check the end of the string     {         SendData(*s++);     //Send current char and increment string ptr     } }
回復

使用道具 舉報

5#
ID:321166 發表于 2018-5-6 21:11 | 只看該作者

    TMOD=0x20;    //定時器1工作在方式2  8位自動重裝
    SCON=0x50;    //串口1工作在方式1  10位異步收發 REN=1允許接收
    TH1=0xFD;           //定時器1初值  9600BIT
    TL1=0xFD;
    TR1=1;           //定時器1開始計數
        RI=0;   
    EA=1;        //開總中斷
    ES=1;        //開串口1中斷
回復

使用道具 舉報

6#
ID:698784 發表于 2020-4-24 17:31 | 只看該作者
SCON = 0x50;                //8位數據,可變波特率
        AUXR |= 0x40;                //定時器1時鐘為Fosc,即1T
        AUXR &= 0xFE;                //串口1選擇定時器1為波特率發生器
        TMOD &= 0x0F;                //設定定時器1為16位自動重裝方式
        TL1 = 0xE0;                //設定定時初值
        TH1 = 0xFE;                //設定定時初值
        ET1 = 0;                //禁止定時器1中斷
        TR1 = 1;                //啟動定時器1
回復

使用道具 舉報

7#
ID:456580 發表于 2020-5-16 23:09 | 只看該作者
void UART_INIT()
{
        SM0 = 0;
        SM1 = 1;
        REN = 1;                                                                                                         
        EA = 1;
        ES = 1;
        TMOD = 0x20;
        TH1 = 0xfd;
        TL1 = 0xfd;
        TR1 = 1;
}
回復

使用道具 舉報

8#
ID:420836 發表于 2020-5-17 01:35 | 只看該作者
試一下使用以下配置:

void init_com( void )
{
    SCON = 0x50 ; //串口工作方式1,8位UART,波特率可變
    TMOD |= 0x20 ; //定時器1,工作方式2,自動再裝入8位定時器
    PCON |= 0x80 ; //SMOD=1; 波特率加倍
    TH1 = 0xfa ; //波特率:9600 晶振=11.0592MHz
    IE |= 0x90 ; //使能串口中斷
    TR1 = 1 ; // 定時器1開始
}
回復

使用道具 舉報

9#
ID:420836 發表于 2020-5-17 01:35 | 只看該作者
試一下使用以下配置:

void init_com( void )
{
    SCON = 0x50 ; //串口工作方式1,8位UART,波特率可變
    TMOD |= 0x20 ; //定時器1,工作方式2,自動再裝入8位定時器
    PCON |= 0x80 ; //SMOD=1; 波特率加倍
    TH1 = 0xfa ; //波特率:9600 晶振=11.0592MHz
    IE |= 0x90 ; //使能串口中斷
    TR1 = 1 ; // 定時器1開始
}
回復

使用道具 舉報

10#
ID:811102 發表于 2020-9-3 09:56 | 只看該作者
        SCON=0X50;                        //設置為工作方式1 ,既然是方式一,自然要確定波特率,設置定時器1
        TMOD|=0X20;//8位重裝載
        PCON|=0x00;
        TH1=0xfa;//波特率9600
        TL1=0xfa;
        RI=1;
        TI=1;
        ES=1;                                                //打開通信中斷
        EA=1;                                                //打開總中斷
        TR1=1;       
回復

使用道具 舉報

11#
ID:245053 發表于 2020-9-3 12:24 | 只看該作者
學會看資料,一般資料里都有介紹使用,串口波特率一般都會指定一個定時器來產生,設置好定時器的計數周期,也就是波特率就可以了
回復

使用道具 舉報

12#
ID:235954 發表于 2020-9-3 17:25 | 只看該作者
SCON = 0x50;            //8-bit variable UART
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成人精品在线观看 | 一级欧美一级日韩片 | 中文字幕日韩欧美 | 国产视频第一页 | 亚洲首页 | 爱草在线 | 91欧美精品成人综合在线观看 | 免费久久99精品国产婷婷六月 | 亚洲一区二区三区在线播放 | 四虎影院在线观看免费视频 | 农村黄性色生活片 | 99爱免费| 在线视频中文字幕 | 国产一区二区三区四区五区加勒比 | 日本午夜精品一区二区三区 | 黄色片a级 | 丁香婷婷久久久综合精品国产 | 国产综合第一页 | 天天躁日日躁aaaa视频 | 国产成人一区二区三区久久久 | 色香蕉在线 | 日韩一区二区三区在线播放 | 日韩在线免费播放 | av黄色在线 | 精精国产视频 | 亚洲视频在线看 | 国内精品在线视频 | 国产激情91久久精品导航 | 91xxx在线观看 | 久久国产精品-国产精品 | 亚洲精品片 | 99久热在线精品视频观看 | 日韩中文字幕视频在线观看 | 精品国产99 | 一级片视频免费 | 黄网站在线观看 | 亚洲综合大片69999 | 日本黄色大片免费 | 大学生a级毛片免费视频 | 偷拍自拍在线观看 | 日韩一二三区视频 |