历史上的今天
返回首页

历史上的今天

今天是:2025年10月17日(星期五)

正在发生

2022年10月17日 | MSP430初学:MSP430单片机C语言基础(二)

2022-10-17 来源:csdn

1.进制转换

作为一名”勤快“少年,我自然是:

2.数值数据的表示

1.储存单位

计算机的数据是以二进制形式存在的,所以它的储存单位也与二进制有关


储存单位:位bit,b,是数据储存的最小单位,表示一位二进制信息


                  字节Byte,B,是信息储存的基本单位,1B由8位二进制数字组成,1B=8b


2.有符号的二进制数


计算机中,无符号位和有符号位的取值范围区别_HD243608836的博客-CSDN博客_符号位


char      8bit  1Byte       2^8=256


C语言各数据类型大小和取值范围_画船听雨眠-CSDN博客_c语言数据类型范围


十进制数有正数和负数之分,二进制数也有正数和负数之分。带有正、负号的二进制数称为真值,如+1101001、-1001011就是真值。为了方便运算,在计算机中约定:在有符号数的前面增加 1 位符号位,用“0”表示正号,用“1”表示负号。这种在计算机中用 0 和 1 表示正负号的数称为机器数。目前常用的机器数编码方法有原码、反码和补码三种。(哈哈,让我想起了数电)


1)原码

正数的符号位用 0 表示,负数的符号位用 1 表示,其余数位表示数值本身。常用[X]原表示X的原码。


在8 位二进制数中,给出十进制数+52 和-52 的原码表示

[+52]原 = 0011 0100

[-52]原  = 1011 0100 

数值位相同,符号位不同


原码表示简单易懂,在计算机中常用于实现乘除运算,但加减运算不方便。例如,遇到两个异号数相加或者两个同号数相减,就要做减法。为了简化运算器的复杂性,提高速度,需要将减法运算转变为加法运算,其优势是在设计电子器件时,只需要设计加法器,不需要再单独设计减法器。因此人们引入了反码表示和补码表示。(msp430有乘法器)


2)反码

正数的反码表示与原码表示相同,最高位为符号位,用0 表示正数,其余各位为数值位。而负数的反码表示,是在原码的基础上保持符号位不变,其他各位按位取反得到的。常用[X]反 表示 X 的反码。


在 8 位二进制数中,给出十进制数+25 和-25 的反码表示。

[+ 25]反 =[+ 25]原= 0001 1001B(B表示二进制)

[-25]反  =                 1110  0110

 


3)补码

正数的补码表示与其原码相同,即最高位为符号位,用0表示正数,其余各位为数值位。而负数的补码表示是在原码的基础上保持符号位不变,其他各数值位按位取反,然后在最低位加 1 运算得到的。常用[X]补表示X的补码。


3.实数的表示


4.进位与溢出


(51单片机)看到的较为巧妙给的寄存器赋值方法:


注意:第写法有BUG!!


921600>65535,溢出了

关于int、short int、long int、long long 的区别_Adrianna的专栏-CSDN博客

 

其中一段

 

在标准中,并没有规定long一定要比int长,也没有规定short要比int短。

标准是这么说的:长整型至少和整型一样长,整型至少和短整型一样长。

这个的规则同样适用于浮点型long double至少和double一样长,double至少和float一样长。

至于如何实现要看编译器厂商.

应该这样写:

要点:unsigned int ---> unsigned char  int到char截断


          解释:


          int是4个字节

          char是1个字节,

          把int赋值给char,就要丢失高3个字节的内容,也就是截断,

          如果你能确定int的内容只有低位一个字节,int不是可以强制转换


       (0-255)unsigned char


int i=97;

char c;

c=(char)i; //不推荐这么用

要点:


unsigned int tmp;

 

T0RH = (unsigned char)(tmp>>8);

T0RL = (unsigned char)(tmp);

         >>对位操作


51可以对寄存器按位赋值,如P0^1=1,但msp430不可以,要对整个寄存器全部重新赋值,只改变需要的位,其他位不变,要注意的是头文件中定义了每位数值的常量。


在引用的头文件右键

这样使用时就容易多了,不用一位一位的自己写了,使用位运算


     P5DIR  = P5DIR |BIT4;//打开VCC

     P5OUT  =P5OUT| BIT4;

C语言位运算


位运算(二):8bit数据指定位置0或置1操作_XHfight的博客-CSDN博客


位操作---置位(置1)、清除和取反_chengwei1128的博客-CSDN博客


C语言位操作_无界编程-CSDN博客(嵌入式)


& 按位与

| 按位或

^ 按位异或

~按位取反


//某一位1

P5DIR  = P5DIR |BIT4;

//某一位0

ADC12CTL0 &= ~ADC12ENC;

//某一位取反

P5OUT ^= BIT4;

注意观察,0x0001u,u是什么意思?


       首先,前面加0x或者0X表示这个数的表示形式是16位

       其次,末尾加u表示无符号


溢出


CY 位是进位位,用来表示本次无符号数运算结果的溢出。由于无符号数的最高有效位只有数位意义而无符号意义,所以该位所产生的进位应该是本次运算结果的实际进位值。

所以说:进位位 CY 是在给定二进制数的位数范围内,代表了本次运算结果的溢出情况。另一方面,它所保存的进位值有时也是有用的。例如,双字长运算时,可以利用进位值把低位字的进位计入高位字。

OV 位表示溢出。溢出位是用来表示带符号数的运算结果超出有限字长的表示范围的标志。它是根据两个操作数的符号及其变化来设置的。例如,两个操作数符号相同而运算

结果的符号与之相反时 OV=1,反之,OV=0。

51单片机,定时器寄存器溢出中断


5.符号扩展问题


8bit --> 16bit --->32bit


3.计算机的码制

ASCII码


UART串口通讯   以16进制发送数据


推荐阅读

史海拾趣

集创北方(CHIPONE)公司的发展小趣事

2022年2月,北京冬奥会盛大开幕。在这场全球瞩目的体育盛事中,鸟巢LED舞台的璀璨灯光吸引了无数目光。背后的功臣正是集创北方的LED驱动芯片ICND2153和ICND2055。这两款芯片以其卓越的性能和稳定性,确保了舞台效果的完美呈现,为冬奥会增添了无尽的光彩。

AITSEMI公司的发展小趣事

为了进一步提升竞争力,AITSEMI公司积极寻求与产业链上下游企业的战略合作。通过与晶圆制造、封装测试等环节的领军企业建立紧密的合作关系,AITSEMI不仅确保了稳定的供应链和优质的产品质量,还成功实现了产业链的垂直整合,为公司的长远发展奠定了坚实的基础。

Auctor Corp公司的发展小趣事

随着电子行业的快速发展,Auctor Corp公司意识到只有不断创新才能在竞争中脱颖而出。因此,公司加大了对研发的投入,不断引进先进技术和人才。经过数年的努力,公司成功开发出一系列具有行业领先水平的新产品,不仅性能卓越,而且具有极高的性价比。这些新产品的推出,使得Auctor Corp在市场上获得了广泛的认可。

Compensated Devices Inc公司的发展小趣事

在电子行业竞争激烈的年代,CDI始终坚持品质至上的原则。公司建立了严格的质量控制体系,从原材料采购到生产流程,再到成品检验,每一个环节都严格把关。正是这种对品质的执着追求,使得CDI的产品在客户中赢得了良好的口碑。随着口碑的积累,CDI逐渐发展成为电子元件领域的知名品牌。

GHz Technology ( Microsemi )公司的发展小趣事

面对国内外市场的激烈竞争,CDI积极寻求与合作伙伴的共赢发展。公司与多家知名电子设备制造商建立了长期稳定的合作关系,共同开发新产品、拓展新市场。通过合作,CDI不仅提升了自身的技术水平,还成功打入了多个国际市场,实现了业务的快速增长。

东软载波(EastSoft)公司的发展小趣事

东软载波公司成立于1993年,自成立之初就专注于电力载波通信技术的研发。公司在1996年开始了电力线载波通信技术的深入研究,经过数年的努力,终于在2000年推出了第一代电力线载波通信芯片。这一成果标志着东软载波在电力载波通信领域取得了重要突破,为其后续发展奠定了坚实的基础。

问答坊 | AI 解惑

基于CC2430的水轮发电机组无线振摆监测系统研究

摘要:针对现有水轮发电机组振摆监测系统永久性结构模式 问题,构建了基于CC2430的水轮发电机组无线振摆监测系 统。给出了系统的体系结构和工作流程;设计基于CC2430模 块的无线传感器节点;详尽给出系统能源、信号同步及采样 精度测试等关键技 ...…

查看全部问答>

2440 bootloader中,MBR是什么东西?

请教,bootloader中有这么一个函数: // lqm: 1G08:dwStartSector = 7 * 64 (boot:7个block) HANDLE BP_OpenPartition(DWORD dwStartSector, DWORD dwNumSectors, DWORD dwPartType, BOOL fActive, DWORD dwCreationFlags) {      & ...…

查看全部问答>

求配置

在运行程序速度上比市场上常见的机子快一倍的有什么要求啊?麻烦给出配置啊。谢了…

查看全部问答>

wince5.0 下中英文 定制问题!

wince5.0下 问题: 怎样定制内核,让系统默认语言是英文,但是我能浏览中文及中文繁体的网站? 我在定制内核的时候 platform --setting LOACL 选了三种 中文、中文(台湾)、英文。 defaulte language:英语(美国)的时候,中文网页显示不出 ...…

查看全部问答>

HES失效问题

                                 在试验stm32的时钟安全试验时发现:如果使用HSE为系统时钟时,当HSE失效时不能切换到HSI;如果使用PLL作系统时钟时 ...…

查看全部问答>

AD9打开*.sch文件没内容

本人新手,求教各位大神,我用Altium Designer summer 09直接打开TI提供的原理图时,能打开,但是没有任何内容,这是为什么? 然后我用导入的方法时,遇到了无法导入的问题,见图,这又是什么原因呢?…

查看全部问答>

参加了CS1.6反恐作战团队

昨天被强拉去网吧参战CS,很不想去因为个人从来不去网吧都是在出租房玩而且老婆小孩也在,有五年作战经验的我虽然不太适应网吧的环境,但水平虽不咋地但还马马虎虎,二十多号人在网吧局域网激战,不大喜欢网吧那个味道,久了很头晕像晕车,每周一次 ...…

查看全部问答>

MIIX居然出现在杨宗纬的MV中,难道已经在台湾上市了?

本帖最后由 jameswangsynnex 于 2015-3-3 20:02 编辑 作为屌丝IT宅,又忙了大半年,这个十一说什么也要出去玩一玩。看着台湾游最近挺火,就四处翻了翻旅游介绍。不看不要紧,居然在杨宗纬为台湾宣传的MV上看到了联想新出的MIIX。 这是神马情况? ...…

查看全部问答>

ZedBoard学习手记(八) 更大的目标!在Linux下开发图形用户

在Linux下做GUI,比较简单的方法是使用QT。QT一直被用于跨平台的应用程序开发,之前属于Nokia,现在被卖给了Digia,开源版本的主页是http://qt-project.org/。QT的开发语言是C++和QML,可以用各种工具来进行开发设计,官方的IDE是QT Creator。要说 ...…

查看全部问答>