欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: STC12C5A60S2雙串口程序(串口1和串口2信號通信) [打印本頁]

作者: 騰飛的龍    時間: 2016-5-9 09:25
標題: STC12C5A60S2雙串口程序(串口1和串口2信號通信)
STC12C5A60S2雙串口程序。串口1P3.0和P3.1、串口2P1.3和P1.2。
  1. /***********************************************************************
  2. 時間:2012.11.24
  3. 芯片:STC12C5A60S2
  4. 晶振:22.1184MHz  波特率:9600bps
  5. 引腳定義:串行口1:發送————TxD/P3.1; 接收———.000—RxD/P3
  6.          串行口2:        發送————TxD2/P1.3;接收————RxD2/P1.2
  7. 功能描述:STC12雙串口通信(中斷方式)
  8.           當串行口1接收數據后,將此數據由串行口2發送出去
  9.           當串行口2接收數據后,將此數據由串行口1發送出去
  10. ***********************************************************************/
  11. #include<STC12C5A60S2.h>

  12. #define S2RI 0x01        //串口2接收中斷請求標志位
  13. #define S2TI 0x02        //串口2發送中斷請求標志位
  14. unsigned char flag1,flag2,temp1=0xaa,temp2=0x55;
  15. /****************串行口初始化函數****************/
  16. void InitUART(void)
  17. {
  18.     TMOD = 0x20;    //定時器1工作在方式2  8位自動重裝
  19.     SCON = 0x50;    //串口1工作在方式1  10位異步收發 REN=1允許接收
  20.     TH1 = 0xFA;           //定時器1初值
  21.     TL1 = TH1;
  22.     TR1 = 1;           //定時器1開始計數
  23.     EA =1;        //開總中斷
  24.     ES =1;        //開串口1中斷

  25.     S2CON = 0x50;   //串口2工作在方式1  10位異步收發 S2REN=1允許接收
  26.     BRT = 0xFA;           //獨立波特率發生器初值
  27.     AUXR = 0x10;    //BRTR=1 獨立波特率發生器開始計數
  28.     IE2 =0x01;        //開串口2中斷  ES2=1
  29. }
  30. /****************串行口1發送****************/
  31. void UART_1SendOneByte(unsigned char c)
  32. {
  33.     SBUF = c;
  34.     while(!TI);           //若TI=0,在此等待
  35.     TI = 0;         
  36. }
  37. /****************串行口2發送****************/
  38. void UART_2SendOneByte(unsigned char c)
  39. {
  40.     S2BUF = c;
  41.     while(!(S2CON&S2TI));  //若S2TI=0,在此等待
  42.     S2CON&=~S2TI;          //S2TI=0
  43. }
  44. void delay(unsigned int z)
  45. {
  46.         unsigned int x,y;
  47.         for(x=z;x>0;x--)
  48.         for(y=600;y>0;y--);
  49. }
  50. /*****************主函數******************/
  51. void main(void)
  52. {
  53.     InitUART();        //串行口初始化
  54.        
  55.         while(1)
  56.         {P0=temp2;
  57. //如果串口1接收到數據,將此數據由串口2發送
  58.                 if(flag1==1)
  59.                 {
  60.                        
  61.                         flag1=0;
  62.                         UART_2SendOneByte(temp1);
  63.                        
  64.                 }
  65.                 delay(300);
  66.                 P0=temp1;
  67. //如果串口2接收到數據,將此數據由串口1發送
  68.                 if(flag2==1)
  69.                 {
  70.                        
  71.                         flag2=0;
  72.                         UART_1SendOneByte(temp2);
  73.                 }
  74.                 delay(300);
  75.         }
  76. }
  77. /************串行口1中斷處理函數*************/
  78. void UART_1Interrupt(void) interrupt 4
  79. {
  80.         if(RI==1)
  81.         {
  82.                
  83.                 RI=0;
  84.                 flag1=1;
  85.                 temp1=SBUF;
  86.         }
  87. }
  88. /************串行口2中斷處理函數*************/
  89. void UART_2Interrupt(void) interrupt 8
  90. {
  91.         if(S2CON&S2RI)
  92.         {
  93.                
  94.                 S2CON&=~S2RI;
  95.                 flag2=1;
  96.                 temp2=S2BUF;
  97.         }
  98. }
復制代碼



作者: xl945415    時間: 2017-4-7 22:46
多謝樓主,很好的例程
作者: yjpvaps    時間: 2017-4-8 11:10
感謝樓主,好資料
作者: 萌新小菜鳥    時間: 2017-8-5 10:48
這例程看的我想哭,對我真是太有用了
作者: chenmodebu    時間: 2017-8-31 10:39
樓主了不起啊啊,,,加油,,你是最棒的。
作者: 持勤補拙    時間: 2017-9-2 22:14
感謝樓主
作者: qunk    時間: 2017-10-25 22:02
我想知道<STC12C5A60S2.h>這個頭文件是自己寫的嗎?keil 里貌似沒有這個東西。我是新手,在做一個項目,一個串口接收傳感器232信號,一個上傳給上位機,不會搞,求大佬賜教
作者: admin    時間: 2017-10-25 22:24
qunk 發表于 2017-10-25 22:02
我想知道這個頭文件是自己寫的嗎?keil 里貌似沒有這個東西。我是新手,在做一個項目,一個串口接收 ...

這個stc官方有提供的 ,不是自己寫的,這里可以下載:http://m.raoushi.com/bbs/dpj-36960-1.html
作者: qunk    時間: 2017-10-27 14:07
謝謝!太感謝了!
作者: qunk    時間: 2017-11-3 15:59
樓主,我用了你的程序做了測試,為什么接收的數據不是我發的呢?
作者: qunk    時間: 2017-11-3 16:03
樓主,我用了你的程序做了測試,為什么接收到的不是我發送的呢?
作者: wyx丶    時間: 2018-4-25 09:53
怎么把這個程序里面的波特率調為115200呢?
作者: wyx丶    時間: 2018-4-25 09:55
還有晶振怎么設定為11.0592呢?
作者: 劉查理    時間: 2018-5-14 18:59
太好了,正好需要呢
作者: 手插肚兜    時間: 2018-6-15 22:44
qunk 發表于 2017-10-25 22:02
**** 作者被禁止或刪除 內容自動屏蔽 ****

串口助手可以直接下載
作者: suinile    時間: 2018-11-6 17:26
測試了,接收會亂碼。不知道問題在哪里,請指教!


作者: suinile    時間: 2018-11-7 17:28
是我搞錯了,我的晶振是11.0592,初值應該改成FDH,初學者請諒解!
作者: chenliyinh    時間: 2019-1-8 00:27
我想請教下。一定要用串口2和串口1一塊工作嘛?我想只用串口二能發出數據可以嗎
作者: chenliyinh    時間: 2019-1-8 00:29
十萬火急。因為要交作品了。就這個串口2的還沒調試好?吹降脑捪M軌虮M快得到回復謝謝啊
作者: witp    時間: 2019-7-24 13:26
謝謝樓主分享
作者: Chenw    時間: 2019-8-28 09:05
最近在搞雙串口通信,有點懵逼的感覺,感謝樓主的例子,太有幫助了
作者: 搞人心態    時間: 2020-3-11 21:32
suinile 發表于 2018-11-7 17:28
是我搞錯了,我的晶振是11.0592,初值應該改成FDH,初學者請諒解!

我的也是晶振11.0592,波特率設置的是9600 我應該改代碼的什么地方,我是小白一個 能不能告訴一下萬分感謝
作者: wulingqing    時間: 2020-3-11 22:51
感謝樓主的例子,太有幫助了
作者: 奔兒霸    時間: 2021-1-1 21:33
qunk 發表于 2017-10-25 22:02
**** 作者被禁止或刪除 內容自動屏蔽 ****

使用宏晶的串口STC-ISP下載頭文件即可
作者: shanghanlin    時間: 2024-2-26 14:31
簡直太棒啦
作者: shanghanlin    時間: 2024-2-26 14:35
qunk 發表于 2017-10-25 22:02
**** 作者被禁止或刪除 內容自動屏蔽 ****

這個是庫里自帶的吧,你看他用的就是這個芯片,應該是51單片機的一種
作者: fangssss    時間: 2024-3-27 15:44
最近正好碰到雙串口案例,需要資料參考。謝謝




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1