導航:首頁 > 操作系統 > 單片機串口給變數賦值

單片機串口給變數賦值

發布時間:2023-08-28 23:49:09

A. 在單片機C語言中如何對變數的某一位進行操作或賦值。

在C語言中,一般有兩種方法來操作位,一種是使用C語言提供的位運算操作符,一種是使用位域。

1、使用位域

在C語言中定義位域的一般格式如下:

struct位域結構名
{位域列表};

struct:在C語言中定義位域所使用的關鍵字是struct。

位域結構名:是一個C語言中的標識符,有字母、數字、下劃線組成,而且第一個字元必須是字母或者下劃線。

位域列表:組其中位域列表的形式為: 類型說明符 位域名:位域長度

下面的示例代碼,通過位域來計算IEEE754浮點數編碼中單精度數的最大值 、最小值和最小弱規范數。

#include<stdio.h>
typedefstructFP_SINGLE
{
unsigned__int32fraction:23;
unsigned__int32exp:8;
unsigned__int32sign:1;
}fp_single;
intmain()
{
floatx;
fp_single*fp_s=(fp_single*)&x;
fp_s->sign=0;
fp_s->exp=0xfe;
fp_s->fraction=0x7fffff;
printf("float最大數:%le ",(double)x);
fp_s->sign=0;
fp_s->exp=0x1;
fp_s->fraction=0x0;
printf("float最小數:%le ",(double)x);
fp_s->sign=0;
fp_s->exp=0;
fp_s->fraction=0x1;
printf("float最小弱規范數:%le ",(double)x);
return0;
}

2、使用位運算符

C語言中的位運算符有一個基本的常識,即只能操作整數,不能操作浮點數,因為浮點數是使用IEEE754編碼的,使用位操作數沒有任何意義。

C語言提供的位運算符列表:
&按位與如果兩個相應的二進制位都為1,則該位的結果值為1,否則為0
|按位或兩個相應的二進制位中只要有一個為1,該位的結果值為1
^按位異或若參加運算的兩個二進制位值相同則為0,否則為1
~取反~是一元運算符,用來對一個二進制數按位取反,即將0變1,將1變0
<<左移用來將一個數的各二進制位全部左移N位,右補0
>>右移將一個數的各二進制位右移N位,移到右端的低位被舍棄,對於無符號數,高位補0

B. 51單片機 C語言 串口數組賦值問題

貼上來的程序部分,修改如下:
#include<reg52.h>
#include<stdio.h> //列印到串口函數
#define uchar unsigned char
#define uint unsigned int
uchar date_zi[4][11]; //存放接收到的數據
uint i_index=0; //接收到的字元個數
uint i=0; //i字元用於循環
unsigned int xia = 0; //用於保存到數據的下標
void fh_zi(uchar a) //返回字元到串口
{
ES=0;
SBUF=a;
while(!TI);
TI=0;
ES=1;
}
void init()
{
TMOD=0x20;
TH1=0xfd;
TL1=0Xfd;
//TH0=(65536-45872)/256;
//TL0=(65536-45872)%256;
TR1=1;
SM0=0;
SM1=1;
REN=1;
EA=1;
ES=1;
}
void main()
{
i_index=0;
xia=2;
init();

while(1);
}
void ser() interrupt 4 //串口
{
if(RI == 1)
{
RI=0;
date_zi[xia][i_index] = SBUF;
i_index++;
if(i_index>10) //接受完10個字元後顯示數組所有內容
{
i_index=0;
for(i=0;i<11;i++) //顯示數組中所有內容
fh_zi(date_zi[0][i]);
for(i=0;i<11;i++)
fh_zi(date_zi[1][i]);
for(i=0;i<11;i++)
fh_zi(date_zi[2][i]);
for(i=0;i<11;i++)
fh_zi(date_zi[3][i]);
}

}
}

閱讀全文

與單片機串口給變數賦值相關的資料

熱點內容
桌面兩個微信怎麼都加密碼 瀏覽:276
長沙單身程序員 瀏覽:883
伺服器下載異常是因為什麼 瀏覽:703
java防刷 瀏覽:842
3dmax取消當前命令 瀏覽:359
顯示當前模式下所有可執行的命令 瀏覽:758
為什麼程序員拿了股份還要高薪 瀏覽:946
電腦運行命令里的記錄能刪嗎 瀏覽:697
linuxwss 瀏覽:848
一個軟體需要登錄伺服器地址 瀏覽:923
哪裡有解壓程序 瀏覽:299
java靜態方法內存 瀏覽:545
我的世界ec伺服器如何帶vip 瀏覽:737
什麼是由解析器域名和伺服器構成 瀏覽:414
自動識別電影信息源碼 瀏覽:850
柱筋箍筋加密區怎麼算 瀏覽:48
鋼筋中加密15倍是什麼意思 瀏覽:366
esc加密演算法 瀏覽:518
linux運行exe命令 瀏覽:125
一級建造師管理pdf 瀏覽:720