转自:http://baike.baidu.com/item/%E8%81%94%E5%90%88%E4%BD%93?fr=aladdin

联合体在单片机中的应用
单片机中经常会遇见分离高低字节的操作,比如进行计时中断复位操作时往往会进行
(65535-200)/256,(65535-200)%256这样的操作,而一个除法消耗四个机器周期,取余也需要进行一系列复杂的运算,如果在短时间内需要进行很多次这样的运算无疑会给程序带来巨大的负担。其实进行这些操作的时候我们需要的仅仅是高低字节的数据分离而已,这样利用联合体我们很容易降低这部分开销。
代码:
union chufa{
int n; //n中存放要进行分离高低字节的数据
char a[2]; //在keil c中一个整形占两个字节,char占一个字节,所以n 与 数组a占的字节数相同
}test;

test.n=65535-200; //进行完这句后就一切ok了,下面通过访问test中数 组a的数据来取出高低字节的数据
TH1=test.a[0]; //test.a[0]中存储的是高位数据,这是由于keil的特性(此处应该有误,联合体内数据是按地址对齐的。具体是高位数据还是低位数据要看平台的大小端模式,51是大端,stm32默认是小端),如果其他编译器还请自测
TL1=test.a[1]; //test.a[1]中储存了test.n的低位数据
!that’s good,仅仅用了一条减法指令就达到了除法、取余的操作,在进行高频率定时时尤为有用。

联合体在单片机中的应用相关推荐

  1. STM32单片机中WIFI模块数据传输问题(float->u32->u8/u8->u32->float)

    STM32单片机中WIFI模块数据传输问题(float->u32->u8/u8->u32->float)   最近在做毕业设计,在做wifi数据传输与接收时,涉及到了STM32 ...

  2. STM32为何能在众多单片机中脱颖而出?

    现在STM32资料教程如此丰富,但还是很多人学不会- 假如STM32像10年前的NXP单片机资料一样少,估计学不会的人会更多. 大家好,我是无际,一个踩坑单片机开发10年的老油条. 这些年,我用过很多 ...

  3. 单片机中存储器扩展位地址线怎么算_小白学单片机 :AT89S51单片机基本硬件结构认识(2)...

    AT89S51单片机存储器的空间配置及功能结构 AT89S51单片机的存储器在物理结构上可以分为4个不同的存储空间:(1)内部程序存储器:(2)片内数据存储器:(3)片外数据存储器(最大可扩展到64K ...

  4. 单片机中的ROM,RAM和FLASH的作用

    本文部分参考自:http://blog.sina.com.cn/s/blog_98ca54fc01017y4t.html 并在此基础上进行整理,添加了关于flash的问题. 之前从较为抽象的角度介绍了 ...

  5. 51单片机中的定时器

    文章目录 1 51单片机中的定时器介绍 1.1 定时器的初步认识 1.2 定时器的寄存器 1.3 使用定时器的方法 1.4 定时时间的计算 2 定时器模式1 2.1 定时器模式1原理分析 2.2 使用 ...

  6. 单片机中灯泡显示miss_单片机实例分享,如何设计八路抢答器

    单片机作为可编程器件,简化了电路的设计.方便了逻辑设计,从此再也不用使用一大堆电路做硬件逻辑了.拆开任何一件功能稍微复杂一点电子产品,里边都可以看到单片机的身影.学会单片机对找工作也很有利,而且待遇还 ...

  7. 单片机中如何将BCD码拆开_单片机二进制BCD码转换实验程序流程图

    二进制BCD码转换 一.实验目的 1.掌握简单的数值转换算法 2.基本了解数值的各种表达方法 二.实验说明 单片机中的数值有各种表达方式,这是单片机的基础.掌握各种数制之间的转换是一种基本功.我们将给 ...

  8. html5控制单片机,10.2 单片机中 PWM 的原理与控制程序

    PWM 在单片机中的应用是非常广泛的,它的基本原理很简单,但往往应用于不同场合上意义也不完全一样,这里我先把基本概念和基本原理给大家介绍一下,后边遇到用的时候起码知道是个什么东西. PWM 是 Pul ...

  9. 51单片机中使用ucos ii的优缺点(好文)

    摘要:近年来,在单片机系统中嵌入操作系统已经成为人们越来越关心的一个话题.本文通过对一种源码公开的嵌入式实时操作系统ucos ii的分析,以51系列单片机为例,阐述了在单片机中使用该嵌入式操作系统的优 ...

最新文章

  1. NLP深度学习:近期趋势概述
  2. JFreeChart入门
  3. Android关于AndroidManifest.xml详细分析
  4. 2021-03-15 final value theorem 终值定理
  5. Python 中最黑魔法、最难懂的概念
  6. makefile总结(转载学习)
  7. leetcode 659. 分割数组为连续子序列(贪心算法)
  8. 【JS】最简单的域名防红方法,QQ/微信打开网站提示浏览器打开
  9. 哈尔滨计算机专业技术学院哪所比较好,各位老司机,求教!哈尔滨计算机专业哪所有名,计算机专业排名好不好都来说说?...
  10. 练习算法之前必须了解的多件事
  11. 俄罗斯方块控制台程序C++
  12. 大坑:用SQLyog连mysql的部分操作不能同步到从库
  13. [外挂1] MFC 鼠标位置设置
  14. wordpress 伪静态nginx设置
  15. 图像局部特征(二十)--Textons
  16. 智引IT综合管理解决方案
  17. 广西民族博物馆真好玩
  18. Python入门:Dataframe的索引模式
  19. 不要卡巴斯基!(卡巴斯基授权许可文件出错,其它软件受连累)
  20. zigbee CC2530 系列教程 9 睡眠唤醒实验

热门文章

  1. Think Python - Chapter 12 Tuples
  2. javascript字符串截取
  3. 实例——在编程过程中进行单元测试
  4. Gnuplot使用x11终端自动注销问题
  5. Pat乙级 1040 有几个PAT
  6. (转)ubuntu 文件系统
  7. 原生js监听input值发生变化
  8. Python第一天:你必须要知道的Python擅长领域以及各种重点学习框架(包含Python在世界上...
  9. 【Python基础】字符编码ASCII-GBK-Unicode-UTF-8之间的关系
  10. Spring bean依赖注入、bean的装配及相关注解