亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码
標題:
如何提取51單片機串口接收的數據并轉整型?
[打印本頁]
作者:
madnick16
時間:
2019-3-23 22:13
標題:
如何提取51單片機串口接收的數據并轉整型?
我希望把51單片機串口接收的數據,分別提取后兩位,倒數第三第四位,并轉換成整形
單片機程序如下:
#include "reg52.h"
#include "stdio.h"
#include "string.h"
#define uchar unsigned char
#define uint unsigned int
void send_byte(uchar by);
void send_string(uchar *p);
void delay(uint n);
uchar rst[]="AT+RST\r\n";
uchar mod[]="AT+CWMODE=3\r\n";
uchar wico[]="AT+CWJAP=\"Nick\",\"qweasdzxc\"\r\n";
uchar sev[]="AT+CIPSTART=\"TCP\",\"192.168.43.31\",8080\r\n";
uchar mods[]="AT+CIPMODE=1\r\n";
uchar sen[]="AT+CIPSEND\r\n";
uchar in[]="in\r\n";
uchar copa[]="bye\r\n";
uint g,y,r;
sbit ght=P2^0;
sbit yht=P2^1;
sbit rht=P2^2;
void UsartInit()
{
SCON=0X50;
T2CON=0X34;
PCON=0X80;
RCAP2H=(65536-39)/256;
RCAP2L=(65536-39)%256;
ES=0;
EA=1;
ET0=1;
ET1=1;
EX0=1;
IT0=1;
EX1=1;
IT1=1;
}
void main()
{
UsartInit();
send_string(rst);
delay(1);
send_string(mod);
delay(1);
send_string(wico);
delay(10);
send_string(sev);
delay(10);
send_string(mods);
delay(5);
send_string(sen);
delay(3);
ES=1;
g=5;
y=2;
r=5;
while(1)
{
ght=0;
yht=1;
rht=1;
delay(g);
ght=1;
yht=0;
rht=1;
delay(y);
ght=1;
yht=1;
rht=0;
delay(r);
}
}
void send_byte(uchar by)
{
SBUF = by;
while(!TI);
TI = 0;
}
void send_string(uchar *p)
{
while(*p!= '\0')
{
send_byte(*p);
p++;
}
}
void delay(uint n)
{
unsigned int i=0;
for(i=0;i<n;i++)
{
#pragma asm
DEL3:MOV R0,#100
DEL2:MOV R1,#100
DEL1:MOV R2,#25
DEL0:NOP
NOP
DJNZ R2,DEL0
DJNZ R1,DEL1
DJNZ R0,DEL2
#pragma endasm
}
}
void Usart() interrupt 4
{
uchar str1;
#include "reg52.h"
#include "stdio.h"
#include "string.h"
#define uchar unsigned char
#define uint unsigned int
void send_byte(uchar by);
void send_string(uchar *p);
void delay(uint n);
uchar rst[]="AT+RST\r\n";
uchar mod[]="AT+CWMODE=3\r\n";
uchar wico[]="AT+CWJAP=\"Nick\",\"qweasdzxc\"\r\n";
uchar sev[]="AT+CIPSTART=\"TCP\",\"192.168.43.31\",8080\r\n";
uchar mods[]="AT+CIPMODE=1\r\n";
uchar sen[]="AT+CIPSEND\r\n";
uchar in[]="in\r\n";
uchar copa[]="bye\r\n";
uint g,y,r;
sbit ght=P2^0;
sbit yht=P2^1;
sbit rht=P2^2;
void UsartInit()
{
SCON=0X50;
T2CON=0X34;
PCON=0X80;
RCAP2H=(65536-39)/256;
RCAP2L=(65536-39)%256;
ES=0;
EA=1;
ET0=1;
ET1=1;
EX0=1;
IT0=1;
EX1=1;
IT1=1;
}
void main()
{
UsartInit();
send_string(rst);
delay(1);
send_string(mod);
delay(1);
send_string(wico);
delay(10);
send_string(sev);
delay(10);
send_string(mods);
delay(5);
send_string(sen);
delay(3);
ES=1;
g=5;
y=2;
r=5;
while(1)
{
ght=0;
yht=1;
rht=1;
delay(g);
ght=1;
yht=0;
rht=1;
delay(y);
ght=1;
yht=1;
rht=0;
delay(r);
}
}
void send_byte(uchar by)
{
SBUF = by;
while(!TI);
TI = 0;
}
void send_string(uchar *p)
{
while(*p!= '\0')
{
send_byte(*p);
p++;
}
}
void delay(uint n)
{
unsigned int i=0;
for(i=0;i<n;i++)
{
#pragma asm
DEL3:MOV R0,#100
DEL2:MOV R1,#100
DEL1:MOV R2,#25
DEL0:NOP
NOP
DJNZ R2,DEL0
DJNZ R1,DEL1
DJNZ R0,DEL2
#pragma endasm
}
}
void Usart() interrupt 4
{
uchar str;
str=SBUF;
RI = 0;//
}
void Iny0() interrupt 0
{
ES=0;
send_string(in);
ES=1;
}
void Iny1() interrupt 2
{
ES=0;
send_string(copa);
ES=1;
}
str1=SBUF;
RI = 0;//
}
void Iny0() interrupt 0
{
ES=0;
send_string(in);
ES=1;
}
void Iny1() interrupt 2
{
ES=0;
send_string(copa);
ES=1;
}
復制代碼
作者:
yzwzfyz
時間:
2019-3-23 22:13
想像一下:一個數據流從你面前流過,你如何知道誰是最后一個呢?
無法確定最后一個是誰,又何來倒數呢?
問題的前鍵就是這個!
也即通訊協議是如何定義:結束標記的!
你先規劃一個緩沖區,大小=4個字節+結束標記。每次收到數據就依序放入這個區域(循環放置,并設置一個指針PX,每次輸入使PX指向它,目的:可以知道何處是頭,何處是尾。)每次輸入后,在PX(注意是循環+,要保證不溢出)的地方,判一下是不是結束標記,如何是,則其它地方必是你要的4個字節。
作者:
madnick16
時間:
2019-3-25 21:48
yzwzfyz 發表于 2019-3-24 07:14
想像一下:一個數據流從你面前流過,你如何知道誰是最后一個呢?
無法確定最后一個是誰,又何來倒數呢?
...
可以給個樣本程序嗎
作者:
我對你情有獨鐘
時間:
2019-4-5 16:34
按照通信協議來
歡迎光臨 (http://www.denmoz.com/bbs/)
Powered by Discuz! X3.1