欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2098|回復: 2
收起左側

求單片機大神指教,手機發送字符無法改變led的亮滅

[復制鏈接]
回帖獎勵 10 黑幣 回復本帖可獲得 2 黑幣獎勵! 每人限 1 次(中獎概率 70%)
ID:229016 發表于 2017-11-23 19:26 | 顯示全部樓層 |閱讀模式
#include<reg52.h>
#include <intrins.h>
#define uchar unsigned int
#define uint unsigned char
sbit led1=P1^0;
sbit led2=P1^1;
sbit led3=P1^2;
uchar temp,c;
void init() //串口初始化
{
  ES=0;//關中斷
  TMOD=0x20;//定時器工作方式2,8位自動重裝模式,用于產生波特率
  TH1=0xfd;//波特率位9600.晶振位11.059
  TL1=0xfd;
  SCON=0x50;//REN=1允許串行接受狀態,串口口工作方式1
  PCON=0x00;//波特率不加倍
  TR1=1;//定時器1開始工作,產生波特率
//  TI=0;//發送標志位置0
//  RI=0;//接受標志位置0
  EA=1;
  ES=1;//開串口中斷
  led1=0;
  led2=0;
  led3=0;
  }
void send(uchar a)//單字節數據發送
{
  TI=0;
  SBUF=a;
  while(TI==0);     
  TI=0;
  if(c%2)
  led3=1; //發送指示燈標志,每接收一次,此燈亮滅交替
  else
  led3=0;
  c++;
  }
void ctrl()//接收處理函數
{
  switch(temp)
  {
    case '1':led1=1;
send(temp);
break;
case '2':led2=1;
send(temp);
break;
case '3':led1=0;led2=0;
send(temp);
break;
case '4':led1=1;led2=1;
send(temp);
break;
case '5':led3=0;
send(temp);
break;
default:
led1=1;
led2=1;
led3=1;
send(temp);
}
}
void main()
{
//  led1=0;
//  led2=0;
//  led3=0;
  init();
  while(1)
  {
//    if(RI==1)//是否有數據到來
// {
//   RI=0;
//   temp=SBUF;   //暫存接收到的數據
   ctrl();
//   }
}
}
void ser() interrupt 4
{
  RI=0;
  temp=SBUF;   //暫存接收到的數據
}     
回復

使用道具 舉報

ID:190832 發表于 2017-11-23 20:09 | 顯示全部樓層
很簡單,串口收到的是ASCII,把你收到的字符temp-'0'才是真正的數字。。。
回復

使用道具 舉報

ID:231632 發表于 2017-11-23 22:37 | 顯示全部樓層
手機發送的是ascall,還有,注意一下發送的是hex還是文本模式
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表