单片小白刚接触单片机不久,看见单片机可以通过串口通信来实现控制功能,就想通过串口触摸屏输出信号来实现控制多个LED,遂借来一个串口屏进行试验,发现串口屏只是输出了一串数字(A5 5A 06 83 00 01 01 00 01),查了下串口屏说明,对数字串做出如下解释:一二位为帧头(A5 5A),第三位为字节长度(06),第四位为读指令(83),后五位为字节位(00 01 01 00 01),多开关的话后五位会有所不同以区分是哪个开关发出的信号;现本人只能做到串口有信号来只有一个LED亮灭,不知如何写代码让单片机能识别这串数字来控制不同的LED亮灭,代码如下,还望各位高手斧正、赐教。
单片机源程序如下:
#include <reg52.h> //载入头文件
typedef unsigned int u16; //定义一些用到的函数 typedef unsigned char u8; uchar i;
sbit led0=P0^0; //定义LED管脚 sbit led1=P0^1; sbit led2=P0^2; sbit led3=P0^3;
void UsartInit() //初始化串口数据9600 { TMOD = 0x20; SCON = 0x50; TH1 = TL1 = 0xFD; PCON = 0x00; EA = 1; ES = 1; TR1 = 1; }
void main() { led0=0; led1=0; led2=0; led3=0; UsartInit(); while(1); }
void Usart() interrupt 4 //中断函数 { u8receiveData; i=SBUF; switch(i) { Case ' ? ':led0=~led0; case ' ? ':led1=~led1; case ' ? ':led2=~led2; case ' ? ':led3=~led3; } receiveData=SBUF; RI=0; SBUF=receiveData; while(!TI); TI=0; }
|