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

標題: stc15f2k60s2看了手冊用了示例程序也無法使用串口通信 [打印本頁]

作者: qq1114231075    時間: 2016-4-26 19:56
標題: stc15f2k60s2看了手冊用了示例程序也無法使用串口通信
#include"C:\Keil\C51\INC\STC\STC15F2K60S2.H"
void SerialIni(){
    SCON &= 0x2E;  //先對需要設置的位進行清零 0010 1110 因為SCON所有位都是用于設置串行口1,所以這句可省略。
    SCON = 0x50;   /* SM0/FE | SM1 | SM2 | REN | TB8 | RB8 | TI | RI 設置串行口的工作方式1(SM0 SM1  0 1)即8位可變波特率方式;允許接收)*/
    AUXR &= 0xBE;  //先對需要設置的位進行清零 1011 1110
    AUXR |= 0x00;    /* T0x12 | T1x12 | UART_M0x6 | T2R | T2_C/T(T上畫) | T2x12 | EXTRAM | S1ST2 定時器1時鐘為Focs/12,即12T;串口1選擇定時器1為波特率發生器。S1ST2:串行口1波特率發生器選擇位。0:選擇定時器1作為串行口1波特率發生器。 1:選擇定時器2作為串行口1的波特率發生器,此時定時器1得到釋放,可以作為獨立的定時器使用。*/
    TMOD &= 0x0F;        //先清零定時器1的設置(高4位設置定時器1,低4位設置定時器0)
    TMOD |= 0x20;           /* GATE | C/T(T上畫) | M1 | M0 | GATE | C/T(T上畫) | M1 | M0 (定時器工作方式2)使用定時器1作為波特率發生器。*/
    TH1 = 0xfd;                 //8位自動重裝方式,TH1用于重置TL1初值。2的SMOD次方/32*(定時器1的溢出率或定時器2的溢出率)
    TL1  = 0xfd;                 //晶振11.0592MHz,設置波特率為9600bps。SMOD屬于PCON寄存器,為1時,波特率翻倍。
    TR1=1;                         //定時器1啟動
    ES = 1;                         //開放串口中斷
    EA = 1;                         //開放CPU中斷
}

void main(void)
{
    SerialIni();                    //運行串口初始化函數
    while(1){
}                                //等待中斷()
}

void Uart2(void) interrupt 4 using 1
{
    unsigned char mydata;
    if(RI)                           //如果是接收中斷
    {
        RI=0;
        mydata = SBUF;    //將接收緩沖區的數據保存到mydata變量中
        SBUF = ~mydata; //將接收到的數據按位取反后發回
    }
    else                           //如果是發送中斷,將TI清0
        TI = 0;
}



完全無效。串口接的3.0/3.1;
求大神教育


作者: ahshmj    時間: 2016-4-26 20:28
電路呢?是和51通信還是PC?使用了232芯片還是轉USB芯片?
作者: qq1114231075    時間: 2016-4-26 20:43
ahshmj 發表于 2016-4-26 20:28
電路呢?是和51通信還是PC?使用了232芯片還是轉USB芯片?

電路是最小系統,可以下程序。串口是usb芯片
作者: ahshmj    時間: 2016-4-26 21:18
把P3.0和P3.1對調一下試一試。USB轉換芯片的輸出應對單片機的輸入。
作者: qq1114231075    時間: 2016-4-26 21:33
#include"C:\Keil\C51\INC\STC\STC15F2K60S2.H"
#define uchar unsigned char
uchar x=0;
void SerialIni(){
PCON &= 0x7F;                //波特率不倍速
        SCON = 0x50;                //8位數據,可變波特率
        AUXR |= 0x40;                //定時器1時鐘為Fosc,即1T
        AUXR &= 0xFE;                //串口1選擇定時器1為波特率發生器
        TMOD &= 0x0F;                //清除定時器1模式位
        TMOD |= 0x20;                //設定定時器1為8位自動重裝方式
        TL1 = 0xDC;                //設定定時初值
        TH1 = 0xDC;                //設定定時器重裝值
        ET1 = 0;                //禁止定時器1中斷
        TR1 = 1;                //啟動定時器1                     //開放CPU中斷
}

void main(void)                                  
{
    SerialIni();
       
        SBUF=21;                    //運行串口初始化函數
    while(1){
         if(TI)                           //如果是接收中斷
    {
        TI=0;
       
                 }
         if(RI)
         {RI=0;
       
          ;
          ;
          ;
          ;

          ;
          SBUF=x;
         }
}
}
可以發送但不能接收執行,為什么
作者: qq1114231075    時間: 2016-4-26 22:42
ahshmj 發表于 2016-4-26 21:18
把P3.0和P3.1對調一下試一試。USB轉換芯片的輸出應對單片機的輸入。

大神幫幫我
作者: luoluoluo136    時間: 2016-4-27 09:39
建議樓主先看懂程序吧。。。
作者: qq1114231075    時間: 2016-4-27 13:04
luoluoluo136 發表于 2016-4-27 09:39
建議樓主先看懂程序吧。。。

謝謝,問題解決了,重啟了電腦(ಥ_ಥ)
作者: qq1114231075    時間: 2016-4-27 13:06
謝謝,問題解決了,電腦串口程序有問題,重啟了電腦就好了
作者: aj8714523    時間: 2018-9-29 18:41
沒開總中斷EA和串口中斷ES




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 久久久91精品国产一区二区精品 | 精品久久久久久久久久久久久久 | 99热精品在线观看 | 免费一区二区三区在线视频 | 91免费电影 | 国产精品永久免费观看 | 国产成人久久精品一区二区三区 | 97国产成人 | 亚洲欧美中文字幕在线观看 | 国产精品亚洲视频 | 久久精品成人 | 久久久夜夜夜 | 在线精品一区 | 国产精品一区二区免费 | 一区二区三区视频在线免费观看 | 人人看人人射 | 一区二区中文字幕 | 高清一区二区视频 | 欧美激情视频一区二区三区在线播放 | 日韩在线| 亚洲视频在线看 | 日韩免费在线观看视频 | 国产欧美一区二区三区国产幕精品 | 欧美一区二区三区一在线观看 | 日韩欧美一区二区三区四区 | 久久中文字幕一区 | 午夜视频一区 | 看黄在线 | 国产亚洲精品久久久久动 | 久久久久久成人 | 牛牛热在线视频 | 91久久久久久久久久久久久 | 男人天堂免费在线 | 蜜臀网站 | 国产97碰免费视频 | 久久亚洲天堂 | 精品国产乱码久久久久久影片 | 97国产在线观看 | 在线观看成人小视频 | 毛片免费在线 | 久久99一区二区 |