Ⅰ 单片机接收通过串口发来的字符串存进一个数组里面
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";
是相当的。