80C51单片机(精选)
单片机原理及应用第6章80C51单片机的串行口

单片机原理及应用第6章80C51单片机的串行口80C51单片机是一种基于哈佛架构的8位单片机,具有强大的串行口功能。
串行口是一种通信接口,可以通过单根线传输数据。
本章将介绍80C51单片机的串行口原理及其应用。
一、80C51单片机的串行口原理80C51单片机的串行口包含两个寄存器,分别是SBUF(串行缓冲器)和SCON(串行控制寄存器)。
SBUF寄存器用来存储待发送或接收到的数据,SCON寄存器用来配置和控制串行口的工作模式。
80C51单片机的串行口有两种工作模式:串行异步通信模式和串行同步通信模式。
1.串行异步通信模式串行异步通信是指通信双方的时钟频率不同步,通信的数据按照字符为单位进行传输,字符之间有起始位、数据位、校验位和停止位组成。
80C51单片机的串行口支持标准的RS-232通信协议和非标准通信协议。
在串行异步通信模式下,SCON寄存器需要配置为相应的工作模式。
首先,需要选择串行口的工作模式。
80C51单片机支持第9位,即扩展模式,可以用来检测通信错误。
其次,需要设置波特率。
波特率是指数据每秒传输的位数,用波特率发生器(Baud Rate Generator,BRGR)来控制。
然后,需要设置起始位、数据位和停止位的配置,包括数据长度(5位、6位、7位或8位)、停止位的个数(1位或2位)。
在发送数据时,将待发送的数据通过MOV指令传送到SBUF寄存器,单片机会自动将数据发送出去。
在接收数据时,需要检测RI(接收中断)标志位,如果RI为1,表示接收到数据,可以通过MOV指令将接收到的数据读取到用户定义的变量中。
2.串行同步通信模式串行同步通信是指通信双方的时钟频率同步,在数据传输时需要时钟信号同步。
80C51单片机的串行同步通信支持SPI(串行外设接口)和I2C(串行总线接口)两种协议。
在串行同步通信模式下,SCON寄存器需要配置为相应的工作模式。
首先,需要选择串行口的工作模式。
80C51单片机支持主从模式,可以作为主设备发送数据,也可以作为从设备接收数据。
80c51单片机定时器计数器工作原理

80c51单片机定时器计数器工作原理80C51单片机是一种常用的微控制器,其定时器/计数器(Timer/Counter)是实现定时和计数功能的重要组件。
以下简要介绍80C51单片机定时器/计数器的工作原理:1. 结构:定时器/计数器由一个16位的加法器构成,可以自动加0xFFFF(即65535)。
定时器/计数器的输入时钟可以来自系统时钟或外部时钟源。
2. 工作模式:定时模式:当定时器/计数器的输入时钟源驱动加法器不断计数时,可以在达到一定时间后产生中断或产生其他操作。
计数模式:当外部事件(如电平变化)发生时,定时器/计数器的输入引脚可以接收信号,使加法器产生一个增量,从而计数外部事件发生的次数。
3. 定时常数:在定时模式下,定时常数(即定时时间)由预分频器和定时器/计数器的初值共同决定。
例如,如果预分频器设置为1,定时器/计数器的初值为X,那么实际的定时时间 = (65535 - X) 预分频系数输入时钟周期。
在计数模式下,定时常数由外部事件发生的时间间隔决定。
4. 溢出和中断:当加法器达到65535(即0xFFFF)时,会产生溢出,并触发中断或其他操作。
中断处理程序可以用于执行特定的任务或重置定时器/计数器的值。
5. 控制寄存器:定时器/计数器的操作可以通过设置相关的控制寄存器来控制,如启动/停止定时器、设置预分频系数等。
6. 应用:定时器/计数器在许多应用中都很有用,如时间延迟、频率测量、事件计数等。
为了充分利用80C51单片机的定时器/计数器功能,通常需要根据实际应用需求配置和控制相应的寄存器,并编写适当的软件来处理定时器和计数器的操作。
80c51

ACC B
指令寄存器IR 指令译码器ID DPH
缓冲器 DPL ROM 4K字节
暂存器1
暂存器2
PC增量器 PSW ALU 振荡器 定时与控制 程序计数器PC 地址寄存器AR
XTAL2 VSS XTAL1 EA RST ALE PSEN
11
2.4.1 80C51的内部结构 一、80C51的微处理器(CPU) (1)运算器 累加器ACC ; 寄存器B ; 程序状态字寄存器PSW 。 (2)控制器 程序计数器PC ; 指令寄存器IR ; 定时与控制逻辑。
(3)在功能上,该系列单片机有基 本型和增强型两大类 基本型: 8051/8751/8031 80C51/87C51/80C31 增强型: 8052/8752/8032 80C52/87C52/80C32
1
(4)在片内程序存储器的配置上, 该系列单片机有三种形式,即掩膜ROM、 EPROM 和 ROMLess( 无 片 内 程 序 存 储 器)。如: ﹡80C51有4K字节的掩膜ROM; ﹡87C51有4K字节的EPROM ; ﹡80C31在芯片内无程序存储器。
23
2.5.1 80C51的程序存储器配置
PSEN 0000H EA=1 内部 0FFFH 1000H 外部 FFFFH FFFFH EA=0 外部
复位入口 INT0中断入口 T0中断入口 INT1中断入口 T1中断入口 串口中断入口
0000H 0003H 000BH 0013H 001BH 0023H ROM
80H
间接寻址 直接寻址 访问 访问 FFH
FFFFH RD WR
25
一、工作寄存器区
低端32个字节分成4个工作寄存器组,每组8个单 元。当前工作寄存器组的机制便于快速现场保护。
单片机基础_80C51

5. 串行I/O口 目前高档 8 位单片机均设置了全双工串行 I/O 口,用以 实现与某些终端设备进行串行通信,或者和一些特殊功能 的器件相连接的能力,甚至用多个单片机相连构成多机系 统。随着应用的拓宽,有些型号的单片机内部还包含有二 个串行I/O口。 6. 定时器/计数器
3. 控制线:共4根。
· RST(VPD:备用电源引入端,当电源发生故障,电源降到下限值时, 备用电源经此端向内部 RAM提供电压,以保护内部RAM中的数据不 丢失)——复位输入信号,高电平有效。在振荡器工作时,在RST上 作用两个机器周期以上的高电平,将器件复位。 ·/EA(Vpp:编程电压,具体电压值视芯片而定)——片外程序存储 器访问允许信号,低电平有效。/EA=1,选择片内程序存储器(80C51 为4KB,80C52为8KB) ;/EA=0,则程序存储器全部在片外而不管片 内是否有程序存储器。 使用80C31时,必须接地,使用8751编程时,施加 21V的编程电 压。 · ALE(PROG:编程脉冲)——地址锁存允许信号,输出。 在访问片外存储器或 I/O 时,用于锁存低八位地址,以实现低八 位地址与数据的隔离。即使不访问外部存储器,ALE端仍以固定的频 率输出脉冲信号(此频率是振荡器频率的1/6)。在访问外部数据存储器 时,出现一个ALE脉冲。
在单片机中,常把寄存器(如工作寄存器、特殊功能 寄存器、堆栈等)在逻辑上划分在片内 RAM 空间中,所 以可将单片机内部 RAM 看成是寄存器堆,有利于提高运 行速度。
当内部 RAM 容量不够时,还可通过串行总线或并行 总线外扩数据存储器。
4. 并行I/O口
单片机往往提供了许多功能强、使用灵活的并行输入 /输出引脚,用于检测与控制。有些I/O引脚还具有多种功 能,比如可以作为数据总线的数据线、地址总线的地址线、 控制总线的控制线等。单片机 I/O 引脚的驱动能力也逐渐 增大,甚至可以直接驱动外扩的LED显示器。
第三章-80C51单片机的指令系统

第三章-80C51单片机的指令系统80C51单片机是一种常用的微控制器,广泛应用于嵌入式系统中。
其指令系统是该单片机的核心组成部分,决定了其功能和特性。
在本文中,我们将深入探讨80C51单片机的指令系统,包括其指令格式、指令集以及指令的执行过程。
一、指令格式80C51单片机的指令格式通常由若干个字节组成,每个字节又分为几个字段。
具体而言,一条指令通常包括操作码、目标操作数和源操作数等字段。
其中,操作码表示指令的类型和功能,目标操作数表示指令操作的目标寄存器或内存单元,源操作数表示指令操作的源寄存器或内存单元。
以MOV指令为例,其指令格式如下:| 操作码 | 目标操作数 | 源操作数 |其中,操作码为一个字节,表示MOV指令;目标操作数和源操作数也为一个字节,分别表示指令操作的目标和源。
二、指令集80C51单片机的指令集丰富多样,包括数据传送指令、算术运算指令、逻辑运算指令、分支指令等等。
这些指令可以实现各种功能,满足不同的应用需求。
1. 数据传送指令数据传送指令用于将数据从一个寄存器或内存单元复制到另一个寄存器或内存单元。
例如,MOV指令可以实现数据传送操作。
2. 算术运算指令算术运算指令用于进行加法、减法、乘法和除法等运算。
例如,ADD指令可以实现两个操作数的相加操作。
3. 逻辑运算指令逻辑运算指令用于进行与、或、非、异或等逻辑运算。
例如,AND 指令可以实现两个操作数的与运算。
4. 分支指令分支指令用于实现循环、条件判断和跳转等功能。
例如,JMP指令可以无条件跳转到指定的地址。
除了上述指令之外,80C51单片机还支持位操作指令、移位指令、输入输出指令等。
三、指令执行过程在80C51单片机中,指令的执行过程包括取指、译码、执行以及访问存储器等阶段。
1. 取指阶段取指阶段是指令执行的第一步,其目的是从存储器中读取指令。
取指的过程通常涉及到程序计数器的操作,确定下一条要执行的指令地址。
2. 译码阶段译码阶段是将取到的指令进行解码,将其转换为内部指令表示形式,以便后续的执行。
80c51单片机习题与解答

80c51单片机习题与解答单片机作为一种嵌入式计算机芯片,具有体积小、功耗低、性能高的特点,被广泛应用于各个领域。
本文将针对80C51单片机进行一些常见的习题及其解答,旨在帮助读者更好地理解和掌握该单片机的应用。
1. 习题一:如何将80C51的IO口设为输入模式?解答:在80C51的寄存器中,P1是一个8位的数据口,可以通过以下操作将其设为输入模式:```assemblyMOV P1, #0FFH ;将P1口设置为输入模式```2. 习题二:如何用80C51实现定时器功能?解答:80C51具有一个可编程的定时器/计数器,可以通过以下步骤实现定时器功能:- 配置定时器的控制寄存器,选择定时器模式和工作方式;- 设置定时器的初始值;- 启动定时器;- 在定时器溢出时中断或轮询检测。
3. 习题三:如何使用80C51的串口通信功能?解答:80C51具有一个串行通信口(UART),可以通过以下步骤使用串口通信功能:- 配置串口控制寄存器,设置通信参数,如波特率、数据位数、停止位等;- 发送数据时,将要发送的数据写入SBUF寄存器;- 接收数据时,通过中断或轮询的方式读取SBUF寄存器中的数据。
4. 习题四:80C51的中断优先级如何设置?解答:80C51的中断有两级优先级:高优先级和低优先级。
优先级高的中断在发生时会立即被响应,而优先级低的中断则需要等待高优先级中断完成后才能响应。
中断优先级可通过设置中断控制寄存器来实现。
5. 习题五:如何通过80C51实现脉冲宽度调制(PWM)输出?解答:通过80C51的定时器功能和IO控制,可以实现脉冲宽度调制输出。
具体步骤如下:- 配置定时器为PWM模式;- 设置定时器的初始值和占空比;- 配置IO口,将其设为输出模式;- 当定时器计数值超过设定的脉冲宽度时,将IO口置1,否则置0。
6. 习题六:如何在80C51上实现ADC功能?解答:80C51本身没有ADC模块,但可以通过外部ADC芯片来实现模数转换功能。
80C51单片机的引脚功能

1。
1 80C51单片机的引脚功能80C51系列中,用CHMOS工艺制造的单片机都采用双列直插式(DIP)40脚封装,引脚信号完全相同。
图2-9为引脚图,这40根引脚大致可分为:电源(V CC、V SS、V PP、V PD)、时钟(XTAL1、XTAL2)、I/O口(P0~P3)、地址总线(P0口、P2口)和控制总线(ALE、RST、、、)等几部分。
它们的功能简述如下:1.电源Vcc(引脚号40),芯片电源,接+5V;Vss(引脚号20),电源接地端。
2.时钟XTAL1(引脚号18)内部振荡电路反相放大器的输入端,是外接晶振的一个引脚。
当采用外部振荡器时,此引脚接地。
XTAL2(引脚号19)内部振荡器的反相放大器输出端,是外接晶振的另一端。
当采用外部振荡器时,此引脚接外部振荡源。
3.控制总线(1)ALE/ (引脚号30):正常操作时为ALE功能(允许地址锁存),用来把地址的低字节锁存到外部锁存器。
ALE引脚以不变的频率(振荡器频率的1/6)周期性地发出正脉冲信号.因此,它可用作对外输出的时钟信号或用于定时.但要注意,每当访问外部数据存储器时,将跳过一个ALE脉冲。
ALE端可以驱动(吸收或输出电流)8个LSTTL电路。
在8751单片机EPROM编程期间,此引脚接编程脉冲(功能)。
(2)(引脚号29):外部程序存储器读选通信号。
在从外部程序存储器取指令(或数据)期间,在每个机器周期内两次有效。
可以驱动8个LSTTL电路。
(3)RST/VPD(引脚号9):复位信号输入端。
振荡器工作时,该引脚上持续2个机器周期的高电平可实现复位操作。
此引脚还可接上备用电源。
在Vcc掉电期间,由向内部RAM提供电源,以保持内部RAM中的数据。
(4) /Vpp(引脚号31):为内部程序存储器和外部程序存储器的选择端.当为高电平时,访问内部程序存储器(PC值小于4K);当为低电平时,访问外部程序存储器。
对于87C51单片机,在EPROM 编程期间,此端为21V编程电源输入端。
80C51系列单片机指令表

80C51系列单片机指令表80C51系列单片机指令以A开头的指令有18条,分别为:ACALL addr11ADD A,RnADD A,directADD A,@RiADD A,#dataADDC A,RnADDC A,directADDC A,@RiADDC A,#dataAJMP addr11ANL A,RnANL A,directANL A,@RiANL A,#dataANL direct,AANL direct,#dataANL C,bitANL C,/bit1. ACALL addr11指令名称:绝对调用指令指令代码:A10 A9 A8 1 0 0 0 1 A7 A6 A5 A4 A3 A2 A1 A0指令功能:构造目的地址,进行子程序调用。
其方法是以指令提供的11位地址(al0~a0),取代PC的低11位,PC的高5位不变。
操作内容:PC←(PC)+2SP←(SP)+1(SP)←(PC)7~0SP←(SP)+1(SP)←(PC)15~8PC10~0←addrl0~0字节数:2机器周期:2使用说明:由于指令只给出子程序入口地址的低11位,因此调用范围是2KB。
2. ADD A,Rn指令名称:寄存器加法指令指令代码:28H~2FH指令功能:累加器内容与寄存器内容相加操作内容:A←(A)+(Rn),n=0~7字节数:1机器周期:1影响标志位:C,AC,OV3. ADD A,direct指令名称:直接寻址加法指令指令代码:25H指令功能:累加器内容与内部RAM单元或专用寄存器内容相加操作内容:A←(A)+(direct)字节数:2机器周期:1影响标志位:C,AC,OV4. ADD A,@Ri指令名称:间接寻址加法指令指令代码:26H~27H指令功能:累加器内容与内部RAM低128单元内容相加操作内容:A←(A)+((Ri)),i=0,1字节数:1机器周期:1影响标志位:C,AC,OV5. ADD A,#data指令名称:立即数加法指令指令代码:24H指令功能:累加器内容与立即数相加操作内容:A←(A)+data字节数:2机器周期:1影响标志位:C,AC,OV6. ADDC A,Rn指令名称:寄存器带进位加法指令指令代码:38H~3FH指令功能:累加器内容、寄存器内容和进位位相加操作内容:A←(A)+(Rn)+(C),n=0~7字节数:1机器周期:1影响标志位:C,AC,OV7. ADDC A,direct指令名称:直接寻址带进位加法指令指令代码:35H指令功能:累加器内容、内部RAM低128单元或专用寄存器内容与进位位加操作内容:A←(A)+(direct)+(C)字节数:2机器周期:1影响标志位:C,AC,OV8. ADDC A,@Ri指令名称:间接寻址带进位加法指令指令代码:36H~37H指令功能:累加器内容、内部RAM低128单元内容及进位位相加操作内容:A←(A)+((Ri))+(C),i=0,1字节数:1机器周期:1影响标志位:C,AC,OV9. ADDC A,#data指令名称:立即数带进位加法指令指令代码:34H指令功能:累加器内容、立即数及进位位相加操作内容:A←(A)+data+(C)字节数:2机器周期:1影响标志位:C,AC,OV10. AJMP addr11指令名称:绝对转移指令指令代码:A10 A9 A8 1 0 0 0 1 A7 A6 A5 A4 A3 A2 A1 A0指令功能:构造目的地址,实现程序转移.其方法是以指令提供的11位地址,取代PC的低11位,而PC的高5位保持不变.操作内容:PC←(PC)+2PCl0~0←addrll字节数:2机器周期:2使用说明:由于addrll的最小值是000H,最大值是7FFH,因此地址转移范围是2KB.11. ANL A,Rn指令名称:寄存器逻辑与指令指令代码:58H~5FH指令功能:累加器内容逻辑与寄存器内容操作内容:A←(A)∧(Rn),n=0~7字节数:1机器周期:112. ANL A,direct指令名称:直接寻址逻辑与指令指令代码:55H指令功能:累加器内容逻辑与内部RAM低128单元或专用寄存器内容操作内容:A←(A)∧(diret)字节数:2机器周期:113. ANL A,@Ri指令名称:间接寻址逻辑与指令指令代码:56H~57H指令功能:累加器内容逻辑与内部RAM低128单元内容操作内容:A←(A)∧((Ri))i=0,1字节数:1机器周期:114. ANL A,#data指令名称:立即数逻辑与指令指令代码:54H指令功能:累加器内容逻辑与立即数操作内容:A←(A)∧data字节数:2机器周期:115. ANL direct,A指令名称:累加器逻辑与指令指令代码:52H指令功能:内部RAM低128单元或专用寄存器内容逻辑与累加器内容操作内容:direct←(A)∧(direct)字节数:2机器周期:116. ANL direct,#data指令名称:逻辑与指令指令代码:53H指令功能:内部RAM低128单元或专用寄存器内容逻辑与立即数操作内容:direct←(direct)∧data字节数:3机器周期:217. ANL C,bit指令名称:位逻辑与指令指令代码:82H指令功能:进位标志逻辑与直接寻址位操作内容:C←(C)∧(bit)字节数:2机器周期:218. ANL C,/bit指令名称:位逻辑与指令指令代码:B0H指令功能:进位标志逻辑与直接寻址位的反操作内容:C←(C)∧(bit)字节数:2机器周期:280C51系列单片机指令以C开头的指令有10条,分别为: CJNE A,dircet,relCJNE A,#data,relCJNE Rn,#data,relCJNE @Ri,#data,relCLR ACLR CCLR bitCPL ACPL CCPL bit1. CJNE A,dircet,rel指令名称:数值比较转移指令指令代码:B5H指令功能:累加器内容与内部RAM低128字节或专用寄存器内容比较,不等则转移。