发烧友10周年庆典,全网超值优惠来袭!千元现金券,下单抽奖赶紧参与》》

如何使用8位单片机对16位INT型数据进行操作

单片机精讲吴鉴鹰 2019-06-30 10:29 次阅读

在8位单片机中没有16位数的操作指令,所有的int型数据都要通过两个字节分开操作,使用的方法不用,生成的代码也不相同,当然效率也不一样,通过指针对16位数进行操作可以得到高效的代码。

比如通过串行口接收数据,或者从串行的EEPROM中读取的数据,或者从大于8位的A/D读取的数据,由于8位单片机的数据线是8位的,高于8位的数据都要分成两个字节分别读取,然后写入到RAM中去再进行计算,或者把16位的int型数据从RAM中读出再分别把高低字节存到EEPROM或者送到D/A,或者通过串行口发送出去,方法有很多种,下面用多种方法进行实现该操作,这里只演示写入到16位的情况,读取的情况非常相似,不赘述。

(1)使用联合 (union)

typedef union{

unsigned int i;

unsigned char c[2];

}u_int;

unsigned char dH = 0x11, dL=0x22;

unsigned int d;

u_int ud;

ud.c[0] = dH;

ud.c[1] = dL;

d = ud.i;

此时d = 0x1122;

(2) 使用移位指令

数据定义与前面相同

d = ((unsigned int)dH)<<8 + dL;

或者

d = dH;

d <<= 8; // or: d = d<<8; 但后者编译的代码可能不是最简的

d |= dL; // or: d = d | dL; 后者编译的代码可能不是最简的

(3)使用指针

unsigned char *cptr;

cptr = (unsigned char*)(&d);

cptr[0] = dH;

cptr[1] = dL;

(4)强制指针类型转换

*((unsigned char*)(&d)) = dH;

*((unsigned char*)(&d)+1) = dL;

((unsigned char*)(&d))[0] = dH;

((unsigned char*)(&d))[1] = dL;

这两种方式看似相同但由Keil编译出的代码是不用的,前都有一次加法运算,而后者没有,后者生成的代码更简洁,这种方式与用联合成生的代码是完全一样的,

在这几种方法中第(1)与第(4)的第二种生成的代码是最乘洁的,是推荐使用的,从软件工程的角度出发,推荐使用方法(1),这样没有强制类型转换,没有用到指针,更不容易出错。从书写的代码来讲,第(4)的第二种方法是最好的,代码简洁而且效率最高,但语法有点儿复杂。

原文标题:8位单片机中如何对16位INT型数据进行操作?

文章出处:【微信号:wujianying_danpianji,微信公众号:单片机精讲吴鉴鹰】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
分享:

评论

相关推荐

玩单片机到千万身家,“技术型老总”需要哪些神技能?

中国硬件创新大赛网络培训会—技术培训篇如果你就干这行,毫无疑问你不能错过这次直播;如果不是,可能你不一定喜欢单片机,也不
发表于 05-16 00:00 585次 阅读
玩单片机到千万身家,“技术型老总”需要哪些神技能?

单片机数字滤波算法总结,看这篇

单片机主要作用是控制外围的器件,并实现一定的通信和数据处理。但在某些特定场合,不可避免地要用到数学运算,尽管单片机并不擅...
发表于 09-20 08:00 72次 阅读
单片机数字滤波算法总结,看这篇

SH79F1611集成ADC和PWM的增强型8051微控制器的数据手册免费下载

SH79F1611是一种高速高效率8051兼容单片机。在同样振荡频率下,较之传统的8051芯片具有运....
发表于 09-20 08:00 10次 阅读
SH79F1611集成ADC和PWM的增强型8051微控制器的数据手册免费下载

请问谁做过C51系列单片机的软件函数实现double(8字节 )对double的浮点运算?

惊天发现51系列单片机例如新华龙的 在keil for51 里定义 double依然是4字节。呵呵了。那么问题来了。既然double 和float一样。请...
发表于 09-20 01:26 41次 阅读
请问谁做过C51系列单片机的软件函数实现double(8字节 )对double的浮点运算?

AltiumDesigner10视频教程 | 免费获取

网盘链接: 提取码:dn42
发表于 09-19 22:15 213次 阅读
AltiumDesigner10视频教程 | 免费获取

如何计算C入口点相对于uboot起始的偏移?

关于u-boot的代码重定位疑惑,这个疑惑存在好久,而且查了好多资料,都有不同的解读,希望有关大神解惑 1、第一阶段代码在RAM...
发表于 09-19 22:05 28次 阅读
如何计算C入口点相对于uboot起始的偏移?

STM32控制BLDC-如何让电机转起来 有原理图有程序

无刷直流电机比较流行,很多电机内部加入霍尔元件,通过霍尔元件可以知道电机转子的位置,根据这个位置给电机相线供电,这样电机...
发表于 09-19 21:59 82次 阅读
STM32控制BLDC-如何让电机转起来 有原理图有程序

使用MSP430单片机设计声音导引系统的资料免费下载

本设计采用两片低功耗MSP430 单片机作为主辅控制单元。通过麦克风检测音频信号,辅控单元计算声源坐....
发表于 09-19 17:48 28次 阅读
使用MSP430单片机设计声音导引系统的资料免费下载

使用89C52单片机设计简易智能电动车的论文资料免费下载

简易智能电动车由一个电动玩具车改造而成。系统的控制部分以单片机为核心,通过对前向通道各种传感器信号的....
发表于 09-19 17:48 38次 阅读
使用89C52单片机设计简易智能电动车的论文资料免费下载

步进电机-四相五线步进电机原理

做了十几年软硬件开发,越来越喜欢电子技术,他能显示、能发声音、能传递信息、还能做出动作。电和磁总是分不开,他能产生力,能...
发表于 09-19 17:26 158次 阅读
步进电机-四相五线步进电机原理

STM32单片机驱动步进电机-定时器输出正弦波

前面的文章介绍了单片机控制步进电机四相四拍、四相八拍的方式。用的是持续电平驱动,这种驱动方式电机的噪音大,震动明显,下面...
发表于 09-19 17:22 173次 阅读
STM32单片机驱动步进电机-定时器输出正弦波

STM32单片机驱动步进电机-正弦波驱动

前面的文章介绍了单片机控制步进电机四相四拍、四相八拍的方式。用的是持续电平驱动,这种驱动方式电机的噪音大,震动明显,正弦...
发表于 09-19 17:18 178次 阅读
STM32单片机驱动步进电机-正弦波驱动

使用单片机控制继电器与DA转换器的宽带直流放大器设计论文免费下载

本文设计了一种前置放大电路,在较宽的频率范围内具有良好的直流和交流特性。该电路具有输出频率高(DC~....
发表于 09-19 17:04 26次 阅读
使用单片机控制继电器与DA转换器的宽带直流放大器设计论文免费下载

如何防止单片机被恶意攻击技术破解

单片机(Microcontroller)一般都有内部ROM/EEPROM/FLASH供用户存放程序。....
发表于 09-19 16:23 60次 阅读
如何防止单片机被恶意攻击技术破解

把单片机引脚配置普通的按键输入引脚,是选择哪种模式?

请大家帮忙,想把单片机引脚配置普通的按键输入引脚,是选择哪种模式? 以下哪种模式: 不激活上/下拉器件 激活下拉 激活上拉...
发表于 09-19 14:11 137次 阅读
把单片机引脚配置普通的按键输入引脚,是选择哪种模式?

使用PROTEUS和单片机设计100以内计数器的资料说明

在一个单片机应用系统中,往往都会输入信息和显示信息,这就涉及键盘和显示器。在单片机应用系统中,一般都....
发表于 09-19 11:28 18次 阅读
使用PROTEUS和单片机设计100以内计数器的资料说明

请问单片机怎么读取通讯时的数据流?

单片机与电脑通过IIC 通讯,有没有方法读取通讯时的数据流。。。...
发表于 09-19 09:13 90次 阅读
请问单片机怎么读取通讯时的数据流?

hFCT8单片机测量控制板的用户手册免费下载

FCT 系列是适用于 PCB 电路板自动各种功能测量的控制板。控制板采用“步骤”为核心理念,把需要测....
发表于 09-19 08:00 33次 阅读
hFCT8单片机测量控制板的用户手册免费下载

PIC12C508单片机控制灯光慢慢的变亮和变灭的程序设计

以上程序使用PIC12C508 单片机 ,内部4MHz时钟,4脚输入50HZ脉冲信号,7,6,3脚(....
发表于 09-18 16:08 101次 阅读
PIC12C508单片机控制灯光慢慢的变亮和变灭的程序设计

单片机定时器的四种工作方式解析

1 工作方式0 定时器/计数器T0工作在方式0时,16位计数器只用了13位,即TH0的高8位和....
发表于 09-18 15:57 82次 阅读
单片机定时器的四种工作方式解析

单片机空闲模式和掉电模式的应用解析

单片机进入空闲模式的时候,除了cpu处于休眠状态外,其余的硬件全部处于活动状态,芯片中未涉及的数据存....
发表于 09-18 15:16 45次 阅读
单片机空闲模式和掉电模式的应用解析

HR7P169B单片机的数据手册和特尔驰MCU芯片使用注意事项免费下载

特尔驰 MCU 芯片具有独立电源管脚。当 MCU 芯片应用在多电源供电系统时,应先对 MCU 芯片上....
发表于 09-17 17:07 60次 阅读
HR7P169B单片机的数据手册和特尔驰MCU芯片使用注意事项免费下载

使用MSP430F149单片机设计宽带直流放大器的详细论文说明

本设计由输入缓冲电路,增益控制电路,后级功率放大电路,测量电路,单片机控制及显示和电源模块六个功能模....
发表于 09-17 15:56 39次 阅读
使用MSP430F149单片机设计宽带直流放大器的详细论文说明

使用51单片机和EPM7128设计实现简易逻辑分析仪的论文免费下载

本设计采用单片机(89C51)和可编程逻辑器件(EPM7128)作为系统的控制核心。整个设计采用了模....
发表于 09-17 15:56 41次 阅读
使用51单片机和EPM7128设计实现简易逻辑分析仪的论文免费下载

使用单片机和THS3001设计宽带直流放大器的论文免费下载

本设计使用两片集成运放THS3001级联组成前置放大电路,并由运算放大器加分立器件三极管构成复合放大....
发表于 09-17 15:54 46次 阅读
使用单片机和THS3001设计宽带直流放大器的论文免费下载

使用CXA1019芯片和PLL频率合成器BU2614与单片机实现调频收音机的论文

本调频收音机主要由SONY 公司的FM/AM 收音机芯片CXA1019、ROHM 公司的PLL 频率....
发表于 09-17 15:54 38次 阅读
使用CXA1019芯片和PLL频率合成器BU2614与单片机实现调频收音机的论文

单片机实现寄存器寻址的方法解析

1、4个工作寄存器组共有32个通用寄存器,但在指令中只能使用当前寄存器组(工作寄存器组的选择在前面专....
发表于 09-17 15:43 36次 阅读
单片机实现寄存器寻址的方法解析

Modbus调试精灵与单片机实现多机通信的设计

写寄存器的时候,如果我们要把01写到一个地址是0000的寄存器地址里,点一下“写入”,就会出现发送指....
发表于 09-17 15:28 66次 阅读
Modbus调试精灵与单片机实现多机通信的设计

使用AT89S51单片机进行交通灯控制器的仿真与实现

交通灯控制器是智能交通系统中重要的组成部分,设计中选用AT89S51作为交通灯控制器的处理芯片,由单....
发表于 09-17 15:22 33次 阅读
使用AT89S51单片机进行交通灯控制器的仿真与实现

艾尔默斯公司的第二代压力传感器芯片E524.40介绍

该款芯片带有检测以及数字信号输出功能,可以识别动态压力变化,并将识别的信号传输至PSI5接口。为了监....
发表于 09-17 14:52 36次 阅读
艾尔默斯公司的第二代压力传感器芯片E524.40介绍

使用HCS12单片机开发板设计自主识别的智能小车论文免费下载

本论文制作了一个能够自主识别黑线行驶的智能车。该智能小车以飞思卡尔HCS12单片机作为核心控制器,采....
发表于 09-17 11:22 49次 阅读
使用HCS12单片机开发板设计自主识别的智能小车论文免费下载

单片机入门教程之常用电子元器件的详细视频教程免费下载

元器件的基本知识:原理图符号,封装,直插,结实,体积大,功率大,只能手工焊接,贴片,体积小,一般都 ....
发表于 09-17 11:22 58次 阅读
单片机入门教程之常用电子元器件的详细视频教程免费下载

51单片机案例分析:按钮控制灯亮接线原理

若同时按下两个以上的按钮,则对应的发光二极管发亮。例如按下SB1和SB3,则对应的输出端口P1.4和....
的头像 畅学单片机 发表于 09-17 10:25 141次 阅读
51单片机案例分析:按钮控制灯亮接线原理

使用STC12C5A60S2单片机设计一个光伏并网发电模拟装置的论文资料说明

当今,并网逆变器以它节能,高效等突出优点越来越受到人们的欢迎。并网逆变器主要分为光伏并网逆变器、风力....
发表于 09-16 17:48 49次 阅读
使用STC12C5A60S2单片机设计一个光伏并网发电模拟装置的论文资料说明

单片机中的时间片轮询法解析

时间片轮询法,在很多书籍中有提到,而且有很多时候都是与操作系统一起出现,也就是说很多时候是操作系统中....
发表于 09-16 16:11 70次 阅读
单片机中的时间片轮询法解析

如何快速的学习单片机编程

CPU,它的名字没有改,还是叫CPU(Central Processing Unit)。它是单片机的....
发表于 09-16 16:08 112次 阅读
如何快速的学习单片机编程

NRF24L01和单片机2.4GHz收发器产品规范免费下载

NRF24L01+是一款带有嵌入式基带协议引擎(Enhanced ShockBurst™)的单芯片2....
发表于 09-16 15:52 39次 阅读
NRF24L01和单片机2.4GHz收发器产品规范免费下载

如何为单片机选择合适的负载电容

各种逻辑芯片的晶振引脚可以等效为电容三点式振荡器。晶振引脚的内部通常是一个反相器,或者是奇数个反相器....
发表于 09-16 15:44 64次 阅读
如何为单片机选择合适的负载电容

YL90角度传感器模块使用说明和倾斜模块原理图与使用程序免费下载

该传感器模块将倾角信号转换成电压输出,且可以设置比较器的阈值,达到倾角过大输出报警的功能,精度相比陀....
发表于 09-16 08:00 18次 阅读
YL90角度传感器模块使用说明和倾斜模块原理图与使用程序免费下载

常见单片机的实用工具万用表和示波器与逻辑分析仪的介绍与使用方法

工欲善其事必先利其器,我们做单片机开发的时候,不管是调试电路还是调试程序,都需要借助一些辅助工具来帮....
发表于 09-16 08:00 69次 阅读
常见单片机的实用工具万用表和示波器与逻辑分析仪的介绍与使用方法

PIC24FV16KM204系列通用16位闪存单片机数据手册

PIC24FV16KM204系列器件为超低功耗Microchip器件引入了许多新的模拟特性。该 16....
发表于 09-16 08:00 25次 阅读
PIC24FV16KM204系列通用16位闪存单片机数据手册

STM32F0XXX CortexM0系列单片机的编程手册免费下载

本编程手册为应用程序和系统级软件开发人员提供信息。本文详细介绍了stm32 cortex™-m0处理....
发表于 09-16 08:00 47次 阅读
STM32F0XXX CortexM0系列单片机的编程手册免费下载

单片机中的AD精度是如何定义的

AD精度指的是AD实际转换的结果和理想的计算结果之间的误差,也叫做积分非线性误差,符号是(INL) ....
发表于 09-12 16:24 114次 阅读
单片机中的AD精度是如何定义的

单片机执行编制程序的全过程解析

单片机执行程序的过程,实际上就是执行我们所编制程序的过程。即逐条指令的过程。计算机每执行一条指令都可....
发表于 09-12 16:21 197次 阅读
单片机执行编制程序的全过程解析

单片机编程的常见问题解答

C 语言是一种结构化的高级语言。其优点是可读性好,移植容易,是普遍使 用的一种计算机语言。缺点是占用....
发表于 09-12 16:11 132次 阅读
单片机编程的常见问题解答

使用ADUC812单片机和AD603设计一个宽带放大器的报告资料免费下载

本设计由三个模块电路构成:前级放大电路(带AGC部分)、后级放大电路和单片机显示与控制模块。在前级放....
发表于 09-12 11:39 54次 阅读
使用ADUC812单片机和AD603设计一个宽带放大器的报告资料免费下载

使用LabWindows实现多个单片机与PC进行串口通信的工程文件和程序

本文档的主要内容详细介绍的是使用LabWindows实现多个单片机与PC进行串口通信的工程文件和程序....
发表于 09-12 11:37 70次 阅读
使用LabWindows实现多个单片机与PC进行串口通信的工程文件和程序

54个单片机的经典设计案例的程序和工程文件免费下载

本文档的主要内容详细介绍的是54个单片机的经典设计案例的程序和工程文件免费下载包括了:33个基础实验....
发表于 09-12 08:00 114次 阅读
54个单片机的经典设计案例的程序和工程文件免费下载

嵌入式技术是怎么一回事

物联网时代的到来,不管是从行业应用,还是智能硬件的爆发,亦或是大数据等等嵌入式技术都得到了史无前例的....
发表于 09-11 16:14 115次 阅读
嵌入式技术是怎么一回事

单片机和嵌入式之间有什么差异

嵌入式在软件系统层次,比单片机丰富了许多。
发表于 09-11 16:10 132次 阅读
单片机和嵌入式之间有什么差异

基于STC89C54RD单片机的高精度自动电阻测试仪设计

本系统由单片机STC89C54RD 控制,将被测电阻通过测量电路,将电阻的变化转变为电压和电流的变化....
发表于 09-11 15:42 74次 阅读
基于STC89C54RD单片机的高精度自动电阻测试仪设计

如何将单片机的TMR用作定时器和计数器使用

TMR1为16位宽,附带一个可编程的预分频器和一个可选的低频时基振荡器,适合与CPP模块配合使用来实....
发表于 09-11 15:36 76次 阅读
如何将单片机的TMR用作定时器和计数器使用

单片机嵌入式编程需要注意哪一些事项

在单片机嵌入式的编程过程中程序的好坏往往是由细节决定的,一个程序写的是否详细、灵活,是与日积月累的知....
发表于 09-11 15:31 75次 阅读
单片机嵌入式编程需要注意哪一些事项

使用STM32单片机实现手势识别的程序和工程文件免费下载

本文档的主要内容详细介绍的是单片机使用STM32单片机实现手势识别的程序和工程文件免费下载。
发表于 09-11 11:37 71次 阅读
使用STM32单片机实现手势识别的程序和工程文件免费下载

Kineties系列单片机中的FTM模块的详细资料概述

FTM是Kinetis 单片机中重要的一个外设,如果你仅仅认为其仅仅是能够产生PWM波来控制你的小车....
发表于 09-11 11:36 61次 阅读
Kineties系列单片机中的FTM模块的详细资料概述

单片机通信与控制应用编程实例的实例源程序免费下载

本文档的主要内容详细介绍的是单片机通信与控制应用编程实例的实例源程序免费下载包括了:单片机开发板B的....
发表于 09-11 08:00 69次 阅读
单片机通信与控制应用编程实例的实例源程序免费下载

STC12C60S2单片机RS485通讯开发板的资料合集免费下载

本文档的主要内容详细介绍的是STC12C60S2单片机485通讯开发板的资料合集免费下载包括了:48....
发表于 09-10 08:00 74次 阅读
STC12C60S2单片机RS485通讯开发板的资料合集免费下载

SKG09DT高性能的GNSS模块数据手册免费下载

SKG09DT是一款高性能的GNSS一体化解决方案模块,具有超灵敏度、超低功耗、小体积等特点。将射频....
发表于 09-10 08:00 58次 阅读
SKG09DT高性能的GNSS模块数据手册免费下载

FD650B LED驱动控制和键盘扫描专用集成电路的数据手册免费下载

FD650B 对数码管和发光管采用动态扫描驱动,顺序为DIG1至DIG4,当其中一个引脚吸入电流时,....
发表于 09-09 17:15 94次 阅读
FD650B LED驱动控制和键盘扫描专用集成电路的数据手册免费下载

MPU6050与单片机通讯的C语言源码免费下载

本文档的主要内容详细介绍的是MPU6050与单片机通讯的C语言源码免费下载。
发表于 09-09 17:15 67次 阅读
MPU6050与单片机通讯的C语言源码免费下载

单片机初学者的经典教材LED的资料合集免费下载

学习单片机也已经有几年了,藉此机会和大家聊一下我学习过程中的一些经历和想法吧。也感谢一线工人提供了这....
发表于 09-09 08:00 81次 阅读
单片机初学者的经典教材LED的资料合集免费下载

TMP107 具有双向 SMAART 线接口和 EEPROM 的数字温度传感器

TMP107数字输出温度传感器支持以菊花链方式连接共32台设备。每个传感器具有唯一的5位地址,存储于电可擦除可编程只读存储器(EEPROM)中.TMP107能够以0.015625°C的分辨率读取温度,在-20°C至+ 70°C温度范围内的精度达±0.4°C。在具有高精度要求的应用中,TMP107是负温度系数(NTC)和正温度系数(PTC)热敏电阻的理想替代产品。 存储于EEPROM中的5位唯一地址在自动地址分配操作期间确定,并且基于每个传感器相对于SMAART线主机的位置。该器件有多种工作模式可供选择,最大程度提高了自身灵活性,不仅可针对电池操作降低功耗,还能够为实时控制应用提供高更新率。 TMP107是各类工业,仪器仪表,通信和环境应用中扩展温度测量的理想选择.TMP107采用8引脚小外形尺寸集成电路(SOIC)封装,额定工作温度范围为-55°C至+ 125°C。 特性 高精度(未经校准): -20°C至+ 70°C范围内为±0.4° C(最大值) -40°C至+ 100°C范围内为±0.55&...
发表于 09-13 14:42 57次 阅读
TMP107 具有双向 SMAART 线接口和 EEPROM 的数字温度传感器