久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2983|回復: 3
打印 上一主題 下一主題
收起左側

求助:51單片機向串口發(fā)送的問題

[復制鏈接]
跳轉到指定樓層
樓主
ID:162242 發(fā)表于 2017-3-11 10:46 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
寫了一個程序,用定時器控制led燈,當led燈亮時,發(fā)送一次數(shù)據(jù)到串口,當led燈滅時,發(fā)送一次數(shù)據(jù)到串口,現(xiàn)在遇到的問題是,當led燈亮時,會發(fā)送多次數(shù)據(jù)到串口,當燈滅時,又會發(fā)送多次數(shù)據(jù)到串口,
求助:怎么才能保證led燈亮和滅時各只發(fā)送一次數(shù)據(jù)到串口,下面是程序,求大神幫忙看下,程序哪些地方有問題,請幫忙指出,萬分感謝,


//程序目標:led0燈每秒鐘亮滅一次,led0亮時x=0x01,并把x值發(fā)送到串口,led0滅時y=0x02,并把y值發(fā)送到串口

/*現(xiàn)在遇到的問題:程序啟動后,led0亮時,會發(fā)送多次x值到串口(程序目標是led0亮時只發(fā)送一次x值到串口)
led0亮時,會發(fā)送多次x值到串口(程序目標是led0亮時只發(fā)送一次y值到串口)*/

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit led0=P1^0;     //LED燈

uchar x,y;   //設置變量,當led0=0時,x=0x01,當led0=1時,y=0x02,
uint count;

void delay(uint xms)   //延時
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void init()     //定時器及串口初始化程序
{
TMOD=0x21;
TH1=0XFD;
TL1=0XFD;
TH0=0x4C;
TL0=0x00;
SM0=0;
SM1=1;
REN=1;
EA=1;

ET0=1;
TR0=1;

TR1=1;
ES=1;
}   
void main()
{
init();
while(1)
{
  if(count==10)
  {
   count=0;
   led0=~led0;
   }
  if(led0==0)      //當led0=0時,把x值發(fā)送到串口
  {
   x=0x01;
   ES=0;
   SBUF=x;
   while(!TI);
   TI=0;
   ES=1;
  }

  if(led0==1)       //當led0=1時,把y值發(fā)送到串口
  {
   y=0x02;
   ES=0;
   SBUF=y;
   while(!TI);
   TI=0;
   ES=1;
   
  }
}
}
void timer0() interrupt 1       //計數(shù)器中斷(每秒鐘led0亮滅各一次)
{
TH0=0x4C;
TL0=0x00;
count++;
}
void timer5() interrupt 4     //串口中斷
{
}


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:146949 發(fā)表于 2017-3-11 16:11 | 只看該作者
把發(fā)送放在第一個if(count==10){內(nèi)}。。如下
if(count==10)
  {
   count=0;
   led0=~led0;                      if(led0==0)      //當led0=0時,把x值發(fā)送到串口
  {
   x=0x01;
   ES=0;
   SBUF=x;
   while(!TI);
   TI=0;
   ES=1;
  }
  if(led0==1)       //當led0=1時,把y值發(fā)送到串口
  {
   y=0x02;
   ES=0;
   SBUF=y;
   while(!TI);
   TI=0;
   ES=1;
  }
  }




回復

使用道具 舉報

板凳
ID:162242 發(fā)表于 2017-3-12 08:13 | 只看該作者
wosiyabo 發(fā)表于 2017-3-11 16:11
把發(fā)送放在第一個if(count==10){內(nèi)}。。如下
if(count==10)
  {

按你說的方法已解決,萬分感謝
回復

使用道具 舉報

地板
ID:151348 發(fā)表于 2017-3-12 15:15 | 只看該作者
樓上的方法值得一試
回復

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久久久亚洲视频 | 国产xxxx在线 | 国产精品色 | 免费观看www| 日韩在线电影 | 在线观看精品视频网站 | 日本在线免费 | 日韩视频一区二区 | 特级毛片www | 伊人网站在线 | a在线视频| 午夜精品久久久久久久久久久久久 | 国产伊人精品 | 日本在线视频一区二区 | 激情五月婷婷在线 | 天天干天天操天天射 | 日本免费黄色 | 国产福利在线小视频 | 亚洲一区二区三区在线视频 | 伊人网综合在线 | 国产中文字幕网 | 欧美精品一二三 | 国产欧美一区二区三区免费 | 国产农村妇女毛片精品久久麻豆 | 老司机深夜福利网站 | 欧美在线国产精品 | 色久五月 | 亚洲毛片一区二区 | 国产一区二区高清在线 | 黑人巨大精品欧美一区二区免费 | 在线观看国产视频 | 在线精品国产 | 亚洲区视频| 亚洲激情在线 | 欧美午夜一区 | 美女天堂在线 | 久久成人午夜 | 久草成人| 国产精品美女久久久久aⅴ国产馆 | 国产高清在线精品 | 99福利网 |