c语言单片机编程中,怎样将一个串口的到得字符串赋值给一个数组 如何将串口通信发送的字符串存入一个数组中

\u5355\u7247\u673a\u63a5\u6536\u901a\u8fc7\u4e32\u53e3\u53d1\u6765\u7684\u5b57\u7b26\u4e32\u5b58\u8fdb\u4e00\u4e2a\u6570\u7ec4\u91cc\u9762

if(RI)
{
arr[i++]=buff;

if(i>8)
i=0;
}
\u8fd9\u6837\u53ef\u4ee5\u63a5\u6536\u5e76\u8d4b\u503c\uff0c\u4f46\u662f\u4f1a\u6709\u4e00\u4e2a\u95ee\u9898\uff0c\u4e0a\u4f4d\u673a\u5fc5\u987b\u4e00\u6b21\u53d1\u90018\u4e2a\u5b57\u8282\u624d\u884c
\u5982\u679c\u4e0a\u4f4d\u673a\u6709\u4e00\u6b21\u53d1\u9001\u4e864\u4e2a\u5b57\u8282\uff0c\u5728\u53d1\u90018\u4e2a\u5b57\u8282\u7684\u65f6\u5019\uff0c\u5355\u7247\u673a\u5c06\u4e0d\u80fd\u6b63\u5e38\u63a5\u6536

\u4f60\u8fd9\u95ee\u9898\u6709\u70b9\u4e0d\u6e05\u695a\uff0c\u4e32\u53e3\u901a\u4fe1\u53d1\u9001\u7684\u5b57\u7b26\u4e32\uff0c\u5230\u5e95\u662f\u7535\u8111\u53d1\u9001\u7684\uff0c\u8fd8\u662f\u5355\u7247\u673a\u53d1\u9001\u7684\uff1f\u4e32\u53e3\u901a\u4fe1\u53ea\u662f\u4e00\u79cd\u901a\u4fe1\u6a21\u5f0f\uff0c\u5e76\u6ca1\u8bf4\u660e\u662f\u4ec0\u4e48\u53d1\u9001\u5b57\u7b26\u4e32\u3002\u6240\u4ee5\uff0c\u4f60\u7684\u95ee\u9898\u5f88\u77db\u76fe\uff0c\u5982\u679c\u662f\u7535\u8111\u53d1\u9001\uff0c\u5355\u7247\u673a\u63a5\u6536\uff0c\u90a3\u5e94\u8be5\u662f\u5355\u7247\u673a\u63a5\u6536\u540e\u5b58\u5165\u4e00\u4e2a\u6570\u7ec4\u3002\u53ef\u662f\uff0c\u4f60\u7684\u95ee\u9898\u597d\u50cf\u662f\u7535\u8111\u53d1\u9001\uff0c\u53c8\u7535\u8111\u5b58\u5165\u6570\u7ec4\u3002\u6216\u5355\u7247\u673a\u53d1\u9001\uff0c\u5355\u7247\u673a\u5b58\u5165\u6570\u7ec4\u3002
\u4f46\u770b\u4f60\u7a0b\u5e8f\uff0c\u53c8\u90fd\u4e0d\u662f\u3002\u662f\u5355\u7247\u673a\u63a5\u6536\u4e86(\u90a3\u5e94\u8be5\u662f\u7535\u8111\u53d1\u9001\u7684)\uff0c\u5355\u7247\u673a\u53c8\u53d1\u9001\u56de\u53bb\u4e86\uff0c\u4ec0\u4e48\u610f\u601d\uff1f\u8c01\u5b58\u5165\u6570\u7ec4\uff1f\u800c\u6839\u672c\u6ca1\u770b\u5230\u5b9a\u4e49\u4ec0\u4e48\u6570\u7ec4\uff1f

1、串口字节为:SBUF
暂存数组:A[]
依次将接收到的字节存入A[0],A[1],A[2],...A[n],
接收完毕,存入字符串结束标识:A[N+1]=0
A就代表一个字符串。
如果是一串数字,要转为整数。

2、例程:

#include<reg51.h>
#define uchar unsigned char
uchar A[16],num;
void uart() interrupt 4
{
if(RI)
    {
    RI=0;
    A[num]=SBUF;
    num++;
    num&=0x0f;
    }
}
main()
{
}


#include<reg51.h>
#define uchar unsigned char
uchar A[16],num;
void uart() interrupt 4
{
if(RI)
{
RI=0;
A[num]=SBUF;
num++;
num&=0x0f;
}
}
main()
{
........................自己编吧
}

你得注释, 越看头越大, unsigned char fifo_head=0; //往fifo写入数据时的位置unsigned char fifo_tail=0; // 读出fifo时的位置unsigned char Rx1_pos=0; //当前的接收位置unsigned char Rx1_num=0; //数据长度unsigned char Frame_in=

要想一个字符一个字符的赋值,就老老实实写个循环吧

串口字节为: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璇█鍗曠墖鏈虹紪绋嬩腑,鎬庢牱灏嗕竴涓涓插彛鐨勫埌寰楀瓧绗︿覆璧嬪肩粰涓涓暟缁
    绛旓細1銆佷覆鍙e瓧鑺備负锛歋BUF鏆傚瓨鏁扮粍锛欰[]渚濇灏嗘帴鏀跺埌鐨勫瓧鑺傚瓨鍏[0],A[1],A[2],...A[n],鎺ユ敹瀹屾瘯锛屽瓨鍏ュ瓧绗︿覆缁撴潫鏍囪瘑锛欰[N+1]=0A灏变唬琛涓涓瀛楃涓层傚鏋滄槸涓涓叉暟瀛楋紝瑕佽浆涓烘暣鏁般2銆佷緥绋嬶細include<reg51.h>#define uchar unsigned charuchar A[16],num;void uart() interrupt 4{if(RI) ...
  • 51鍗曠墖鏈篶璇█濡備綍灏1涓澶т簬256unsigned int鍨嬫暟鎹瓨鏀惧湪eeprom涓,姣 ...
    绛旓細鍙互楂8浣嶄綆8浣嶅垎寮鏀 渚嬪鍐橢EPROM鍑芥暟鏄痸oid write_eeprom(unsigned int add,unsigned char dat)a鏄鍐欏叆鐨勬暟鎹 璋冪敤鏃 write_eeprom(2000,a) 鍐欎綆8 浣 write_eeprom(2001,a>>8) 鍐欓珮8 浣 璇诲嚭鏃跺垎涓ゆ璇诲嚭鍐嶅悎鎴涓涓鏁 a= EEPROM_read(2001,a) *256+ EEPROM_read(2000,a)
  • 涓涓璐熸暟鍦鍗曠墖鏈篶璇█缂栫▼涓浣鎷嗗垎鍏朵釜浣嶅拰鍗佷綅?骞舵樉绀?鍗曠墖鏈虹殑c...
    绛旓細C涓鑸槸琛ョ爜褰㈠紡淇濆瓨锛屾墍浠ヨ鍏堝垽鏂璐燂紝if锛坸<0锛塜鏄綘鐨勬暟鎹 濡傛灉鏄礋鏁板氨鍙栧弽-1锛杩欓噷鎴戜笉澶х‘瀹氫簡锛屼綘璇曡瘯鍑1杩樻槸+1 { x=~x锛泋=x-1锛泒
  • 璇锋暀C51鍗曠墖鏈,C璇█缂栫▼,鎬庢牱鎶婁竴涓鍥涗綅鏁板瓨鍏(璇诲彇)澶栭儴鏁版嵁瀛樺偍鍣...
    绛旓細//澶栭儴缁濆鍦板潃瀹氫箟锛屽叿浣撳湴鍧鏍规嵁浣犳墍闇瀛樺湪鍝釜鍦板潃鍗曞厓鑰屽畾 define uchar unsigned char define uint unsigned int uchar xdata XRAM _at_ 0xFF00[4];//鎸囧畾澶栭儴瀛樺偍鍦板潃 uchar DATA1[4]; //浣犲厛鎶婁綘鐨勫洓浣嶆暟姣忎綅鍗曠嫭鍒嗙鍑烘潵瀛樺埌杩欎釜4鎴愬憳鏁扮粍 void main(void){ uchar i;for(i=0;i<4...
  • 鍗曠墖鏈篊璇█涓浠涔堣鍙ュ彲浠灏嗕竴涓鍙橀噺鍊兼竻绌
    绛旓細鎳備綘鐨勬剰鎬濅簡锛岄偅浣犲氨鎶婅繖涓彉閲忚涓哄叏灞鍙橀噺涓涓鍒濆,姣忔鎵ц绋嬪簭鏃跺仛鍒濆鍖.
  • 璇烽棶鍗曠墖鏈篶璇█涓鍙笉鍙互鎶婁竴涓瀛楃涓茶浆鍖栨垚鍙橀噺鍚?
    绛旓細鎴戜互鍓嶄篃杩欐牱鎯宠繃锛屽悗鏉ュ彂鐜扮敤鎸囬拡鑳借В鍐筹紝鍏堝畾涔塽nsigned a1,a2,a3,鈥︹;鐒跺悗瀹氫箟涓涓鎸囬拡unsigned char *p;杩愯p=&a1;setValue(x,y)p+=y-1;p=x;濡俿etValue(10,2)缁撴灉a2灏辨槸10锛涗笉鎳傝拷闂
  • 鍗曠墖鏈篶璇█缂栫▼涓 鎬庝箞鍑犺璇彞鏁翠綋绉诲姩
    绛旓細Keil涓紝鍦ㄨ彍鍗曗滅紪杈戔->鈥滈珮绾р濅腑锛屾湁鈥淚ndent Selection鈥濇槸灏嗛変腑鐨勮鏁翠綋鍙崇Щ涓涓缂╄繘璺濈锛岃屸淯nindent Selection鈥濇槸灏嗛変腑鐨勮鏁翠綋宸︾Щ涓涓缉杩涜窛绂汇傞氬父鎯呭喌涓嬶紝鍙互灏濊瘯蹇嵎閿細鍦ㄩ夋嫨浜嗘湡鏈涚Щ鍔ㄧ殑琛屼箣鍚庯紝鎸変笅閿洏涓婄殑Tab閿紝浼氬皢閫変腑鐨勮鏁翠綋鍙崇Щ涓涓缉杩涜窛绂伙紝鑰屾寜涓嬧淪hift+Tab鈥濆悗...
  • 鍒濆鑰呮眰鏁:鍗曠墖鏈篊璇█缂栫▼濡備綍鐢涓涓涓荤▼搴忓皢鍑犱釜涓嶅悓鍔熻兘瀛愮▼搴忕殑...
    绛旓細main(){ ...//瀹氫箟 switch(uMainCnt){ case 0:SubPrg1(); //瀛愮▼搴1 uMainCnt++;break;case 1:SubPrg2(); //瀛愮▼搴2 uMainCnt++;break;...default:uMainCnt=0;} }
  • C璇█鍗曠墖鏈虹紪绋,濡備綍灏涓插彛鎺ユ敹鍒扮殑鍗佸叚杩涘埗瀛楃杞瓨鍒版暟缁勪腑?
    绛旓細鎺ユ敹鏁扮粍涔熷彲浠ュ畾涔夋垚涓嶅畾闀垮害鐨勶紝娌℃湁鎯宠瀵绘壘浣犺鐨勫瓧绗︿覆鍙互鐢╯trstr 鍑芥暟锛屽鏋滄兂娓呴浂鍙互鐢╩emset鍑芥暟鍏ㄩ儴璧嬪间负0
  • c51鍗曠墖鏈篊璇█缂栫▼ 涓涓鍙d繚鎸佽緭鍑洪珮(1) 涓涓彛淇濇寔杈撳嚭浣(0)鎬庝箞鍋...
    绛旓細include<reg51.h> sbit P20=P2^0;sbit P21=P2^1; //瀹氫箟浣嶅彉閲忥紝灏哖2^0銆丳2^1鍙g殑鍊艰祴缁欏彉閲廝21銆丳20 void main(){ while(1){ P20=0;P21=1;} }
  • 扩展阅读:少儿编程是学什么的 ... 初学编程必背50个 ... c十十编程要学多久 ... 51单片机入门编程语言 ... c++编程适合几岁学 ... 大数据适合女生学吗 ... 编程必背100个代码 ... 三类人不适合学编程 ... 单片机编程入门教程视频 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网