80C51单片机(精选)
- 格式:ppt
- 大小:1.57 MB
- 文档页数:28
单片机原理及应用第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单片机是一种常用的微控制器,其定时器/计数器(Timer/Counter)是实现定时和计数功能的重要组件。
以下简要介绍80C51单片机定时器/计数器的工作原理:1. 结构:定时器/计数器由一个16位的加法器构成,可以自动加0xFFFF(即65535)。
定时器/计数器的输入时钟可以来自系统时钟或外部时钟源。
2. 工作模式:定时模式:当定时器/计数器的输入时钟源驱动加法器不断计数时,可以在达到一定时间后产生中断或产生其他操作。
计数模式:当外部事件(如电平变化)发生时,定时器/计数器的输入引脚可以接收信号,使加法器产生一个增量,从而计数外部事件发生的次数。
3. 定时常数:在定时模式下,定时常数(即定时时间)由预分频器和定时器/计数器的初值共同决定。
例如,如果预分频器设置为1,定时器/计数器的初值为X,那么实际的定时时间 = (65535 - X) 预分频系数输入时钟周期。
在计数模式下,定时常数由外部事件发生的时间间隔决定。
4. 溢出和中断:当加法器达到65535(即0xFFFF)时,会产生溢出,并触发中断或其他操作。
中断处理程序可以用于执行特定的任务或重置定时器/计数器的值。
5. 控制寄存器:定时器/计数器的操作可以通过设置相关的控制寄存器来控制,如启动/停止定时器、设置预分频系数等。
6. 应用:定时器/计数器在许多应用中都很有用,如时间延迟、频率测量、事件计数等。
为了充分利用80C51单片机的定时器/计数器功能,通常需要根据实际应用需求配置和控制相应的寄存器,并编写适当的软件来处理定时器和计数器的操作。
第三章-80C51单片机的指令系统80C51单片机是一种常用的微控制器,广泛应用于嵌入式系统中。
其指令系统是该单片机的核心组成部分,决定了其功能和特性。
在本文中,我们将深入探讨80C51单片机的指令系统,包括其指令格式、指令集以及指令的执行过程。
一、指令格式80C51单片机的指令格式通常由若干个字节组成,每个字节又分为几个字段。
具体而言,一条指令通常包括操作码、目标操作数和源操作数等字段。
其中,操作码表示指令的类型和功能,目标操作数表示指令操作的目标寄存器或内存单元,源操作数表示指令操作的源寄存器或内存单元。
以MOV指令为例,其指令格式如下:| 操作码 | 目标操作数 | 源操作数 |其中,操作码为一个字节,表示MOV指令;目标操作数和源操作数也为一个字节,分别表示指令操作的目标和源。
二、指令集80C51单片机的指令集丰富多样,包括数据传送指令、算术运算指令、逻辑运算指令、分支指令等等。
这些指令可以实现各种功能,满足不同的应用需求。
1. 数据传送指令数据传送指令用于将数据从一个寄存器或内存单元复制到另一个寄存器或内存单元。
例如,MOV指令可以实现数据传送操作。
2. 算术运算指令算术运算指令用于进行加法、减法、乘法和除法等运算。
例如,ADD指令可以实现两个操作数的相加操作。
3. 逻辑运算指令逻辑运算指令用于进行与、或、非、异或等逻辑运算。
例如,AND 指令可以实现两个操作数的与运算。
4. 分支指令分支指令用于实现循环、条件判断和跳转等功能。
例如,JMP指令可以无条件跳转到指定的地址。
除了上述指令之外,80C51单片机还支持位操作指令、移位指令、输入输出指令等。
三、指令执行过程在80C51单片机中,指令的执行过程包括取指、译码、执行以及访问存储器等阶段。
1. 取指阶段取指阶段是指令执行的第一步,其目的是从存储器中读取指令。
取指的过程通常涉及到程序计数器的操作,确定下一条要执行的指令地址。
2. 译码阶段译码阶段是将取到的指令进行解码,将其转换为内部指令表示形式,以便后续的执行。
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芯片来实现模数转换功能。
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系列单片机指令以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字节或专用寄存器内容比较,不等则转移。
很多初学51单片机的网友会有这样的问题:AT89S51是什么?书上和网络程上可都是8051,89C51等!没听说过有89S51 ?这里,初学者要澄清单片机实际使用方面的一个产品概念,MCS-51单片机是美国INTE公司于1980年推出的产品,典型产品有8031(内部没有程序存储器,实际使用方面已经被市场淘汰)、8051(芯片采用HMOS,功耗是630mW,是89C51的5倍,实际使用方面已经被市场淘汰)和8751等通用产品,一直到现在,MCS-51内核系列兼容的单片机仍是应用的主流产品(比如目前流行的89S51、已经停产的89C51等),各高校及专业学校的培训教材仍与MCS-51单片机作为代表进行理论基础学习。
有些文献甚至也将8051泛指MCS-51系列单片机,8051是早期的最典型的代表作,由于MCS-51单片机影响极深远,许多公司都推出了兼容系列单片机,就是说MCS-51内核实际上已经成为一个8位单片机的标准。
其他的公司的51单片机产品都是和MCS-51内核兼容的产品而以。
同样的一段程序,在各个单片机厂家的硬件上运行的结果都是一样的,如ATMEL的89C51(已经停产)、89S51,PHILIPS(菲利浦),和WINBOND(华邦)等,我们常说的已经停产的89C51指的是ATMEL 公司的AT89C51单片机,同时是在原基础上增强了许多特性,如时钟,更优秀的是由Flash (程序存储器的内容至少可以改写1000次)存储器取带了原来的ROM(一次性写入),AT89C51的性能相对于8051已经算是非常优越的了。
不过在市场化方面,89C51受到了PIC单片机阵营的挑战,89C51最致命的缺陷在于不支持ISP(在线更新程序)功能,必须加上ISP功能等新功能才能更好延续MCS-51的传奇。
89S51就是在这样的背景下取代89C51的,现在,89S51目前已经成为了实际应用市场上新的宠儿,作为市场占有率第一的Atmel目前公司已经停产AT89C51,将用AT89S51代替。