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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

奉上STC15F2K60S2單片機雙串口RS232程序

[復制鏈接]
ID:609989 發(fā)表于 2019-10-15 10:56 | 顯示全部樓層 |閱讀模式
如題“昨天剛調(diào)出來”。
串口1 :/P1.6/P1.7串口1 RXD/TXD   
串口2  :/P1.0/P1.1串口2 RXD/TXD  
3.0和3.1用來下載程序,使用內(nèi)部復位電路與晶振。這款單片機很哇塞的。
PC發(fā)送2個字節(jié),程序里可以看,返回SendString2("STC15F2K60S2\r\nUart Test 2!\r\n");
代碼放上,里面可以優(yōu)化,但是不影響功能。也放上了89與15系列的頭文件,方便寫程序。

附件.rar (53.82 KB, 下載次數(shù): 88)

單片機源程序如下:
  1. #include <stdio.h>
  2. #include <STC15F2K60S2.H>
  3. #include "intrins.h"

  4. #define FOSC 12000000L          //系統(tǒng)頻率
  5. #define BAUD 9600            //串口波特率
  6. #define uint unsigned int
  7. //#define S1_S0 0x40              //P_SW1.6
  8. //#define S1_S1 0x80              //P_SW1.7

  9. #define S2RI 0x01 //S2CON.0
  10. #define S2TI 0x02 //S2CON.1
  11. unsigned char a,a2,i=0,p=0;
  12. unsigned char String[2];   //串口1接收數(shù)據(jù)緩存區(qū)
  13. unsigned char String2[2];   //串口2接收數(shù)據(jù)緩存區(qū)

  14. bit busy,busy2;
  15. sbit led = P0^0;
  16. sbit led1 = P0^1;
  17. /*************系統(tǒng)初始化****************/
  18. void sys_init(void)
  19. {
  20. //    P20=1;
  21. //    P32=1;
  22. //    P33=1;
  23.     //P_SW1=0x40;        //P3.6/P3.7串口1 RXD/TXD
  24.     P_SW1=0x80;      //P1.6/P1.7串口1 RXD/TXD   
  25.     P_SW2=0x00;      //P1.0/P1.1串口2 RXD/TXD   
  26. }
  27. /*************UART_1&2 初始化****************/
  28. void UartInit(void)   
  29. {
  30.     SCON = 0x50;                      //COM1 8位數(shù)據(jù),可變波特率
  31.     S2CON =0X50;                     //COM2 8為數(shù)據(jù)可變波特率
  32.     T2L = (65536 - (FOSC/4/BAUD));  //設(shè)置波特率重裝值
  33.     T2H = (65536 - (FOSC/4/BAUD))>>8;
  34.     AUXR = 0x14;                    //T2為1T模式, 并啟動定時器2
  35.     AUXR |= 0x01;                    //選擇定時器2為串口1的波特率發(fā)生器  ///  |

  36.     ES = 1;                          //使能串口1中斷
  37. //    ES2=1;                         //使能串口2中斷
  38.     IE2 = 0x01;
  39.     EA = 1;
  40. }
  41. /*************發(fā)送字符****************/
  42. void SendData(unsigned char dat)
  43. {
  44.     while (busy);              //等待前面的數(shù)據(jù)發(fā)送完成
  45.     busy = 1;
  46.     SBUF = dat;                //寫數(shù)據(jù)到UART數(shù)據(jù)寄存器
  47. }
  48. /*************發(fā)送字符串****************/
  49. void SendString(char *s)
  50. {
  51.     while (*s)                  //檢測字符串結(jié)束標志
  52.     {
  53.         SendData(*s++);        //發(fā)送當前字符
  54.     }
  55. }
  56. /*************發(fā)送字符****************/
  57. void SendData2(unsigned char dat2)
  58. {
  59.     while (busy2);              //等待前面的數(shù)據(jù)發(fā)送完成
  60.     busy2 = 1;
  61.     S2BUF = dat2;                //寫數(shù)據(jù)到UART數(shù)據(jù)寄存器
  62. }
  63. /*************發(fā)送字符串****************/
  64. void SendString2(char *ss)
  65. {
  66.     while (*ss)                  //檢測字符串結(jié)束標志
  67.     {
  68.         SendData2(*ss++);        //發(fā)送當前字符
  69.     }
  70. }
  71. void delayms(uint time)
  72. {
  73.     uint x,y;
  74.     for(x=0;x<time;x++)
  75.       for(y=0;y<120;y++);
  76. }
  77. /*************主函數(shù)****************/
  78. void main()
  79. {
  80.     delayms(2000);
  81.     led=0;
  82.     led1=0;
  83.     sys_init();
  84.     UartInit();
  85.     while(1)
  86.     {
  87.         delayms(1000);
  88. //        if(a==0x01)
  89.         if((String[0]==0x01)&&(String[1]==0x01))
  90.         {

  91.             delayms(200);
  92.           SendString("STC15F2K60S2\r\nUart Test !\r\n");
  93.             led=1;
  94.             delayms(200);
  95.             String[0] = 0x00;
  96.             String[1] = 0x00;
  97. //            a=0x00;
  98.             break;
  99.         }
  100. //        if(a==0x02)
  101.         if((String[0]==0x02)&&(String[1]==0x02))
  102.         {

  103.           //SendData(a);
  104.             delayms(200);
  105.           SendString("String\r\n");
  106.               led=1;
  107.             delayms(200);
  108.             String[0] = 0x00;
  109.             String[1] = 0x00;
  110. //            a=0x00;
  111.             break;
  112.         }
  113.                 delayms(1000);
  114. //        if(a2==0x01)
  115.         if((String2[0]==0x01)&&(String2[1]==0x01))
  116.         {

  117.             delayms(200);
  118.           SendString2("STC15F2K60S2\r\nUart Test 2!\r\n");
  119.             led1=1;
  120.             delayms(200);
  121.             String2[0] = 0x00;
  122.             String2[1] = 0x00;
  123. //            a2=0x00;
  124.             break;
  125.         }
  126. //       if(a2==0x02)
  127.         if((String2[0]==0x02)&&(String2[1]==0x02))
  128.         {

  129.           //SendData(a);
  130.             delayms(200);
  131.           SendString2("String 2\r\n");
  132.               led1=1;
  133.             delayms(200);
  134.             String2[0] = 0x00;
  135.             String2[1] = 0x00;
  136. //            a2=0x00;
  137.             break;
  138.         }
  139.     }
  140. }
  141. /*************UART_1 中斷服務(wù)程序****************/
  142. void Uart1() interrupt 4
  143. {
  144.     if (RI)
  145.     {
  146.         RI = 0;           //清除RI位
  147. //        a = SBUF;
  148.         
  149.         String[i]= SBUF;              
  150.         i++;
  151.         if(i>1)i=0;
  152.     }
  153.     if (TI)
  154.     {
  155.         TI = 0;                //清除TI位
  156.         busy = 0;              //清忙標志
  157.     }
  158. }
  159. /*************UART_2 中斷服務(wù)程序****************/
  160. void Uart2() interrupt 8
  161. {
  162.     if(S2CON & S2RI)
  163.     {
  164. //      S2RI=0;           //清除RI位
  165.         S2CON &= ~S2RI;
  166. //        a2 = S2BUF;
  167.    
  168.         String2[p]= S2BUF;  
  169.         p++;        
  170.         if(p>1)p=0;
  171.         
  172.     }
  173.     if (S2CON & S2TI)
  174.     {
  175.         S2CON &= ~S2TI;                //清除TI位
  176.         busy2 = 0;              //清忙標志
  177.     }
  178. }
復制代碼


評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復

使用道具 舉報

ID:47397 發(fā)表于 2021-8-6 20:35 | 顯示全部樓層
請教一個問題,我試用了你的程序,但是沒有正確的反饋,發(fā)送什么,返回的就是什么,請問可能是什么原因?
回復

使用道具 舉報

ID:695015 發(fā)表于 2021-8-9 11:04 | 顯示全部樓層
dlyt03 發(fā)表于 2021-8-6 20:35
請教一個問題,我試用了你的程序,但是沒有正確的反饋,發(fā)送什么,返回的就是什么,請問可能是什么原因?

參考來自己寫一個比較好把
回復

使用道具 舉報

ID:41543 發(fā)表于 2022-8-19 09:49 | 顯示全部樓層
感謝,經(jīng)過自己改,可以用雙串口通訊控制了。
回復

使用道具 舉報

ID:561375 發(fā)表于 2023-5-5 11:59 | 顯示全部樓層
經(jīng)過自己改,可以用雙串口通訊控制
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产欧美在线一区 | 欧美日韩三级 | 天天操天天摸天天干 | 欧美成人精品一区 | 视频1区2区 | 亚洲一区二区在线视频 | 欧美在线观看网站 | 一本色道精品久久一区二区三区 | 日韩精品一区二区在线 | 久久99精品久久久久久国产越南 | 免费v片在线观看 | 日日夜夜影院 | 狠狠av | 成人精品视频在线观看 | 亚洲精品电影在线观看 | 欧美日韩亚洲一区 | 91av视频 | 亚洲a人| 中文字幕一区在线观看视频 | 欧美v日韩v | 国产欧美一区二区三区久久 | 国产区精品 | 亚洲三区视频 | 亚洲精品国产a久久久久久 午夜影院网站 | 欧美 日韩精品 | 日韩欧美大片在线观看 | 久久久噜噜噜久久中文字幕色伊伊 | 北条麻妃一区二区三区在线观看 | 天天色影视综合 | 亚洲人人 | 99久久夜色精品国产亚洲96 | 欧美精三区欧美精三区 | 免费在线观看一级毛片 | 日韩欧美国产一区二区 | 国产精品久久在线观看 | 中文字幕第90页 | 久久精品国产v日韩v亚洲 | 久久国产综合 | 中文字幕在线不卡 | 久久久国产精品入口麻豆 | 亚洲精品一区二区三区在线 |