导航:首页 > 操作系统 > 单片机串口给变量赋值

单片机串口给变量赋值

发布时间: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]);
}

}
}

阅读全文

与单片机串口给变量赋值相关的资料

热点内容
python教学合集 浏览:955
有什么好用的小众app吗 浏览:116
芋道app源码 浏览:447
计算机程序员怎么找 浏览:280
智联发pdf 浏览:236
c语言编译错误变黑 浏览:72
手机软件加密了怎么解开 浏览:887
linux中的ln命令例子 浏览:142
为什么玩cf第一次进入服务器很慢 浏览:967
工作单源码 浏览:619
安卓如何关闭app自动升级 浏览:137
new文件夹怎么打开 浏览:633
安卓51如何优化 浏览:177
活塞式压缩机原理图 浏览:846
水环式压缩机工作原理 浏览:716
阿里云服务器安装后怎么使用 浏览:934
去做APP开户有什么危险没得啊 浏览:698
8分之1乘58算法 浏览:172
php提交过滤 浏览:358
豪斯曼检验stata命令 浏览:771