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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機串口通信如何發送一連串的數據,我的為什么只能收到第一個0xfe

[復制鏈接]
跳轉到指定樓層
樓主
ID:756024 發表于 2020-5-27 16:24 來自觸屏版 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
3黑幣
#include<reg51.h>
unsigned char code tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; //流水燈控制碼
sbit key=P3^2;
void send(unsigned char dat) //數據發送程序
{
SBUF=dat; //將要發送的數據存入發送緩沖器中
while(TI==0); //若發送中斷標志位沒有置1(正在發送數據),就等待
TI=0; //若發送完成,TI自動置1,這里把它清零
}
void delay(void) //延時函數
{
unsigned char m,n;
for(m=0;m<2000;m++) //延時約50ms
for(n=0;n<250;n++);
}
void main(void)
{
unsigned char i;
TMOD=0x20; //定時器T1工作于方式2(可自動重裝的8位定時器)
SCON=0x40; //串口工作方式1,不允許接收
PCON=0x00; //波特率不倍增
TH1=0xfd; //波特率為2400b/s
TL1=0xfd;
TR1=1; //啟動定時器T1(T1作波特率的發生器)
EA=1;
ET1=1;
while(1)
{
if(key==0)
{
for(i=0;i<8;i++) //一共8位的流水燈控制碼
{
send(tab[i]); //發送數據
delay(); //每50ms發送一次數據
}
}
}
}

最佳答案

查看完整內容

延時函數寫錯了,for(m=0;m
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:213173 發表于 2020-5-27 16:24 | 只看該作者
延時函數寫錯了,for(m=0;m<2000;m++),m最大只能加到255,for循環永遠出不去,串口發送一次就卡死在delay();這里了。
回復

使用道具 舉報

板凳
ID:660091 發表于 2020-5-27 20:59 | 只看該作者
你沒有寫中斷函數,把中斷打開干嘛? 是不是你中斷函數沒有放上來,程序卡在中斷函數里面了
回復

使用道具 舉報

地板
ID:282850 發表于 2020-5-27 21:37 | 只看該作者
最后delay(); 時間太短,建議500ms以上試試。
delay(void)寫的不好,要改進
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

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