色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > AT89C51雙機(jī)通信C程序

          AT89C51雙機(jī)通信C程序

          作者: 時(shí)間:2016-11-11 來源:網(wǎng)絡(luò) 收藏
          1. /***********************************************
          2. 文件名:8051串口發(fā)送
          3. 描 述:串口發(fā)送函數(shù) void Uart_sent(char uart_ch)
          4. 握手協(xié)議,主機(jī)發(fā)送AA,收到BB
          5. 時(shí) 間:2011年3月1日
          6. 【 】:羅志勇
          7. ************************************************/
          8. #include
          9. voiduart_init(void)// X = 256 - f*2(SMOD+1)/384*BAUD
          10. {
          11. SCON=0x50;//REN=1允許串行接受狀態(tài),串口工作模式1
          12. TMOD|=0x20;//定時(shí)器工作方式2
          13. PCON|=0x80;
          14. //TH1 = 0xFD; //baud*2 /* reload value 19200、數(shù)據(jù)位8、停止位1。效驗(yàn)位無 (11.0592)
          15. TH1=0xF3;// //baud*2 /* 波特率4800、數(shù)據(jù)位8、停止位1。效驗(yàn)位無 (12M)
          16. TL1=0xF3;
          17. TR1=1;
          18. }
          19. voidUart_Send(charuart_chm)//發(fā)送字符
          20. {
          21. TI=0;
          22. SBUF=uart_chm;
          23. while(TI==0);// 等特?cái)?shù)據(jù)傳送(TI發(fā)送中斷標(biāo)志)
          24. TI=0;// 清除數(shù)據(jù)傳送標(biāo)志
          25. }
          26. voidUart_sent(charuart_ch)
          27. {
          28. /*握手程序(主機(jī)發(fā)送AA,從機(jī)回答B(yǎng)B)*/
          29. do{
          30. SBUF=0xAA;//發(fā)送聯(lián)絡(luò)信號(hào)
          31. while(TI==0);
          32. TI=0;//清除發(fā)送標(biāo)志
          33. while(RI==0);//等待回答
          34. RI=0;//清除接收標(biāo)志
          35. }while((SBUF^0xBB)!=0);//有誤,繼續(xù)聯(lián)絡(luò)
          36. Uart_Send(uart_ch); //發(fā)送字符函數(shù)
          37. }
          38. voidmain(void)
          39. {
          40. uart_init();//初始化串口
          41. while(1)
          42. {
          43. Uart_sent(P1);
          44. }
          45. }
          46. /***********************************************
          47. 文件名:8051串口接收(中斷)
          48. 描 述:使用串口中斷接收數(shù)據(jù)
          49. 握手協(xié)議,從機(jī)收到AA,發(fā)送BB
          50. 時(shí) 間:2011年3月1日
          51. 【 】:羅志勇
          52. ************************************************/
          53. #include
          54. charuart_chm;
          55. voiduart_init_r(void)// X = 256 - f*2(SMOD+1)/384*BAUD
          56. {
          57. SCON=0x50;//REN=1允許串行接受狀態(tài),串口工作模式1
          58. TMOD|=0x20;//定時(shí)器工作方式2
          59. PCON|=0x80;
          60. //TH1 = 0xFD; //baud*2 /* reload value 19200、數(shù)據(jù)位8、停止位1。效驗(yàn)位無 (11.0592)
          61. TH1=0xF3;// //baud*2 /* 波特率4800、數(shù)據(jù)位8、停止位1。效驗(yàn)位無 (12M)
          62. TL1=0xF3;
          63. TR1=1;
          64. ES=1;//開串口中斷
          65. EA=1;// 開總中斷
          66. }
          67. voidUart_receive(void)
          68. {
          69. while(RI==0);// 接收數(shù)據(jù)
          70. RI=0;//清除RI接受中斷標(biāo)志
          71. P1=SBUF;//讀出數(shù)據(jù)
          72. }
          73. voidmain(void)
          74. {
          75. uart_init_r();
          76. while(1)
          77. {
          78. }
          79. }
          80. voidint_Uart_resive(void)interrupt 4
          81. {
          82. /*握手程序(主機(jī)發(fā)來AA,從機(jī)回答B(yǎng)B) */
          83. do{
          84. while(RI==0);//等待回答
          85. RI=0;//清除接收標(biāo)志
          86. }while((SBUF^0xAA)!=0);//判斷是否可正常接收
          87. SBUF=0xBB;//發(fā)送聯(lián)絡(luò)信號(hào)
          88. while(TI==0);
          89. TI=0;
          90. Uart_receive();//接收函數(shù)
          91. }


          關(guān)鍵詞: AT89C51雙機(jī)通信C程

          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉