您的位置 首页 数字

AT89C51双机通讯C程序

/***********************************************文件名:8051串口发送描述:串口发送函数voidUart_sent(charuart_ch)握手协议,

  1. /***********************************************
  2. 文件名:8051串口发送
  3. 描 述:串口发送函数 void Uart_sent(char uart_ch)
  4. 握手协议,主机发送AA,收到BB
  5. 时 间: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答应串行承受状况,串口作业形式1
  12. TMOD|=0x20;//定时器作业方式2
  13. PCON|=0x80;
  14. //TH1 = 0xFD; //baud*2 /* reload value 19200、数据位8、中止位1。效验位无 (11.0592)
  15. TH1=0xF3;// //baud*2 /* 波特率4800、数据位8、中止位1。效验位无 (12M)
  16. TL1=0xF3;
  17. TR1=1;
  18. }
  19. voidUart_Send(charuart_chm)//发送字符
  20. {
  21. TI=0;
  22. SBUF=uart_chm;
  23. while(TI==0);// 等特数据传送(TI发送中止标志)
  24. TI=0;// 铲除数据传送标志
  25. }
  26. voidUart_sent(charuart_ch)
  27. {
  28. /*握手程序(主机发送AA,从机答复BB)*/
  29. do{
  30. SBUF=0xAA;//发送联络信号
  31. while(TI==0);
  32. TI=0;//铲除发送标志
  33. while(RI==0);//等候答复
  34. RI=0;//铲除接纳标志
  35. }while((SBUF^0xBB)!=0);//有误,持续联络
  36. Uart_Send(uart_ch); //发送字符函数
  37. }
  38. voidmain(void)
  39. {
  40. uart_init();//初始化串口
  41. while(1)
  42. {
  43. Uart_sent(P1);
  44. }
  45. }
  46. /***********************************************
  47. 文件名:8051串口接纳(中止)
  48. 描 述:运用串口中止接纳数据
  49. 握手协议,从机收到AA,发送BB
  50. 时 间: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答应串行承受状况,串口作业形式1
  58. TMOD|=0x20;//定时器作业方式2
  59. PCON|=0x80;
  60. //TH1 = 0xFD; //baud*2 /* reload value 19200、数据位8、中止位1。效验位无 (11.0592)
  61. TH1=0xF3;// //baud*2 /* 波特率4800、数据位8、中止位1。效验位无 (12M)
  62. TL1=0xF3;
  63. TR1=1;
  64. ES=1;//开串口中止
  65. EA=1;// 开总中止
  66. }
  67. voidUart_receive(void)
  68. {
  69. while(RI==0);// 接纳数据
  70. RI=0;//铲除RI承受中止标志
  71. P1=SBUF;//读出数据
  72. }
  73. voidmain(void)
  74. {
  75. uart_init_r();
  76. while(1)
  77. {
  78. }
  79. }
  80. voidint_Uart_resive(void)interrupt 4
  81. {
  82. /*握手程序(主机发来AA,从机答复BB) */
  83. do{
  84. while(RI==0);//等候答复
  85. RI=0;//铲除接纳标志
  86. }while((SBUF^0xAA)!=0);//判别是否可正常接纳
  87. SBUF=0xBB;//发送联络信号
  88. while(TI==0);
  89. TI=0;
  90. Uart_receive();//接纳函数
  91. }

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/zhishi/shuzi/275273.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部