设计与开发

51单片机元件 51单片机寄存器功能一览表

小编 2024-10-05 设计与开发 23 0

51单片机寄存器功能一览表

21个特殊功能寄存器(52系列是26个)不连续地分布在128个字节的SFR存储空间中,地址空间为80H-FFH,在这片SFR空间中,包含有128个位地址空间,地址也是80H-FFH,但只有83个有效位地址,可对11个特殊功能寄存器的某些位作位寻址操作(这里介绍一个技巧:其地址能被8整除的都可以位寻址)。

在51单片机内部有一个CPU用来运算、控制,有四个并行I/O口,分别是P0、P1、P2、P3,有ROM,用来存放程序,有RAM,用来存放中间结果,此外还有定时/计数器,串行I/O口,中断系统,以及一个内部的时钟电路。在单片机中有一些独立的存储单元是用来控制这些器件的,被称之为特殊功能寄存器(SFR)。这样的特殊功能寄存器51单片机共有21个并且都是可寻址的列表如下(其中带*号的为52系列所增加的特殊功能寄存器):

分别说明如下:

1、ACC---是累加器,通常用A表示

这是个什么东西,可不能从名字上理解,它是一个寄存器,而不是一个做加法的东西,为什么给它这么一个名字呢?或许是因为在运算器做运算时其中一个数一定是在ACC中的缘故吧。它的名字特殊,身份也特殊,稍后在中篇中我们将学到指令,可以发现,所有的运算类指令都离不开它。自身带有全零标志Z,若A=0则Z=1;若A≠0则z=0。该标志常用作程序分枝转移的判断条件。

2、B--一个寄存器

在做乘、除法时放乘数或除数,不做乘除法时,随你怎么用。

3、PSW-----程序状态字。

这是一个很重要的东西,里面放了CPU工作时的很多状态,借此,我们可以了解CPU的当前状态,并作出相应的处理。它的各位功能请看下表:

下面我们逐一介绍各位的用途

CY:进位标志。

8051中的运算器是一种8位的运算器,我们知道,8位运算器只能表示到0-255,如果做加法的话,两数相加可能会超过255,这样最高位就会丢失,造成运算的错误,怎么办?最高位就进到这里来。这样就没事了。有进、借位,CY=1;无进、借位,CY=0

例:78H+97H(01111000+10010111)

AC:辅助进、借位(高半字节与低半字节间的进、借位)。

例:57H+3AH(01010111+00111010)

F0:用户标志位

由用户(编程人员)决定什么时候用,什么时候不用。

RS1、RS0:工作寄存器组选择位

通过修改PSW中的RS1、RS0两位的状态,就能任选一个工作寄存器区。这个特点提高了MCS-51现场保护和现场恢复的速度。对于提高CPU的工作效率和响应中断的速度是很有利的。若在一个实际的应用系统中,不需要四组工作寄存器,那么这个区域中多余单元可以作为一般的数据缓冲器使用。

0V:溢出标志位

运算结果按补码运算理解。有溢出,OV=1;无溢出,OV=0。什么是溢出我们后面的章节会讲到。

P:奇偶校验位

它用来表示ALU运算结果中二进制数位“1”的个数的奇偶性。若为奇数,则P=1,否则为0。运算结果有奇数个1,P=1;运算结果有偶数个1,P=0。

例:某运算结果是78H(01111000),显然1的个数为偶数,所以P=0。

4、DPTR(DPH、DPL)--------数据指针

可以用它来访问外部数据存储器中的任一单元,如果不用,也可以作为通用寄存器来用,由我们自已决定如何使用。分成DPL(低8位)和DPH(高8位)两个寄存器。用来存放16位地址值,以便用间接寻址或变址寻址的方式对片外数据RAM或程序存储器作64K字节范围内的数据操作。

5、P0、P1、P2、P3--------输入输出口(I/O)寄存器

这个我们已经知道,是四个并行输入/输出口(I/O)的寄存器。它里面的内容对应着管脚的输出。

6、IE-----中断充许寄存器

可按位寻址,地址:A8H

EA (IE.7):EA=0时,所有中断禁止(即不产生中断);EA=1时,各中断的产生由个别的允许位决定

- (IE.6):保留

ET2(IE.5):定时2溢出中断允许(8052用)

ES (IE.4):串行口中断允许(ES=1允许,ES=0禁止)

ET1(IE.3):定时1中断允许

EX1(IE.2):外中断INT1中断允许

ET0(IE.1):定时器0中断允许

EX0(IE.0):外部中断INT0的中断允许

7、IP-----中断优先级控制寄存器

可按位寻址,地址位B8H

- (IP.7):保留

- (IP.6):保留

PT2(IP.5):定时2中断优先(8052用)

PS (IP.4):串行口中断优先

PT1(IP.3):定时1中断优先

PX1(IP.2):外中断INT1中断优先

PT0(IP.1):定时器0中断优先

PX0(IP.0):外部中断INT0的中断优先

8、TMOD-----定时器控制寄存器

不按位寻址,地址89H

GATE :定时操作开关控制位,当GATE=1时,INT0或INT1引脚为高电平,同时TCON中的TR0或TR1控制位为1时,计时/计数器0或1才开始工作。若GATE=0,则只要将TR0或TR1控制位设为1,计时/计数器0或1就开始工作。

C/T :定时器或计数器功能的选择位。C/T=1为计数器,通过外部引脚T0或T1输入计数脉冲。C/T=0时为定时器,由内部系统时钟提供计时工作脉冲。

M1 、M0:T0、T1工作模式选择位

9、TCON-----定时器控制寄存器

可按位寻址,地址位88H

TF1:定时器T1溢出标志,可由程序查询和清零,TF1也是中断请求源,当CPU响应T1中断时由硬件清零。

TF0:定时器T0溢出标志,可由程序查询和清零,TF0也是中断请求源,当CPU响应T0中断时由硬件清零。

TR1:T1充许计数控制位,为1时充许T1计数。

TR0:T0充许计数控制位,为1时充许T0计数。

IE1:外部中断1请示源(INT1,P3.3)标志。IE1=1,外部中断1正在向CPU请求中断,当CPU响应该中断时由硬件清“0”IE1(边沿触发方式)。

IT1:外部中断源1触发方式控制位。IT1=0,外部中断1程控为电平触发方式,当INT1(P3.3)输入低电平时,置位IE1。

IE0:外部中断0请示源(INT0,P3.2)标志。IE0=1,外部中断1正在向CPU请求中断,当CPU响应该中断时由硬件清“0”IE0(边沿触发方式)。

IT0:外部中断源0触发方式控制位。IT0=0,外部中断1程控为电平触发方式,当INT0(P3.2)输入低电平时,置位IE0。

10、SCON----串行通信控制寄存器

它是一个可寻址的专用寄存器,用于串行数据的通信控制,单元地址是98H,其结构格式如下:

(1)SM0、SM1:串行口工作方式控制位。

SM0,SM1 工作方式

00 方式0-波特率由振荡器频率所定:振荡器频率/12

01 方式1-波特率由定时器T1或T2的溢出率和SMOD所定:2SMOD ×(T1溢出率)/32

10 方式2-波特率由振荡器频率和SMOD所定:2SMOD ×振荡器频率/64

11 方式3-波特率由定时器T1或T2的溢出率和SMOD所定:2SMOD ×(T1溢出率)/32

(2)SM2:多机通信控制位。< br> 多机通信是工作于方式2和方式3,SM2位主要用于方式2和方式3。接收状态,当串行口工作于方式2或3,以及SM2=1时,只有当接收到第9位数据(RB8)为1时,才把接收到的前8位数据送入SBUF,且置位RI发出中断申请,否则会将接受到的数据放弃。当SM2=0时,就不管第位数据是0还是1,都难得数据送入SBUF,并发出中断申请。

工作于方式0时,SM2必须为0。

(3)REN:允许接收位。< br> REN用于控制数据接收的允许和禁止,REN=1时,允许接收,REN=0时,禁止接收。

(4)TB8:发送接收数据位8。< br> 在方式2和方式3中,TB8是要发送的——即第9位数据位。在多机通信中同样亦要传输这一位,并且它代表传输的地址还是数据,TB8=0为数据,TB8=1时为地址。

(5)RB8:接收数据位8。

在方式2和方式3中,RB8存放接收到的第9位数据,用以识别接收到的数据特征。

(6)TI:发送中断标志位。

可寻址标志位。方式0时,发送完第8位数据后,由硬件置位,其它方式下,在发送或停止位之前由硬件置位,因此,TI=1表示帧发送结束,TI可由软件清“0”。

(7)RI:接收中断标志位。

可寻址标志位。接收完第8位数据后,该位由硬件置位,在其他工作方式下,该位由硬件置位,RI=1表示帧接收完成。

11、PCON-----电源管理寄存器

PCON主要是为CHMOS型单片机的电源控制而设置的专用寄存器,单元地址是87H,其结构格式如下:

在CHMOS型单片机中,除SMOD位外,其他位均为虚设的,SMOD是串行口波特率倍增位,当SMOD=1时,串行口波特率加倍。系统复位默认为SMOD=0。

12、T2CON-----T2状态控制寄存器

TF2:T2溢出中断标志。TF2必须由用户程序清“0”。当T2作为串口波特率发生器时,TF2不会被置“1”。

EXF2:定时器T2外部中断标志。EXEN2为1时,当T2EX(P1.1)发生负跳变时置1中断标志DXF2,EXF2必须由用户程序清“0”。

TCLK:串行接口的发送时钟选择标志。TCLK=1时,T2工作于波特率发生器方式。

RCLK:串行接口的接收时钟选择标志位。RCLK=1时,T2工作于波特率发生器方式。

EXEN2:T2的外部中断充许标志。

C/T2:外部计数器/定时器选择位。C/T2=1时,T2为外部事件计数器,计数脉冲来自T2(P1.0);C/T2=0时,T2为定时器,振荡脉冲的十二分频信号作为计数信号。

TR2:T2计数/定时控制位。TR1为1时充许计数,为0时禁止计数。

CP/RL2:捕捉和常数自动再装入方式选择位。为1时工作于捕捉方式,为0时T2工作于常数自动再装入方式。当TCLK或RCLK为1时,CP/RL2被忽略,T2总是工作于常数自动再装入方式。

下面对T2CON的D0、D2、D4、D5几位主要控制T2的工作方式,下面对这几位的组合关系进行

总结

单片机实例分享,自制电感和电容测量仪

电子爱好者进行制作时经常需要绕制电感,而一般的数字万用表通常又没有电感测量挡,所以无法测量绕好的电感的电感量。本文介绍一种用单片机制作的电感和电容测量仪(见图23.1),可以有效地解决这一问题。

测量原理

本测量仪采用谐振法测量电感和电容,其方法是用谐振回路的谐振特性来进行测量,其测量原理可用如图23.2所示的电路进行说明。

图23.1 电感和电容测量仪

测量电感Lx时,配用标准电容C1,用Lx和C1组成谐振回路,测量出回路的谐振频率f即可计算出Lx的电感量;测量电容Cx时,配用标准电感L1,用L1和Cx组成谐振回路,测量出回路的谐振频率f即可计算出Cx的电容量。

上述测量方法也有一个缺陷:当Lx或Cx很小时,谐振频率f会很大,测量比较困难,为此我们可以采用如图23.2所示的改进型电路,分别用L1和C1作“垫底”,降低了测量时的谐振频率。

假设由 L1和C1 组成的谐振回路谐振频率为f1,测量Lx时,Lx和L1串联,测得(L1+Lx)和C1组成的谐振回路谐振频率为f2,则根据下式可计算出Lx的电感量:

Lx=[(f1/f2)2-1]L1

测量Cx时,Cx和C1并联,测得L1和(C1+Cx)组成的谐振回路谐振频率为f2,则可根据下式可计算出Cx的电容量:

Cx=[(f1/f2)2-1]C1

硬件电路

测量仪电路如图23.2所示。电路由LC振荡电路、单片机电路、显示电路等部分组成。

CD4069是6非门CMOS集成电路,其中非门F1、F2和C2、R1、R2等组成两级放大电路。第一级放大电路中,R2是负反馈偏置电阻,将F1输出端的直流电位钳制在VCC/2,使F1工作在线性放大区域。第二级放大电路没有加反馈电阻,直接用第一级放大电路输出的直流电压作偏置电压,以提高放大器的增益。放大电路通过正反馈回路R3、C3与L1、C1谐振电路一起组成正弦波振荡电路,非门F3用于信号整形,把F2输出的正弦波转换成矩形波输入到单片机ATmega8的T1脚,由单片机进行脉冲计数,从而测出LC回路的谐振频率。通过单片机对数据进行计算处理后,由LCD1602液晶屏显示测量结果。

图23.2 测量仪电路原理图

S1为测量转换开关,当S1转向L时测量电感,转向C时测量电容。S2是归0按钮。

LCD1602采用4线制传递数据,只使用了数据端口D4~D7。

当开关S1在电容挡但没有测量电容Cx,或在电感挡并且用短路线代替Lx时,电路的振荡频率约为503kHz,我们把这个频率称为基准频率。测试电容或电感时,被测试元件的电容量或电感量越大,对应的振荡频率越低。当被测电容的电容量为10μF(或电感的电感量为1H)时,对应的振荡频率约为5.03kHz。

电阻R5的阻值控制LCD1602液晶屏的对比度,R5阻值越小,液晶屏对比度越大。LED和LED+是液晶屏背光发光二极管的供电端口。

程序设计

测量仪的电路比较简单,而功能的实现更重要地依赖于程序的设计。程序的设计和优化需要花费更多的精力。

程序由频率测量、测试数据的计算处理、LCD1602液晶屏驱动显示三大部分组成。频率测量部分用定时器T/C1作脉冲计数,定时器T/C2产生测量脉冲频率的闸门时间。这里闸门时间选择0.5s,定时器T/C1累计的脉冲数乘以2即得脉冲频率。闸门时间选择0.5s是为了提高LCD1602显示数据刷新速度,如果闸门时间选1s,则刷新速度偏慢。

测试数据的计算处理部分主要利用前面给的两个公式计算出测量结果,并经过数据预处理后,输出到显示电路显示读数。

LCD1602的数据传输采用4线制,8位数据分两次传送,先传高4位,后传低4位,因为传递的数据量不大,所以你感觉不到4线制速度传输和8线制有什么区别。

安装调试

制作所需元器件的清单见表23.1。

C1、L1要选用精度比较高的元件,有条件的可用万能电桥进行筛选。L1如买不到成品电感也可自制,磁芯用Φ8×10的工字磁芯,用Φ0.42的漆包线绕55.5圈。

安装前先将程序的目标文件写入单片机ATmega8L,熔丝位的设置如图23.3所示。

图23.3 熔丝位的设置

电路板的装配图如图23.4所示。LCD1602的接口排座焊接在电路板上,排针焊接在LCD1602模块上如图23.5所示。

表23.1 元器件清单

图23.4 电路板装配图

安装完成后,用一根USB线将电源接口连到电脑USB插座上,接通测量仪的电源,将S1置于电容挡,测量端不接电容,这时LCD1602第二行显示的是基准频率f1,如图23.6所示。基准频率如果超出503kHz±5kHz的范围,说明L1、C1中有元件误差较大,需进行相应的调整。如果L1是自绕的,出现误差的可能性相对较大,可适当增减其圈数,直至满足要求。

接通电源后,以电容挡为例,虽然我们在测试端并没有接任何电容,但LCD1602第一行显示的电容量读数并不为零,如图23.6所示,我们称其为初始值,这是由基准频率略有漂移造成的。这时如果测量小容量的电容,误差就比较大,当初始值后有“-”号时,测量值是实际值减去了初始值,即读数比实际容量小了。反之,测量值是实际值加上了初始值,即读数比实际容量大了。

对于上述问题,我在程序中也作了考虑,只要在不接测试电容的情况下按一下S2就可以归0了,其实质就是基准频率作了修正,并把修正结果存入EEPROM,掉电后不会丢失。归0后的显示数据如图23.7所示。

电容挡归0后,电感挡就不需要归0了,因为电容挡归0就相当于在电感挡测试端接了一个短路线,等同于电感挡归0(在S1置于电感挡,S2归0时其测试端必须接短路线),分析一下电路就明白了。

图23.5 排针的焊接

如果使用中发现测量误差较大,可通过程序进行修正,具体做法如下:找一个精度高的1000pF电容进行测量,假设读数为950pF,则计算1000/950≈1.05,我们将其称为修正系数,将计算公式Cx=[(f1/f2)2-1]C1改为Cx=[(f1/f2)2-1]C1×1.05,用这个公式计算就能减小测量误差了。为了简化程序中的计算,我采取把程序中的语句“unsigned int C1=1000”改为“unsigned int C1=1050”的方法,效果是一样的。

再找一个精度高的100μH电感进行测量,假设读数为94,则计算100/94≈1.06,把程序中的语句“unsigned char L1=100”改为“unsigned char L1=106”,同样也能减小测量误差。

把重新编译好的目标文件烧写到ATmega8L,再进行测量,精度就提高了。

用本测试仪测量电容的实例如图23.8所示(测量对象分别为240pF云母电容和0.47μF安规电容),测量电感的实例如图23.9所示(测量对象分别为10μH电感和电子节能灯的电感线圈)。

当测量值超过量程时,读数显示“OVE”,测电感时电感测试端不接电感(相当于电感量为无穷大),读数也显示“OVE”。

图23.6 基准频率的测量结果

图23.7 按S2归0后的显示数据

使用这个电感和电容测量仪时有一个问题需要注意,即电感或电容的参数会受测试频率的影响。例如,具有磁芯的电感,由于受磁芯的频率特性影响,不同的测试频率,其结果可能有所不同,用这个测量仪测的数据和用信号源频率为1000Hz的万能电桥测的数据可能会不一致。笔者认为,用更接近实际工作频率的测试频率可以得到比较符合实际的测试结果。由于本测试仪工作频率比较高,不适合测量电解电容器。笔者测量一个10μF的电解电容器,对应测试频率为6.5kHz,读数为6.26μF,误差很大。

图23.8 电容的测量结果

图23.9 电感的测量结果

相关问答

电子万年历里面都有什么电子 元件 ?

应该有很多不同的方案,元件都不一样!用51单片机+DS1302时钟模块+数码管,就可以做成万年历。还有专用芯片等……应该有很多不同的方案,元件都不一样!用51...

51单片机 温度测量选哪个元器件?

在51单片机温度测量中,最常用的元器件是温度传感器。其中,最经济实用的是NTC热敏电阻,它可以通过测量电阻值来反映温度变化。此外,还有PT100、热电偶等传感器...

51单片机 开关叫什么?

答51单片机开关也可以叫元器件名称蜂鸣器。一般型104无极电容30p无极电容10uF有极电容1uF有极电容发光二极管USB接口串口下载公头单排针单排座...

时钟电路设计需要哪些 元件 ?_作业帮

[最佳回答]方案的论证与选择1.1方案论证1.1.1采用MCS—51系列单片机和压力传感器来完成压力传感器是鸡蛋闹钟必须用到的传感器,它具有结构简单、体积小、重...

proteus 元件 库里面,都有那些系列的 单片机 ?

MCS51全系列,PIC12/16系列,AVR的ATMEGA8/16/32系列,ARM的2104、2105、2106、2114、2124;MOTO的68HC系列等。MCS51全系列,PIC12/16...

51单片机 在protues中输入什么可以找到?在protues中找不到的该如何处理?

在Proteus输入“AT89C51”,就可以找到了,Proteus对于51单片机的支持,就限于AT89CXX系列的,如果你要住址别的,比如SST的或者STC公司的,Proteus里没有,不过...

单片机 需要的元器件去哪里买?

单片机是一种可编程的器件,其带有片上资源功能强大,但是单片机本身并不是一个可以直接面对终端用户的产品,需要通过和不同的外设电路、芯片搭配可以实现各种不...

51单片机 震荡电路用什么晶振,什么电容,复位用什么电容,电阻?...

只是晶振的频率你要注意一下,不要超过单片机手册中的最大频率。用22pf或者30pf的陶瓷电容,33pf也可以,这个影响不大。复位电路用10uf的电解电容,电阻用普通的...

什么网站可以免费下载技术类的电子书,比如 51单片机 和电子元器件和电路板维修书籍?

电子方面的学习资料网上比较多,如果在线阅读学习的话还是比较方便的,但是如果想要下载就比较麻烦了,因为现在大多数网站提供的学习资料都是收费的,比如百度文...

mcs- 51单片机 的特点及应用?

MCS-51单片机是美国INTE公司于1980年推出的产品,与MCS-48单片机相比,它的结构更先进,功能更强,在原来的基础上增加了更多的电路单元和指令,指令数达111条,MC...

猜你喜欢