Ⅰ 單片機接收通過串口發來的字元串存進一個數組裡面
if(RI)
{
arr[i++]=buff;
if(i>8)
i=0;
}
這樣可以接收並賦值,但是會有一個問題,上位機必須一次發送8個位元組才行
如果上位機有一次發送了4個位元組,在發送8個位元組的時候,單片機將不能正常接收
Ⅱ 單片機 C語言中關於數組的問題
a/b 不可能同時是兩個數組、還是兩個變數。
char aa[2];
aa[0]=a[5]+0x30;
aa[1]=b[5]+0x30;
另兩個數字,也相似。
Ⅲ 單片機C51中二維字元串數組怎麼定義是a[2][2]={"我","我"};這樣啊
不可以,一個漢字有2個位元組,每個字元串還必須有一個位元組終止符/n,所以你的這個數組應該建立成這樣a[2][3]={"我","我"};
Ⅳ 單片機如何處理接收到的字元串數組
串口在發送的數據如果是字元型的,那麼在接收到數據後就要先減去0x30,然後再根據16進制的計算方法計算。你說的不是很清楚的,實際的話要根據你發送的數據來確定的。請多多思考很簡單的。
Ⅳ c語言單片機編程中,怎樣將一個串口的到得字元串賦值給一個數組
串口位元組為:SBUF
暫存數組:A[]
依次將接收到的位元組存入A[0],A[1],A[2],...A[n],
接收完畢,存入字元串結束標識:A[N+1]=0
A就代表一個字元串。
如果是一串數字,要轉為整數:
int
Temp=0;
char
i;
for(i=0;i<n+1;i--)
{
Temp=Temp*10+A[i];
}
如果串口接收的是數字的ASCII碼字元串,則:
for(i=0;A[i]!=0;i--)
{
Temp=Temp*10+A[i]-'0';
}
Temp為所得整數。
Ⅵ 關於嵌入式單片機 匯編c語言 有關於 char 數組 字元串 和 字元數組的問題
uchar ppw[8]="12345678"; //這里數字是字元串,其值為0x31,0x32.....
uchar pppw[8]={1,2,3,4,5,6,7,8}; //這里數字是數值,其值為0x01,0x02.......
Ⅶ 求個單片機通過串口發送字元串數組的程序,上位機通過串口調試助手接受,謝謝,波特率9600
#include<stdio.h>
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
unsigned char flag;
unsigned char s1[]="ABCDEFG HIJKLMN OPQRST UVWXYZ",i;
unsigned char slen=sizeof(s1);
void delay(uint x)
{
while(x--);
}
void main()
{
TMOD=0x20; //設置T1為工作方式2
TH1=0xfd; //裝入初值,比特率為9600bps
TL1=0xfd;
TR1=1; //開啟T1
REN=1; //接收允許
SM0=0; //方式1
SM1=1;
EA=1; //開全局中斷
ES=1; //開串口中斷
flag=0;
while(1)
{
if(flag==1)
{
ES=0;
flag=0;
for(i=0;i<slen;i++)//若接收到,則發送相關字元串
{
SBUF=s1[i];
while(!TI);
TI=0;
}
ES=1; //串口中斷允許
}
}
}
void ser() interrupt 4
{
RI=0; //清除標志
P2=~P2; //LED閃爍
//P0=SBUF;
flag=1; //發送標志
}
這只是一個簡單的串口發送字元串程序,通過串口助手發送任意數據,單片機接收到數據後即返回事先定義的字元串內容
Ⅷ 單片機把一個一個的字元存到數組中這個數組是字元串嗎
相當於字元串,比如:
unsigned char str[12]={'p','l','e','a','s','e',' ','o','p','e','n'};
unsigned char str="please open";
是相當的。