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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4393|回復: 6
收起左側

求助:51單片機向串口發送的問題

[復制鏈接]
ID:162242 發表于 2017-3-11 11:56 | 顯示全部樓層 |閱讀模式
寫了一個程序,用定時器控制led燈,當led燈亮時,發送一次數據到串口,當led燈滅時,發送一次數據到串口,現在遇到的問題是,當led燈亮時,會發送多次數據到串口,當燈滅時,又會發送多次數據到串口,
求助:怎么才能保證led燈亮和滅時各只發送一次數據到串口,下面是程序,求大神幫忙看下,程序哪些地方有問題,請幫忙指出,萬分感謝,


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

/*現在遇到的問題:程序啟動后,led0亮時,會發送多次x值到串口(程序目標是led0亮時只發送一次x值到串口)led0亮時,會發送多次x值到串口(程序目標是led0亮時只發送一次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值發送到串口
  {
   x=0x01;
   ES=0;
   SBUF=x;
   while(!TI);
   TI=0;
   ES=1;
  }

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

使用道具 舉報

ID:123289 發表于 2017-3-13 13:00 | 顯示全部樓層
做串行通訊,收發雙方要事先協議一下。
回復

使用道具 舉報

ID:111634 發表于 2017-3-13 22:15 | 顯示全部樓層
本帖最后由 zl2168 于 2017-3-13 22:17 編輯

雙機串行通信方式1
Proteus仿真一下,確認有效。
實例77 雙機通信方式1.rar (40.4 KB, 下載次數: 6)
串1.jpg
以上摘自張志良編著80C51單片機仿真設計實例教程——基于Keil CProteus》清華大學出版社ISBN 978-7-302-41682-1內有常用的單片機應用100案例,用于仿真實驗操作,電路與程序真實可靠可信可行書中電路和程序設計有詳細說明,程序語句條條有注解。
回復

使用道具 舉報

ID:111634 發表于 2017-3-13 22:18 | 顯示全部樓層
雙機串行通信方式2
Proteus仿真一下,確認有效。
實例78 雙機通信方式2.rar (46.57 KB, 下載次數: 2)
串2.jpg
以上摘自張志良編著80C51單片機仿真設計實例教程——基于Keil CProteus》清華大學出版社ISBN 978-7-302-41682-1內有常用的單片機應用100案例,用于仿真實驗操作,電路與程序真實可靠可信可行書中電路和程序設計有詳細說明,程序語句條條有注解。
回復

使用道具 舉報

ID:111634 發表于 2017-3-13 22:19 | 顯示全部樓層
雙機串行通信方式3
Proteus仿真一下,確認有效。
實例79 雙機通信方式3.rar (45.3 KB, 下載次數: 2)
串3.jpg
以上摘自張志良編著80C51單片機仿真設計實例教程——基于Keil CProteus》清華大學出版社ISBN 978-7-302-41682-1內有常用的單片機應用100案例,用于仿真實驗操作,電路與程序真實可靠可信可行書中電路和程序設計有詳細說明,程序語句條條有注解。
回復

使用道具 舉報

ID:170468 發表于 2017-3-14 01:48 | 顯示全部樓層
在定時器中斷里發,將定時器設置成1秒鐘中斷一次,然后中斷程序寫

if(led0==0)
{ led0 = 1;SBUF=1;}
else
{ led0 = 0;SBUF=2;}

void main()
{
init();
while(1);
  }
這樣就夠了
回復

使用道具 舉報

ID:140906 發表于 2017-3-14 09:06 來自手機 | 顯示全部樓層
你也可以在你原來的程序上定義一個變量,用來標志已經發送幾次數據,每次發完判斷是不是到你想要的次數了然后再停止,再把變量歸零,等待下一次的發送
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产一在线观看 | 二区三区视频 | 成人在线视频一区 | 亚洲精品一区二区三区蜜桃久 | 91超碰在线| 国产精品二区三区 | 成人国产精品久久久 | 午夜小视频在线播放 | 国产亚洲成av人片在线观看桃 | 成人动慢 | 欧美激情一区二区三区 | 欧美激情一区 | 国产高清在线精品一区二区三区 | 欧美日韩一区二区三区视频 | 国产一区二区欧美 | 国产精品日韩欧美一区二区三区 | 91社影院在线观看 | 一级黄色片一级黄色片 | 天天影视色综合 | 在线视频一区二区 | 久久久久久久一级 | 成人在线播放 | 久久精品一区二区三区四区 | 久久精品一区二区三区四区 | 99久久精品国产毛片 | 精品乱子伦一区二区三区 | 精久久久久 | 天堂综合网久久 | 日韩成人免费视频 | 久久久久一区二区三区 | 国产精品久久久av | 亚洲一区二区视频 | 污污的网站在线观看 | 一区二区国产在线 | 91久久网站 | 99精品99 | 日韩在线不卡 | 成人精品鲁一区一区二区 | 国产一级片 | 国产一级片精品 | 亚洲精品一区中文字幕乱码 |