找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 31902|回復: 26
收起左側(cè)

STC12C5A60S2雙串口程序(串口1和串口2信號通信)

  [復制鏈接]
ID:79544 發(fā)表于 2016-5-9 09:25 | 顯示全部樓層 |閱讀模式
STC12C5A60S2雙串口程序。串口1P3.0和P3.1、串口2P1.3和P1.2。
  1. /***********************************************************************
  2. 時間:2012.11.24
  3. 芯片:STC12C5A60S2
  4. 晶振:22.1184MHz  波特率:9600bps
  5. 引腳定義:串行口1:發(fā)送————TxD/P3.1; 接收———.000—RxD/P3
  6.          串行口2:        發(fā)送————TxD2/P1.3;接收————RxD2/P1.2
  7. 功能描述:STC12雙串口通信(中斷方式)
  8.           當串行口1接收數(shù)據(jù)后,將此數(shù)據(jù)由串行口2發(fā)送出去
  9.           當串行口2接收數(shù)據(jù)后,將此數(shù)據(jù)由串行口1發(fā)送出去
  10. ***********************************************************************/
  11. #include<STC12C5A60S2.h>

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

  25.     S2CON = 0x50;   //串口2工作在方式1  10位異步收發(fā) S2REN=1允許接收
  26.     BRT = 0xFA;           //獨立波特率發(fā)生器初值
  27.     AUXR = 0x10;    //BRTR=1 獨立波特率發(fā)生器開始計數(shù)
  28.     IE2 =0x01;        //開串口2中斷  ES2=1
  29. }
  30. /****************串行口1發(fā)送****************/
  31. void UART_1SendOneByte(unsigned char c)
  32. {
  33.     SBUF = c;
  34.     while(!TI);           //若TI=0,在此等待
  35.     TI = 0;         
  36. }
  37. /****************串行口2發(fā)送****************/
  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. /*****************主函數(shù)******************/
  51. void main(void)
  52. {
  53.     InitUART();        //串行口初始化
  54.        
  55.         while(1)
  56.         {P0=temp2;
  57. //如果串口1接收到數(shù)據(jù),將此數(shù)據(jù)由串口2發(fā)送
  58.                 if(flag1==1)
  59.                 {
  60.                        
  61.                         flag1=0;
  62.                         UART_2SendOneByte(temp1);
  63.                        
  64.                 }
  65.                 delay(300);
  66.                 P0=temp1;
  67. //如果串口2接收到數(shù)據(jù),將此數(shù)據(jù)由串口1發(fā)送
  68.                 if(flag2==1)
  69.                 {
  70.                        
  71.                         flag2=0;
  72.                         UART_1SendOneByte(temp2);
  73.                 }
  74.                 delay(300);
  75.         }
  76. }
  77. /************串行口1中斷處理函數(shù)*************/
  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中斷處理函數(shù)*************/
  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. }
復制代碼


評分

參與人數(shù) 2黑幣 +70 收起 理由
yousunny + 20 很給力!
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:242954 發(fā)表于 2017-10-25 22:02 | 顯示全部樓層
我想知道<STC12C5A60S2.h>這個頭文件是自己寫的嗎?keil 里貌似沒有這個東西。我是新手,在做一個項目,一個串口接收傳感器232信號,一個上傳給上位機,不會搞,求大佬賜教
回復

使用道具 舉報

ID:164354 發(fā)表于 2017-4-7 22:46 | 顯示全部樓層
多謝樓主,很好的例程
回復

使用道具 舉報

ID:95468 發(fā)表于 2017-4-8 11:10 | 顯示全部樓層
感謝樓主,好資料
回復

使用道具 舉報

ID:219558 發(fā)表于 2017-8-5 10:48 | 顯示全部樓層
這例程看的我想哭,對我真是太有用了
回復

使用道具 舉報

ID:5188 發(fā)表于 2017-8-31 10:39 | 顯示全部樓層
樓主了不起啊啊,,,加油,,你是最棒的。
回復

使用道具 舉報

ID:130345 發(fā)表于 2017-9-2 22:14 | 顯示全部樓層
感謝樓主
回復

使用道具 舉報

ID:1 發(fā)表于 2017-10-25 22:24 | 顯示全部樓層
qunk 發(fā)表于 2017-10-25 22:02
我想知道這個頭文件是自己寫的嗎?keil 里貌似沒有這個東西。我是新手,在做一個項目,一個串口接收 ...

這個stc官方有提供的 ,不是自己寫的,這里可以下載:http://www.torrancerestoration.com/bbs/dpj-36960-1.html
回復

使用道具 舉報

ID:242954 發(fā)表于 2017-10-27 14:07 | 顯示全部樓層
謝謝!太感謝了!
回復

使用道具 舉報

ID:242954 發(fā)表于 2017-11-3 15:59 | 顯示全部樓層
樓主,我用了你的程序做了測試,為什么接收的數(shù)據(jù)不是我發(fā)的呢?
回復

使用道具 舉報

ID:242954 發(fā)表于 2017-11-3 16:03 | 顯示全部樓層
樓主,我用了你的程序做了測試,為什么接收到的不是我發(fā)送的呢?
回復

使用道具 舉報

ID:303441 發(fā)表于 2018-4-25 09:53 | 顯示全部樓層
怎么把這個程序里面的波特率調(diào)為115200呢?
回復

使用道具 舉報

ID:303441 發(fā)表于 2018-4-25 09:55 | 顯示全部樓層
還有晶振怎么設(shè)定為11.0592呢?
回復

使用道具 舉報

ID:293977 發(fā)表于 2018-5-14 18:59 | 顯示全部樓層
太好了,正好需要呢
回復

使用道具 舉報

ID:76181 發(fā)表于 2018-6-15 22:44 | 顯示全部樓層
qunk 發(fā)表于 2017-10-25 22:02
**** 作者被禁止或刪除 內(nèi)容自動屏蔽 ****

串口助手可以直接下載
回復

使用道具 舉報

ID:325058 發(fā)表于 2018-11-6 17:26 | 顯示全部樓層
測試了,接收會亂碼。不知道問題在哪里,請指教! 02.png
01.png
回復

使用道具 舉報

ID:325058 發(fā)表于 2018-11-7 17:28 | 顯示全部樓層
是我搞錯了,我的晶振是11.0592,初值應該改成FDH,初學者請諒解!
回復

使用道具 舉報

ID:464243 發(fā)表于 2019-1-8 00:27 來自手機 | 顯示全部樓層
我想請教下。一定要用串口2和串口1一塊工作嘛?我想只用串口二能發(fā)出數(shù)據(jù)可以嗎
回復

使用道具 舉報

ID:464243 發(fā)表于 2019-1-8 00:29 來自手機 | 顯示全部樓層
十萬火急。因為要交作品了。就這個串口2的還沒調(diào)試好?吹降脑捪M軌虮M快得到回復謝謝啊
回復

使用道具 舉報

ID:160995 發(fā)表于 2019-7-24 13:26 | 顯示全部樓層
謝謝樓主分享
回復

使用道具 舉報

ID:599677 發(fā)表于 2019-8-28 09:05 | 顯示全部樓層
最近在搞雙串口通信,有點懵逼的感覺,感謝樓主的例子,太有幫助了
回復

使用道具 舉報

ID:706655 發(fā)表于 2020-3-11 21:32 | 顯示全部樓層
suinile 發(fā)表于 2018-11-7 17:28
是我搞錯了,我的晶振是11.0592,初值應該改成FDH,初學者請諒解!

我的也是晶振11.0592,波特率設(shè)置的是9600 我應該改代碼的什么地方,我是小白一個 能不能告訴一下萬分感謝
回復

使用道具 舉報

ID:282431 發(fā)表于 2020-3-11 22:51 | 顯示全部樓層
感謝樓主的例子,太有幫助了
回復

使用道具 舉報

ID:472300 發(fā)表于 2021-1-1 21:33 | 顯示全部樓層
qunk 發(fā)表于 2017-10-25 22:02
**** 作者被禁止或刪除 內(nèi)容自動屏蔽 ****

使用宏晶的串口STC-ISP下載頭文件即可
回復

使用道具 舉報

ID:1032822 發(fā)表于 2024-2-26 14:31 | 顯示全部樓層
簡直太棒啦
回復

使用道具 舉報

ID:1032822 發(fā)表于 2024-2-26 14:35 | 顯示全部樓層
qunk 發(fā)表于 2017-10-25 22:02
**** 作者被禁止或刪除 內(nèi)容自動屏蔽 ****

這個是庫里自帶的吧,你看他用的就是這個芯片,應該是51單片機的一種
回復

使用道具 舉報

ID:1114439 發(fā)表于 2024-3-27 15:44 | 顯示全部樓層
最近正好碰到雙串口案例,需要資料參考。謝謝
回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表