寄存器中的每一个位都什么用意?

发布者:快乐旅人最新更新时间:2020-09-21 来源: elecfans关键字:寄存器  单片机  赋值 手机看文章 扫描二维码
随时随地手机看文章

这篇文章适合刚刚入门的单片机小白看。


单片机在电学里面,属于很简单的一种器件,外表看,就是一个芯片,长着很多的脚。内部,就是一堆寄存器。不同的单片机,外部表现就是形状和引脚数量和引脚名称可能不一样,内部,就是寄存器名称不一样。


我们要做的,就是写程序控制单片机里面的寄存器,然后通过引脚表现出来完成各种电子产品。


所以,你在看别人写的程序的时候,会经常看到给单片机寄存器赋值的语句。下面就以最简单的控制51单片机引脚高低电平来说明一下。(不要总是存在51单片机已经淘汰的想法,51单片机至今任然是出货量最大的单片机,并且各大公司每年都有新款的51单片机推出,功能越来越强劲,做产品,要选最合适的单片机,而不要总想用牛逼的单片机。)


例如,单片机P1口有8个引脚,分别为P1.0~P1.7,如果想让P1口的8个引脚都输出高电平,是这么写:P1=0XFF;如果想让P1口的8个引脚都输出低电平,是这么写:P1=0X00;如果只让P1.0输出高电平,其他引脚输出低电平,是这么写:P1=0X01......

这些值是怎么来的呢?


计算方法:

一个数,前面以0X开头,标示后面的数是十六进制数。所以首先,我们先要知道十进制和十六进制的转换。


十六进制:0 1 2 3 4 5 6 7 8 9 A  B  C  D  E  F

十进制:  0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

以上十六进制和十进制是对应关系,例如B对应11。

单片机和计算机一样,是以“位”为最小单片机,例如,P1是一个8位的寄存器。P1寄存器的8个位名称分别是:P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0

上面的0X开头的数,是以4个“位”为一个单位进行计算,以8421码进行相加计算,听这里很迷糊吧。举个例子就明白了。


你可以做一个这样的表格:

从上表看出,把寄存器的“位”,从高到低排列,然后以4个为一组,对应的8421码如上图所示。


给寄存器写值,实际上就是给它的每个位写0或者1,例如要使得哪个引脚为高电平,就给对应的位写1;要使得哪一个引脚为低电平,就给对应的位写0。然后把对应为1的8421加起来,以4个位为一组。


例如,我们要让每一个引脚都输出高电平,就是每个位的值都为1,那对应寄存器的高四位,8+4+2+1=15,15对应的是十六进制的F,再看寄存器的低四位,8+4+2+1=15,还是对应F,所以最后的值就是0xFF。


再看,如果让每一个引脚都输出低电平,就是每个位的值都是1,前面说过,只有对应位是1,才把它们的8421加起来,现在都是0,所以都不用加,结果就是0x00。


再看,如果只让P1.0引脚是高电平,其他引脚输出低电平,那么,只有P1.0对应的位是1,其它的位是0,所以,只需要取P1.0上面的1码,所以结果就是0x01。


再看,如果让P1.0、P1.1、P1.7、P1.5输出高电平,其它引脚输出低电平,那么对应的值如下图所示:

我们看寄存器的高四位,取对应1上面的码8+2=10,10对应十六进制的A,再看寄存器的低四位,取对应1上面的码2+1=3,3对应的十六进制还是3,所以结果就是0XA3,这是,你写P1=0XA3,就可以使得引脚该高的高,该低的低了。


不管是51的8位寄存器,还是ARM的32位寄存器,寄存器中的每一个位都有一定的用意,这些用意可以查看单片机的用户手册得知,你只需要按照你的要求,给对应的位写1或者0,然后利用上面的方法得出结果,就可以操作单片机的寄存器了。


你学会了吗?

关键字:寄存器  单片机  赋值 引用地址:寄存器中的每一个位都什么用意?

上一篇:详解单片机程序的运行过程
下一篇:各种版本的ST-LINK仿真器

推荐阅读最新更新时间:2024-11-02 10:39

AVR单片机学习程序(音乐合成)
//AVR单片机学习程序 //名称:音乐合成 //硬件:AVR-ATMEGA16实验板 //修改日志: #include iom16v.h #include macros.h //-------------位拉高-------------------------------------------- #define ADC0_H PORTA|=BIT(PA0) #define ADC1_H PORTA|=BIT(PA1) #define LEDLK_H PORTA|=BIT(PA2) //流水灯选通 #define SEGLK_H PORTA|=BIT(PA3) //数码管段码选通 #define BITLK_H PORTA|
[单片机]
MSP430单片机中断的的优先级顺序定义
430的中断是按照下图1的优先级顺序定义的,有三种中断: 1.系统重置、2.不可屏蔽中断(NMI)、3.可屏蔽中断。 图1.中断优先级 部分具体的中断优先级由高到低为: PORT2_VECTOR (1 * 2u) /* 0xFFE2 Port 2 */ PORT1_VECTOR (4 * 2u) /* 0xFFE8 Port 1 */ TIMERA1_VECTOR (5 * 2u) /* 0xFFEA TImer A CC1-2, TA */ TIMERA0_VECTOR (6 * 2u) /* 0xFFEC TImer A CC0 */ ADC_VECTOR (7 * 2u) /* 0xFFEE ADC */ USART0T
[单片机]
MSP430<font color='red'>单片机</font>中断的的优先级顺序定义
基于单片机的图像型电子警察系统设计
引言 图像型电子警察系统是目前交通监管的有效手段,其外部硬件设备通常包含4个部分:前端感应设备、控制器、抓拍摄像设备和后端传输设备。根据其前端感应设备的不同,图像型电子警察系统可细分为线圈型、雷达型和红外型等。其工作原理:前端感应设备根据特定的检测条件,发现到达(或离开)车辆,并发送感应信息到控制器,控制器判断是否满足抓拍条件,满足则启动相应的抓拍摄像设备(相机、摄像机等)进行抓拍,并将抓拍结果和感应信息通过后端传输设备上传至服务器。 图像型电子警察系统抓拍的图像质量是影响整体系统性能的最重要因素。而图像质量的关键问题在于成像装置的调焦,调焦将直接影响抓拍成像的质量。为获得较为清晰的图像,便于识别机动车,被抓拍的机动车必须处于
[单片机]
基于<font color='red'>单片机</font>的图像型电子警察系统设计
开发工程师的创意变戏法:8位MCU变身32位MCU?! 2013-05-31
目前的MCU市场分为三个部分, 8位、16位和32位内核(4位内核MCU现在已相当少用,故在本次比较中将其忽略)。对于这三个部分中的每一个,其规模大体相同。传统上8位内核占最大的市场份额。根据一些分析人士报告,可能32位内核市场占有率已经超过了8位内核。即使目前尚未超过,时间也不会太长。32位内核市场份额是迄今为止增长最快的。8位内核和16位内核仍在增长,但在速度方面远不如32位内核(8位内核的增长速度仍快于16位内核) 在很长的一段时间内, 很多人相信16位MCU可能会被8位MCU和32位MCU取代。目前的32位MCU器件采用最新技术制造(与8位内核和16为内核相比)。 MCU制造商能够使用这些最新的技术,使得32位MCU体
[单片机]
开发工程师的创意变戏法:8位<font color='red'>MCU</font>变身32位<font color='red'>MCU</font>?! 2013-05-31
51单片机心形灯实现按键控制流水编程
实现按键K1实现从左向右流水,按键K2实现从右往左流水,按键K3实现暂停流水,按键K4实现继续流水 注意:本代码存在小小BUG即按键K1以后可以按键K3和K4控制流水,不能按K2中断K1流水操作来实现K2从右向左流水。按键K2对于K1也同理! 心形灯原理图 编译软件:Keil uVision5 (如有需要可点此链接下载:https://download.csdn.net/download/qq_36931762/11343174) 单片机程序下载软件:STC-ISP (如有需要可点此链接下载:https://download.csdn.net/download/qq_36931762/11343157) 程序代码:
[单片机]
51<font color='red'>单片机</font>心形灯实现按键控制流水编程
单片机成长之路(51基础篇) - 006 在Linux下搭建开发烧写环境
在Linux下没有像keli那样好用的IDE来开发51单片机,开发环境只能自己搭建了。 第一步:安装交叉编译工具 a) 安装SDCC sudo apt-get install sdcc b)测试SDCC是否可用,这是个网上找的简单的流水灯代码 test.c, 用来测试 1 #include 8051.h 2 3 #define uint unsigned int 4 #define uchar unsigned char 5 uchar tab = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; 6 7 void Delay(uint xms){ 8 uin
[单片机]
<font color='red'>单片机</font>成长之路(51基础篇) - 006 在Linux下搭建开发烧写环境
Mouser现货供应Freescale Kinetis Cortex™-M4 MCU产品
2012年1月10日 –半导体与电子元器件业顶尖工程设计资源与全球分销商Mouser Electronics宣布已为飞思卡尔半导体公司的32位Kinetis Cortex™-M4微控制器系列产品备货。 飞思卡尔是最先引进生产M4产品的公司之一。 ARM® Cortex™-M4处理器是由ARM最新研发的嵌入式处理器,针对数字信号控制市场,因而要求处理器高效、易于使用的控制与信号处理功能。Cortex-M4系列产品同时具有高性能、低功耗和低成本等特点,是电机控制、汽车、电源管理、嵌入式音频和工业自动化市场的理想选择。 飞思卡尔半导体的32位Kinetis微控制器在ARM® Cortex™-M4 MCU系列产品中具有业内最佳的可扩展
[单片机]
热释人体红外智能温控风扇及照明控制系统
  O 引言   目前绝大多数楼宇风扇和电灯在使用时都是由人员手动操作,当天气闷热时由楼宇内的人员手动开启风扇和选调风速,当灯光不足或在上楼梯时手动开启电灯,常常会由于人员的疏忽在人离开之后忘记关闭设备而导致用电的浪费。在本系统设计中,考虑采用单片机为控制器,以热释人体红外和温度传感系统来检测室内有无人员以及室内温度,设计一个智能温控风扇及照明控制系统,可以实时调节和控制室内的风扇和灯光的照明,从而达到智能控制和节能的目的。   1 系统总体设计   系统方框图如图l所示。通过51单片机和热释人体红外来检测区域内是否有人,如有人再检测其温度和光度是否需开启风扇和灯光并且实现该调在哪个档位,并由指示灯显示档位。用数码管显示室温
[工业控制]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved