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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

STC8A8K單片機串口使用沖突

[復制鏈接]
跳轉到指定樓層
樓主
ID:942805 發表于 2022-4-15 21:19 | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式
/*
串口2通訊實驗
程序目前功能:  發送任意數據 LED都會變化  同時串口2在往主機發送0x0a
MUC主頻為11.0592
波特率為9600
*/




#include "stc8.h"


sbit led=P5^5;
#define FOSC 11059200L                          //MUC主頻為11.0592下
#define BAUD 9600                                  //串口2產生的波特率為9600
#define TM  (65536-(11059200L/4/9600)) //計算初值

#define FOSC 11059200L                          //MUC主頻為11.0592下
#define BAUD1 4800                                  //串口2產生的波特率為9600
#define TM1  (65536-(FOSC/4/BAUD1)) //計算初值
unsigned char a;
        
void delay(unsigned int m)                  //延時函數
    {
          int  a=0,b=0;
          for(a=0;a<500;a++)
          for(b=0;b<m;b++);
        
        }

void ISP_Check1(unsigned char i)                                        //串口2發送數據調用函數
{

        
                S2BUF=i;
           while(S2CON&S2TI==0);                                // 等特數據傳送        (S2TI發送中斷標志)
  S2CON&=~S2TI;                                                //清標志位  


}
        
        
void ISP_Check(unsigned char i)                                        //串口2發送數據調用函數
{

        
                S3BUF=i;
           while(S3CON&S3TI==0);                                // 等特數據傳送        (S2TI發送中斷標志)
  S3CON&=~S3TI;                                                //清標志位  


}




void main()
{
  S3CON = 0x50;       //REN=1允許串行接受狀態,串口工作模式2               

  T3L=(65536-(11059200L/4/9600));                          //配置串口2波特率         初始值
  T3H=(65536-(11059200L/4/9600))>>8;                    

  T4T3M |= 0x02;              //定時器3為1T模式
    T4T3M |= 0x08;              //定時器3開始計時
  IE2 = 0x08;            //串口2中斷使能                                                           
  EA   = 1;           // 開總中斷

          S2CON = 0x50;       //REN=1允許串行接受狀態,串口工作模式2               

  T2L=TM1;                          //配置串口2波特率         初始值
  T2H=TM1>>8;                    

  AUXR=0X54;                  //開啟定時器T2  并且開啟1T模式
  IE2|=0X01;           //串口2中斷使能                                                           
  EA   = 1;           // 開總中斷
        
        
  while(1)
        {
                P55 = 1;
                delay(100);
        }


}

void Uart3() interrupt 17 using 1  //串口3中斷
{
  if(S3CON&S3RI)                                                //如果收到數據 S2RI置位
  {
                P55 = 0;
   a = S3BUF;
                ISP_Check(a);
   S3CON&=~S3RI;                                                //清標志位  
  }
}




void Uart2()  interrupt 8 using 1                //串口2中斷
{
  if(S2CON&S2RI)                                                //如果收到數據 S2RI置位
  {
                a = S2BUF;
   ISP_Check1(a);                                                        //翻轉LED效果
   S2CON&=~S2RI;                                                //清標志位  
  }
}


串口2發送數據以后 串口3就接收不到數據了

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

使用道具 舉報

板凳
ID:47286 發表于 2022-4-16 00:30 | 只看該作者
幫頂

別人的程序基本不看 主要是水平有限 讀半天都不一定能明白 但我用4個串口都開 互相不干擾 證明是完全可行的 請樓主參考其它大俠的回復再修改程序 祝你成功
回復

使用道具 舉報

沙發
ID:624769 發表于 2022-4-16 00:04 | 只看該作者

以串口2為例, 如下修改,  串口3同理修改.  (當然, 建議是置標志位, 主程序中發送, 而不要在中斷中發送,你非要中斷中發送,就做如下修改)

//void ISP_Check1(unsigned char i)                                        //串口2發送數據調用函數
//{
//                 S2BUF=i;
//           while(S2CON&S2TI==0);                                // 等特數據傳送        (S2TI發送中斷標志)
//  S2CON&=~S2TI;                                                //清標志位  
//}

void Uart2()  interrupt 8 using 1                //串口2中斷
{

  if(S2CON&S2TI)   S2CON&=~S2TI;
  if(S2CON&S2RI)                                                //如果收到數據 S2RI置位
  {
                 a = S2BUF;
               S2CON&=~S2RI;                                                //清標志位  
                S2BUF  = a;
//   ISP_Check1(a);                                                        //翻轉LED效果
  }
}
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 在线观看www | 午夜影院在线播放 | 日韩免费网站 | 亚洲精品国产成人 | 综合国产 | 99视频在线免费观看 | 大象视频一区二区 | 日韩精品在线一区 | 日韩成人在线免费观看 | 午夜精品一区二区三区在线观看 | 久在线| 欧美激情 一区 | 国产精品久久久久久久免费大片 | 国产在线精品免费 | 一区免费 | 五月婷婷激情 | 亚洲成人精品在线 | 国产色婷婷精品综合在线手机播放 | 国产一区久久 | 精品亚洲一区二区三区 | 欧美一区二区视频 | 国产高清精品一区二区三区 | 欧美日韩在线一区二区 | av在线免费不卡 | 成人免费在线观看 | 国产三区在线观看视频 | 成人网在线看 | 久久噜噜噜精品国产亚洲综合 | 国产第1页 | 免费一区 | 国产成人精品一区二区三区四区 | 国产精品s色| 精品一区二区三区四区 | 久久国产精品-国产精品 | www.性色 | 有码一区 | 久久69精品久久久久久久电影好 | 国产成人精品综合 | 天天久久 | 成人在线免费 | 亚洲一区二区在线免费观看 |