如何将单片机串口接收到的16进制字符串转化为整型数再返回给上位机? 串口通讯中,采样ASCII方式,单片机如何将接收到的上位机发...
\u4e32\u53e3\u901a\u4fe1\uff0c\u5982\u4f55\u5355\u7247\u673a\u628a\u4e0a\u4f4d\u673a\u53d1\u6765\u768416\u8fdb\u5236\u8f6c\u5316\u4e3a10\u8fdb\u5236\u3002\u4f60\u4ece\u4e0a\u4f4d\u673a\u53d1\u6765\u7684\u5e94\u8be5\u662f\u4e00\u4e2a\u5341\u516d\u4f4d\u768416\u8fdb\u5236\u6570\uff0c\u4f60\u53ef\u4ee5\u76f4\u63a5\u5b9a\u4e49\u4e00\u4e2aint\u53d8\u91cfA,A=\u9ad8\u516b\u4f4d*256+\u4f4e\u516b\u4f4d\uff0c\u5c31\u80fd\u5f97\u5230\u4e00\u4e2a10\u8fdb\u5236\u7684\u6570A\u4e86\uff0c\u4f60\u5982\u679c\u8981\u53d1\u4e00\u4e2a\u5341\u8fdb\u5236\u6570A\u7ed9\u4e0a\u4f4d\u673a\u4e5f\u662f\u4e00\u6837\u7684\uff0c\u9ad8\u516b\u4f4d\uff1dA/256;\u4f4e\u516b\u4f4d\uff1dA%256;
\u8fd9\u4e2a \u8f6c\u6362 \u901a\u5e38 \u7528 \u67e5\u8868 \u5c31\u53ef\u4ee5\u5427
\u795d\u4f60\u987a\u5229
串口收发需要一个约定,例如固定长度或数据包标识,你收到数据后按照acssii表转成数字发送出去。
C库里有个函数,叫sscanf
绛旓細鍒嗕袱娆″彂缁欑數鑴戝氨濂戒簡
绛旓細缁欎綘涓涓鍗曠墖鏈鍩虹閫氳绋嬪簭鍜屼笂浣嶆満涓插彛璋冭瘯绋嬪簭锛屼綘璇曚竴涓嬶紝鍦ㄨ繖涓熀纭涔嬩笂淇敼銆
绛旓細杩欓噷鍜屽嚑杩涘埗鐨勬暟鎹病鍏崇郴锛屼笉绠℃槸16杩涘埗锛岃繕鏄10杩涘埗锛岃繕鏄簩杩涘埗锛屽畠鎵瀛樺偍鐨勬暟鍊硷紝閮芥槸涓嶅彉鐨勩傝澶勭悊鎺ュ埌鏁版嵁锛屽繀椤诲仛鍗忚锛屽惁鍒欙紝浣犱笉鐭ラ亾杩欎竴涓叉暟鎹紝鍝釜鏄涓涓瓧鑺傦紝鍝釜鍙堟槸涓棿瀛楄妭銆
绛旓細'璁惧畾 InputMode 璇诲彇浜岃繘鍒舵暟鎹 MSComm1.InputMode = comInputModeBinary
绛旓細浣犱粠涓婁綅鏈哄彂鏉ョ殑搴旇鏄竴涓崄鍏綅鐨16杩涘埗鏁帮紝浣犲彲浠ョ洿鎺ュ畾涔変竴涓猧nt鍙橀噺A,A=楂樺叓浣*256+浣庡叓浣嶏紝灏辫兘寰楀埌涓涓10杩涘埗鐨勬暟A浜嗭紝浣犲鏋滆鍙戜竴涓崄杩涘埗鏁癆缁欎笂浣嶆満涔熸槸涓鏍风殑锛岄珮鍏綅锛滱/256;浣庡叓浣嶏紳A%256;
绛旓細涓涓瓧鑺 浜х敓16杩瀛楃灏辨槸涓や釜瀛楃浜嗭紝杩樺師鏃讹紝姣忎袱涓瓧绗﹀啀杩樺師涓涓瓧鑺傚氨琛屼簡銆傚彂閫侊細 1A---> '1' 'A'鎺ユ敹锛 '1'---> 1,'A'--->10 1*16+10=26 鍗1A, 灏卞彉鎴愪竴涓瓧鑺備簡銆傚緢绠鍗
绛旓細璇曡瘯涓嬪垪绋嬪簭锛岃兘鍚︽樉绀哄嚭鏉 3 7 锛歩nclude<reg52.h> define DataPort P0 //瀹氫箟鏁版嵁绔彛 绋嬪簭涓亣鍒癉ataPort 鍒欑敤P0 鏇挎崲 sbit DUAN=P2^6;//瀹氫箟閿佸瓨浣胯兘绔彛 娈甸攣瀛 sbit WEI=P2^7;// 浣嶉攣瀛 unsigned char code DuanMa[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};...
绛旓細濂戒簡16杩涘埗灏辨槸杩欐牱銆傚鏋滄槸瀛楃涓插彂閫佹柟寮忓氨绠鍗曚簡銆傘傜洿鎺ュ彂閫侊紝涓嶇敤瀛樺埌鏁扮粍涓侻SComm1.Output = "abcd" 鎺ユ敹鍙渶瑕鎶strBuff = MSComm1.Input鏀惧湪寰幆涓垽鏂氨琛屼簡銆傝鏄庛傘備竴鑸澶囨帶鍒跺鐢ㄥ瓧绗︿覆鏂规硶灏卞彲浠ヤ簡銆傘傚鎶曞奖鏈虹殑鎺у埗绛夈傝鍗曠墖鏈虹殑鎺у埗澶氱敤浜16杩涘埗浼犺緭鐨勬柟娉曘傚厛瑕佹悶娓呮鐢ㄧ殑...
绛旓細REN=1;//鍚姩涓插彛鎺ユ敹鏁版嵁 SM0=0;//涓插彛宸ヤ綔鏂瑰紡1 SM1=1;EA=1;//寮鎬讳腑鏂 ES=1;//寮涓插彛涓 while(1){ if(flag==1){ num[0]=b/10000;num[1]=b%10000/1000;num[2]=b%1000/100;num[3]=b%100/10;num[4]=b%10;flag=0;SBUF=b;while(TI==1)TI=0;} display(); } }...
绛旓細ORG 0000H SJMP STA ORG 0023H LJMP SERINT ORG 0030H STA:MOV SP,#6FH SETB ES SETB EA LOOP:JB KEY,LOOP LCALL DELAY JB KEY,LOOP MOV SBUF,#DAT LCALL SEND SJMP LOOP DELAY:MOV R0锛#10 D1:MOV R1,#200 DJNZ R1,DJNZ R0,D1 RET ;---涓插彛涓柇绋嬪簭--- SERINT:JBC RI,R_DA...