首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

串口控制LED,该怎么解决

2012-04-14 
串口控制LED小弟的要求很简单,就是通过串口助手发送命令控制不同LED的闪烁,比如发送 LED0亮,发送LED0灭,发

串口控制LED
小弟的要求很简单,就是通过串口助手发送命令控制不同LED的闪烁,比如发送 LED0亮,发送LED0灭,发送3,LED0闪烁。自己写了个小代码,不过没有反应

C/C++ code
#include<reg52.h>#define uchar unsigned char#define uint  unsigned int uchar LED_Buffer[2] = {0};      //从串口接收的数据/********************************************************************* 名称 : Delay_1ms()* 功能 : 延时子程序,延时时间为 1ms * x* 输入 : x (延时一毫秒的个数)* 输出 : 无***********************************************************************/void Delay_1ms(uint i)//1ms延时{    uchar x,j;    for(j=0;j<i;j++)    for(x=0;x<=148;x++);    }/********************************************************************* 名称 : Com_Int()* 功能 : 串口中断子函数* 输入 : 无* 输出 : 无***********************************************************************/void Com_Int(void) interrupt 4{    static uchar i = 0;        EA = 0;    if(RI == 1)   //当硬件接收到一个数据时,RI会置位    {        LED_Buffer[i] = SBUF ; //这里减去48是因为从电脑中发送过来的数据是ASCII码。        RI = 0;          if(i==1) i = 0;          i++;            }    EA = 1;}/********************************************************************* 名称 : Com_Init()* 功能 : 串口初始化,晶振11.0592,波特率9600,使能了串口中断* 输入 : 无* 输出 : 无***********************************************************************/void Com_Init(void){     TMOD = 0x20;     PCON = 0x00;     SCON = 0x50;                 TH1 = 0xFd;    //设置波特率 9600     TL1 = 0xFd;     TR1 = 1;        //启动定时器1     ES = 1;        //开串口中断     EA = 1;        //开总中断        }void Main(){//    uchar i = 0;    Delay_1ms(100);    Com_Init();    P2 = 0xff;  //这里把P2口的最高为置1,进入循环后 循环左移 一位正好是P2 最低为置1    while(1)    {        if(LED_Buffer[0]==0x30)   P2=0x00; //我想从串口发送的是16进制吧,0X30=1        else if(LED_Buffer[1]==0x31)  P2=0xff;    }}                           


感觉不管发送什么,LED都没反应啊

[解决办法]
到处是广告
[解决办法]
串口设置的问题
[解决办法]
你先实现不通信状况下的LED流水灯,在来考虑这个,感觉你中断接收后的处理过程的问题吧,没注意看。
[解决办法]
你没有减去48 ,你注释里面都写了的

热点排行