简介

在一般的应用中都会有控制要求,比如当采集的土壤湿度过低时开启水泵灌溉,这样一个简单的外设控制就实现了。水泵就是外设,而控制它的就是土壤湿度。这种模式是我们经常使用的代码编写起来也很简单,然而如何实现手动开启或者关闭水泵?

思路

编写这种逻辑的基本思路就是需要一个标志位来表示手动和自动的模式,1表示手动模式,0表示自动模式。外设的控制也需要一个标志位1表示开启0表示关闭。

详细代码

方法一

此方法就是一一发送一个数据控制一个外设

//此版本是在STM32下编写的
u8 HAND_IT; //手动与自动模式标志位
u8 WATER_IT; //水泵控制标志位int main(){while(1){if(HAND_IT){//进入手动模式if(WATER_IT){//打开水泵}else{//关闭水泵}}else{//自动模式下}}
}

方法二

方法二发送数据不需要与方法一样不需要发送那么多数据,只需要发送一个数据就可以控制外设。

/*PERI_STATUS
*0000 0000
*7:手动和自动控制
*6-1:保留
*0:水泵手动控制标志位
*/
u8 PERI_STATUS;//外设控制标志位int main(){while(1){if((PERI_STATUS&0x80)==0x80){//手动控制if((PERI_STATUS&0x01)==0x01){//水泵打开}else if((PERI_STATUS&0x01)==0x00){//水泵关闭}}else{//自动控制}}
}

优缺点

方法一 传输的数据量大,需要的空间大浪费严重。
方法二 传输的数据很少,可以降低数据处理的时间和内存空间。

代码分析

方法一

方法一的代码就和思路一样的就是按照思路中规中矩没有可以分析的。

方法二

首先需要理解两个位运算符:
1)& 运行符 有0则为0
2)| 运算符 有1则为1
了解这两个运算符号后,开始分析代码

/*PERI_STATUS
*0000 0000
*7:手动和自动控制
*6-1:保留
*0:水泵手动控制标志位
u8 就是c语言中的char类型 也就是1个字节 8Byte 可以控制7个外设
需要控制外设越多则可以定义为u16(short)、u32(int)类型
u8 PERI_STATUS;//外设控制标志位
*/

PERI_STATUS=0x80的时候进入手动模式,也是就最高位控制手动和自动模式的切换。

PERI_STATUS&0x80 由于由于&是有0则为0,所以就可以精切判断第7位是否为1。
PERI_STATUS=0x01的时候水泵打开,第0位控制水泵的状态。
PERI_STATUS&0x01 就是精确判断第0位的数据是否为1。

在单片机中如何实现手动/自动控制外设相关推荐

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

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

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

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

  3. STM32为何在诸多的单片机中脱颖而出?

    01  前言 在STM32之前,都是老大头51,带着它的"小弟们" MSP430.AVR.PIC在单片机界呼风唤雨. 那个时候,市场上遍布8位机,大学教材用51入门,个人.企业学单 ...

  4. 单片机中存储器扩展位地址线怎么算_51单片机CPU结构各部件的原理详细分析

    一. 51单片机串行口工作原理 MCS-51系列单片机片内有一个串行I/O端口,通过引脚RXD(P3.0)和TXD(P3.1)可与外设电路进行全双工的串行异步通信. 1.串行端口的基本特点 8031单 ...

  5. 其实单片机中的串口和中断问题就像设定使碗接到10滴水就溢出

    其实单片机中的串口和中断问题就像设定使碗接到10滴水就溢出 ///插播一条:我自己在今年年初录制了一套还比较系统的入门单片机教程,想要的同学找我拿就行了免費的,私信我就可以哦~点我头像黑色字体加我地球 ...

  6. I2C知识大全系列三 —— I2C驱动之单片机中的I2C

    两种方式 单片机中的I2C驱动有两种方式.一种方式是用专用硬件I2C控制器实现,这种方式简单易行,品质也容易控制,只是会增加硬件成本方面的压力.另一种方式是用纯软件方式实现,这种方式几乎无硬件成本方面 ...

  7. STM32为何能在诸多的单片机中脱颖而出?

    01  前言 在STM32之前,都是老大头51,带着它的"小弟们" MSP430.AVR.PIC在单片机界呼风唤雨. 那个时候,市场上遍布8位机,大学教材用51入门,个人.企业学单 ...

  8. 对单片机中时钟的理解:

    1.概述 简单的说,时钟是单片机的脉搏,是单片机的驱动源,使用任何一个外设都必须打开相应的时钟.这样的好处是,如果不使用一个外设的时候,就把它的时钟关掉,从而可以降低系统的功耗,达到节能,实现低功耗的 ...

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

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

最新文章

  1. AI一分钟 | 传阿里百度京东6月回归A股;汽车合资股比限制将取消,特斯拉或成最大赢家...
  2. 话里话外:转帖:制约中小企业发展三大管理问题与SaaS的成功要素
  3. 1151压力变送器型号_日本进口横河EJA530E压力变送器型号解读!
  4. 解决myeclipse中新导入的工程旁出现红色感叹号的问题
  5. [ASP]没有权限: 'CreateObject'
  6. php7 mcrypt模块_如何在php7.2/php7.3中安装mcrypt扩展?
  7. 2.图像作为函数 | 图像的量化、大小、类型、位置以及Matlab使用_4
  8. php跳转到safari打开,新手教程: 如何重新打开关闭的Safari标签
  9. Win10下python不同版本同时安装并解决pip共存问题
  10. mysql 复杂类型_MySQL 复杂数据类型之JSON数据
  11. Atitit 开发效率大法 v0 t025.docx Atitit 提升开发效率几大策略 目录 1. 提升效率三原则 3 1.1. 更少的代码量简化 3 1.2. 优化配置减少等待 3 1.3.
  12. 一套键鼠控制多台电脑的使用方法,快收藏
  13. Http——Post上传文件并传递其他参数信息
  14. ignite java,Ignite 之计算运用的 Hello world
  15. LEACH Algorithm
  16. CTA认证system_process定位联网未明示问题
  17. android 和 js 之间交互的封装
  18. 解决listview条目错乱问题
  19. 亲测Linux服务器安装JKD操作流程
  20. 64位系统和32位系统的区别

热门文章

  1. Matcher 详解
  2. Keil 5中折叠代码
  3. 爬虫学习(2):贴吧之骑马与砍杀2,愿它长寿?
  4. img图片(高效压缩)免费提供 · 在线压缩 - 工具篇
  5. 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java网约车在线系统hi3q0
  6. 赵丽颖冯绍峰官宣离婚,最扎心的其实是这帮人...
  7. 【微信】微信测试公众号申请与使用
  8. macbook-12-2015款 安装win10系统 自用 实践笔记
  9. yii2 定时任务 crontab
  10. mysql objectid_【Mongodb】_id和ObjectId详解!