标题: 串口通信如何控制其他硬件 [打印本页]

作者: reveal    时间: 2017-8-5 10:47
标题: 串口通信如何控制其他硬件


#include "reg52.h"               

sbit led=P2^0;
typedef unsigned int u16;          
typedef unsigned char u8;



void UsartInit()
{
        SCON=0X50;                       
        TMOD=0X20;               
        PCON=0X80;               
        TH1=0XF3;                       
        TL1=0XF3;
        ES=1;                                       
        EA=1;                                       
        TR1=1;                               
}



void main()
{       
        UsartInit();  
        while(1);               
}



void Usart() interrupt 4
{
        u8 receiveData;
        receiveData=SBUF;
        SBUF=receiveData;
        while(!TI);               
        TI=0;                                       
        RI = 0;
//  当接受到数字0是使led亮
        if(SBUF==0)
         {
                 led=0;
   }
}
  但是程序没有自己想要的结果,希望大佬帮忙改下  ,最好能解释下串口通如何控制其他硬件

作者: g753388438    时间: 2017-8-5 11:56
好久没写51的串口程序了  有几点你需要确定一下
第1  波特率 一定要设置正确
第2  中断一定要打开
第3
  1. void Usart() interrupt 4
  2. {
  3.         u8 receiveData;
  4.         receiveData=SBUF;
  5.         SBUF=receiveData;
  6.         while(!TI);               
  7.         TI=0;                                       
  8.         RI = 0;
  9. //  当接受到数字0是使led亮
  10.         if(SBUF==0)
  11.          {
  12.                  led=0;
  13.    }
  14. }
复制代码
改成
  1. void Usart() interrupt 4
  2. {
  3.         u8 receiveData;
  4.         receiveData=SBUF;
  5.     if(receiveData==0)
  6.          {
  7.                  led=0;
  8.    }
  9.         SBUF=receiveData;
  10.         while(!TI);               
  11.         TI=0;                                       
  12.         RI = 0;
  13. //  当接受到数字0是使led亮
  14.    
  15. }
复制代码

这样只有收到0时led等会亮
第4  你要确定led灯亮,IO口应该置0还是置1
作者: reveal    时间: 2017-11-11 15:46
谢谢   认真学习下




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1