欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
單片機與傳感器串口通訊問題
[打印本頁]
作者:
延陵小
時間:
2017-4-8 20:08
標題:
單片機與傳感器串口通訊問題
請幫幫小弟。
程序目的為單片機循環發送讀取指令給傳感器,然后接收傳感器的應答數據中的第四位。遇到的問題是,本來在持續發送的讀取指令在接收過一次應答數據后就不再發送。程序如下。
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar table[]={0x01,0x03,0x00,0x00,0x00,0x01,0x84,0x0A};
uchar rec[7];
uchar date; //定義數據
uchar rec_flag; //接收數據標識,0 未接收數據 1 接收數據
uint num=0,acount=0,i;
void delay(uint);
void init_uart(void)
{
TMOD = 0x20; //定時器T1使用工作方式2
TH1 = 0xFD; //設置初值
TL1 = 0xFD;
TR1 = 1; //開始計時
PCON = 0x00; //SMOD=0;PCON第7位
SCON = 0x50; //工作方式1,波特率9600bit/s,允許接收
ES=1;
EA = 1; //開啟總中斷
}
void send(void)
{
for(num=0;num<=7;num++)
{
SBUF = table[num]; //發送數據
while(!TI); //等待發送完成
//delay(20);
TI = 0;
}
}
void receive(void)
{
if(RI==1) //檢測是否有數據接收
{
rec[acount] = SBUF; //接收數據
acount++;
RI = 0; //清除標志位
if(num==7) num=0;
}
}
void delay (uint i)
{
while(i--);
}
void main(void)
{
init_uart(); //初始化串行口
do
{
send();
delay(20000);
}
while(1);
}
void jieshou(void) interrupt 4
{
receive();
P1=rec[4];
RI=0;
}
作者:
延陵小
時間:
2017-4-8 20:33
做的是檢測光幕傳感器,應答數據第4位為被遮擋光束數量
作者:
imxuheng
時間:
2017-4-9 09:09
先用串口調試助手看看
作者:
ljwhylf
時間:
2017-4-9 10:39
謝謝!學了知識
作者:
延陵小
時間:
2017-4-9 14:41
imxuheng 發表于 2017-4-9 09:09
先用串口調試助手看看
串口助手和傳感器兩樣都試了,一樣的結果
作者:
延陵小
時間:
2017-4-9 21:06
問題已解決,receive子函數中num改成account。謝謝諸位點進來的大哥們
作者:
wpupup
時間:
2017-4-10 14:28
謝謝指引~
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1