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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

STC15W204S單片機如何調用串口2來接收或發(fā)送資料?

[復制鏈接]
跳轉到指定樓層
樓主
ID:457181 發(fā)表于 2019-1-31 15:06 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
如題,我是成功用串口1來接收或發(fā)送資料,現(xiàn)在要從串口1換去串口2來做接收或發(fā)送。

串口1的設定單片機代碼
  1.         EA = 1;
  2.         ES = 1;

  3. //    38400
  4.                 SCON = 0x50;                 
  5.                 AUXR |= 0x01;               
  6.                 AUXR |= 0x04;               
  7.                 T2L = 0xB8;               
  8.                 T2H = 0xFF;               
  9.                 AUXR |= 0x10;
復制代碼

請問如何設定串口2呢?
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:94031 發(fā)表于 2019-1-31 17:06 | 只看該作者
UART2_config(2);        // 選擇波特率, 2: 使用Timer2做波特率, 其它值: 無效.
EA = 1;        //允許全局中斷

void        SetTimer2Baudraye(u16 dat)        // 選擇波特率, 2: 使用Timer2做波特率, 其它值: 使用Timer1做波特率.
{
        AUXR &= ~(1<<4);        //Timer stop
        AUXR &= ~(1<<3);        //Timer2 set As Timer
        AUXR |=  (1<<2);        //Timer2 set as 1T mode
        TH2 = dat / 256;
        TL2 = dat % 256;
        IE2  &= ~(1<<2);        //禁止中斷
        AUXR |=  (1<<4);        //Timer run enable
}

void        UART2_config(u8 brt)        // 選擇波特率, 2: 使用Timer2做波特率, 其它值: 無效.
{
        /*********** 波特率固定使用定時器2 *****************/
        if(brt == 2)
        {
                SetTimer2Baudraye(65536UL - (MAIN_Fosc / 4) / Baudrate2);

                S2CON &= ~(1<<7);        // 8位數(shù)據, 1位起始位, 1位停止位, 無校驗
                IE2   |= 1;                        //允許中斷
                S2CON |= (1<<4);        //允許接收
                P_SW2 &= ~0x01;       
                P_SW2 |= 1;                        //UART2 switch to: 0: P1.0 P1.1,  1: P4.6 P4.7

                B_TX2_Busy = 0;
                TX2_Cnt = 0;
                RX2_Cnt = 0;
        }
}

void UART2_int (void) interrupt UART2_VECTOR
{
        if((S2CON & 1) != 0)
        {
                S2CON &= ~1;        //Clear Rx flag
                RX2_Buffer[RX2_Cnt] = S2BUF;
                if(++RX2_Cnt >= UART2_BUF_LENGTH)        RX2_Cnt = 0;
        }

        if((S2CON & 2) != 0)
        {
                S2CON &= ~2;        //Clear Tx flag
                B_TX2_Busy = 0;
        }

}

回復

使用道具 舉報

板凳
ID:463187 發(fā)表于 2019-1-31 18:39 | 只看該作者
void UartInit(void)                //9600bps@11.0592MHz
{
        S2CON = 0x50;                //8位數(shù)據,可變波特率
        AUXR |= 0x04;                //定時器2時鐘為Fosc,即1T
        T2L = 0xE0;                //設定定時初值
        T2H = 0xFE;                //設定定時初值
        AUXR |= 0x10;                //啟動定時器2
}
回復

使用道具 舉報

地板
ID:155507 發(fā)表于 2019-1-31 19:15 | 只看該作者
你確定STC15W204S單片機有串口2嗎?



STC15W204S-001.png (427.78 KB, 下載次數(shù): 145)

STC15W204S單片機

STC15W204S單片機
回復

使用道具 舉報

5#
ID:457181 發(fā)表于 2019-2-1 08:47 | 只看該作者
angmall 發(fā)表于 2019-1-31 19:15
你確定STC15W204S單片機有串口2嗎?

有啊!在P3.6和P3.7
回復

使用道具 舉報

6#
ID:47286 發(fā)表于 2019-2-1 10:18 | 只看該作者

沒有兩個 只有一個串口 人家手冊上寫的是 一組異步串行口 可以在兩組管腳間切換 分時復用可當兩組串口用 明白么 就是一組串口干兩組串口的事 但不能同時
回復

使用道具 舉報

7#
ID:457181 發(fā)表于 2019-2-1 10:57 | 只看該作者
dzbj 發(fā)表于 2019-2-1 10:18
沒有兩個 只有一個串口 人家手冊上寫的是 一組異步串行口 可以在兩組管腳間切換 分時復用可當兩組串口用  ...

明白了,謝謝哦!如何要調用P3.6和P3.7為接收和發(fā)送,要怎樣寫呢?
我的代碼還是不能收
  1. void UartInit(void)
  2. {

  3.                 EA = 1;
  4.                 ES = 1;
  5.        
  6. //            38400
  7.                 S2CON = 0x50;               
  8.                 AUXR |= 0x04;               
  9.                 T2L = 0xB8;               
  10.                 T2H = 0xFF;               
  11.                 AUXR |= 0x10;               
  12. }

  13. void Delay100us()                //@11.0592MHz
  14. {
  15.         unsigned char i, j;

  16.         _nop_();
  17.         _nop_();
  18.         i = 2;
  19.         j = 15;
  20.         do
  21.         {
  22.                 while (--j);
  23.         } while (--i);
  24. }

  25. void main()
  26. {
  27.         UartInit();
  28.         while(1)
  29.         {
  30.                 if(flag==1)
  31.                 {
  32.                         ES=0;
  33.                         flag=0;
  34.                         S2BUF=a;
  35.                        
  36.                         while(!TI);
  37.                                 TI=0;
  38.                                 ES=1;
  39.                         Delay100us();
  40.                 }
  41.         }
  42. }

  43. void ser() interrupt 4
  44. {
  45.         RI=0;
  46.         a=S2BUF;
  47.         flag=1;
  48. }
復制代碼
回復

使用道具 舉報

8#
ID:94031 發(fā)表于 2019-2-1 16:03 | 只看該作者
jeffphoon 發(fā)表于 2019-2-1 10:57
明白了,謝謝哦!如何要調用P3.6和P3.7為接收和發(fā)送,要怎樣寫呢?
我的代碼還是不能收

#define                S1_USE_P36P37()                P_SW1 = (P_SW1 & ~0xc0) | 0x40        //UART1 使用P36 P37口
回復

使用道具 舉報

9#
ID:474217 發(fā)表于 2019-2-1 23:01 來自手機 | 只看該作者
第一次接觸proteus 8這個軟件,
求大佬解釋一下這個是為什么?
該怎樣解決啊?

15490331691370.5000705698561064.jpg (1.52 MB, 下載次數(shù): 133)

15490331691370.5000705698561064.jpg
回復

使用道具 舉報

10#
ID:123289 發(fā)表于 2019-2-2 23:26 | 只看該作者
需要習慣并學會看手冊
回復

使用道具 舉報

11#
ID:457181 發(fā)表于 2019-2-14 12:26 | 只看該作者
本帖最后由 jeffphoon 于 2019-2-14 13:59 編輯
xuyaqi 發(fā)表于 2019-2-1 16:03
define                S1_USE_P36P37()                P_SW1 = (P_SW1 & ~0xc0) | 0x40        //UART1 使用P36 P37口

請問要如何調用呢?我加了,但還是不能
  1. #include <reg52.h>
  2. #include <intrins.h>
  3. unsigned char        a,flag;        
  4. #define S1_USE_P36P37() P_SW1 = (P_SW1 & ~0xc0) | 0x40
  5. void UartInit(void)
  6. {
  7.         EA = 1; //′ò¿a×üÖD¶Ï
  8.         ES = 1; //′ò¿a′®¿úÖD¶Ï
  9.         
  10. //  9600
  11. //        SCON = 0x50;
  12. //        AUXR |= 0x01;
  13. //        AUXR |= 0x04;
  14. //        T2L = 0xE0;
  15. //        T2H = 0xFE;
  16. //        AUXR |= 0x10;
  17.         
  18. //    38400
  19.                 SCON = 0x50;    // SCON: Ä£ê½ 1, 8-bit UART, ê1Äü½óêÕ               
  20.                 AUXR |= 0x01;               
  21.                 AUXR |= 0x04;               
  22.                 T2L = 0xB8;               
  23.                 T2H = 0xFF;               
  24.                 AUXR |= 0x10;   

  25. //    57600
  26. //                SCON = 0x50;               
  27. //                AUXR |= 0x01;               
  28. //                AUXR |= 0x04;               
  29. //                T2L = 0xD0;               
  30. //                T2H = 0xFF;               
  31. //                AUXR |= 0x10;   

  32. }


  33. void Delay100us()                //@11.0592MHz
  34. {
  35.         unsigned char i, j;

  36.         _nop_();
  37.         _nop_();
  38.         i = 2;
  39.         j = 15;
  40.         do
  41.         {
  42.                 while (--j);
  43.         } while (--i);
  44. }

  45. void main()
  46. {
  47.         UartInit();
  48.         while(1)
  49.         {
  50.                 if(flag==1)
  51.                 {
  52.                         ES=0;
  53.                         flag=0;
  54.                         SBUF=a;
  55.                         
  56.                         while(!TI);
  57.                                 TI=0;
  58.                                 ES=1;
  59.                         Delay100us();
  60.                 }
  61.         }
  62. }

  63. void ser() interrupt 4
  64. {
  65.         RI=0;
  66.         a=SBUF;
  67.         flag=1;
  68. }




復制代碼
回復

使用道具 舉報

12#
ID:457181 發(fā)表于 2019-2-14 14:19 | 只看該作者
本帖最后由 jeffphoon 于 2019-2-15 09:45 編輯

我成功調用串口了!!
以下分享給需要的朋友
  1. #include <reg52.h>
  2. #include <intrins.h>
  3. unsigned char        a,flag;       
  4. sfr P_SW1   = 0xA2;            
  5. #define S1_S0 0x40              //P_SW1.6
  6. #define S1_S1 0x80              //P_SW1.7

  7. void UartInit(void)
  8. {
  9.        
  10. //         ACC = P_SW1;
  11. //   ACC &= ~(S1_S0 | S1_S1);    //S1_S0=0 S1_S1=0
  12. //   P_SW1 = ACC;                //(P3.0/RxD, P3.1/TxD)
  13.    
  14.   ACC = P_SW1;
  15.   ACC &= ~(S1_S0 | S1_S1);    //S1_S0=1 S1_S1=0
  16.   ACC |= S1_S0;               //(P3.6/RxD_2, P3.7/TxD_2)
  17.   P_SW1 = ACC;  
  18.        
  19.         EA = 1; //′ò¿a×üÖD¶Ï
  20.         ES = 1; //′ò¿a′®¿úÖD¶Ï
  21.        
  22. //  9600
  23. //        SCON = 0x50;
  24. //        AUXR |= 0x01;
  25. //        AUXR |= 0x04;
  26. //        T2L = 0xE0;
  27. //        T2H = 0xFE;
  28. //        AUXR |= 0x10;
  29.        
  30. //    38400
  31.                 SCON = 0x50;    // SCON: Ä£ê½ 1, 8-bit UART, ê1Äü½óêÕ               
  32.                 AUXR |= 0x01;               
  33.                 AUXR |= 0x04;               
  34.                 T2L = 0xB8;               
  35.                 T2H = 0xFF;               
  36.                 AUXR |= 0x10;   

  37. //    57600
  38. //                SCON = 0x50;               
  39. //                AUXR |= 0x01;               
  40. //                AUXR |= 0x04;               
  41. //                T2L = 0xD0;               
  42. //                T2H = 0xFF;               
  43. //                AUXR |= 0x10;   

  44. }


  45. void Delay100us()                //@11.0592MHz
  46. {
  47.         unsigned char i, j;

  48.         _nop_();
  49.         _nop_();
  50.         i = 2;
  51.         j = 15;
  52.         do
  53.         {
  54.                 while (--j);
  55.         } while (--i);
  56. }

  57. void main()
  58. {
  59.         UartInit();
  60.         while(1)
  61.         {
  62.                 if(flag==1)
  63.                 {
  64.                         ES=0;
  65.                         flag=0;
  66.                         SBUF=a;
  67.                        
  68.                         while(!TI);
  69.                                 TI=0;
  70.                                 ES=1;
  71.                         Delay100us();
  72.                 }
  73.         }
  74. }

  75. void ser() interrupt 4
  76. {
  77.         RI=0;
  78.         a=SBUF;
  79.         flag=1;
  80. }
復制代碼

謝謝大家之前的回復!!

回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品4| 国产日韩精品视频 | 中文字幕在线免费视频 | 精品一区视频 | 国产色网 | 亚洲一区二区三区四区五区午夜 | 久久久精品网 | 99福利视频导航 | 日操夜操 | 久久在线视频 | 久久精品一区二 | 日日欧美| 一区二区三区网站 | 99热最新网址 | 成人免费视屏 | 亚洲精品一区二区 | 久久免费观看视频 | 九九爱这里只有精品 | 日韩精品一区二区三区中文在线 | 在线观看成人小视频 | 成人一区二区三区在线观看 | 99久久国产综合精品麻豆 | 亚洲一级在线 | 国产精品日日摸夜夜添夜夜av | 国产永久免费 | 7777精品伊人久久精品影视 | 久久人爽| 亚洲社区在线 | 日韩亚洲欧美综合 | 先锋资源吧 | 亚洲免费精品一区 | 久久不卡 | 国产极品粉嫩美女呻吟在线看人 | 亚洲资源站 | 欧美一区二区三区 | 另类专区成人 | 欧美黑人国产人伦爽爽爽 | 99riav国产一区二区三区 | 在线一区视频 | 五月婷婷在线视频 | 夜夜夜夜草 |