8051单片机教程
第2章8051单片机硬件结构和原理
指令寄存器IR及指令译码器ID
• 由PC中的内容指定ROM地址,取出来的指令经IR送至ID, 由ID对指令译码产生一定序列的控制信号,以执行指令所 规定的操作。
振荡器和定时电路
• 8051单片机片内有振荡电路,只需外接石英晶体 和频率微调电容(2个30pF左右),其频率范围为 1.2MHz~12MHz。该信号作为8051工作的基本节拍
片外程序存储器
从程序员角度看存储器
程序存储器保留地址
(1)0000H~0002H三个单元:
• 用作上电复位后引导程序的存放单元。因
为复位后PC的内容为0000H,CPU总是从
0000H开始执行程序。将转移指令存放到 这三个单元,程序就被引导到指定的程序 存储器空间去执行。
程序存储器保留地址
(2)0003H~002AH单元:
使用。
SFR之 程序状态寄存器PSW(D0H)
• PSW是一个8位特殊功能寄存器,它的各位包含
了程序执行后的状态信息,供程序查询或判别之
用。各位的含义及其格式如表2-6所列。
• PSW除有确定的字节地址(D0H)外,每一位均有
位地址
Psw中的位
• CY(PSW.7): 进位标志位。在执行加法(或减法)运算 指令时,如果运算结果最高位(位7)向前有进位(或借 位),则CY位由硬件自动置1;如果运算结果最高位无 进位(或借位),则CY清0。CY也是89C51在进行位操作 (布尔操作)时的位累加器,在指令中用C代替CY。 • AC(PSW.6): 半进位标志位,也称辅助进位标志。当 执行加法(或减法)操作时,如果运算结果(和或差)的 低半字节(位3)向高半字节有半进位(或借位),则AC位 将被硬件自动置1;否则AC被自动清0。 • F0(PSW.5): 用户标志位。用户可以根据自己的需要 对F0位赋予一定的含义,由用户置位或复位,以作为 软件标志。
8051单片机实训指导书
单片机实验指导书基础部分实训1 认识单片机一、单片机概述一台能够工作的计算机要有这样几个部份构成:CPU(进行运算、控制)、RAM (数据存储)、ROM(程序存储)、输入/输出设备(例如:串行口、并行输出口等)。
在个人计算机上这些部份被分成若干块芯片,安装一个称之为主板的印刷线路板上。
而在单片机中,这些部份,全部被做到一块集成电路芯片中了,所以就称为单片(单芯片)机,而且有一些单片机中除了上述部份外,还集成了其它部份如A/D,D/A等。
二、单片机的外部结构(1)单片机的引脚拿到一块芯片,想要使用它,首先必须要知道怎样连线,我们用的一块称之为89C51的芯片,下面我们就看一下如何给它连线。
电源:这当然是必不可少的了。
单片机使用的是5V电源,其中正极接40引脚,负极(地)接20引脚。
振蒎电路:单片机是一种时序电路,必须提供脉冲信号才能正常工作,在单片机内部已集成了振荡器,使用晶体振荡器,接18、19脚。
只要买来晶振,电容,连上就可以了,按图1-1接上即可。
复位引脚:按图1-1中画法连好,至于复位是何含义及为何需要复要复位,在单片机功能中介绍。
EA引脚:EA引脚接到正电源端。
至此,一个单片机就接好,通上电,单片机就开始工作了。
图1-1(二)单片机芯片引脚功能1.主电源引脚(1)GND 接地(2)VCC正常操作时为十5V电源。
2.时钟电路引脚(1)XTAL1:(2)XTAL2:3.控制线与电源复用引脚(1)RST/VPD:RST是复位信号,高电平有效。
VPD为第二功能,即备用电源输入端。
(2)ALE/PROG:ALE为地址锁存允许信号输出引脚。
PROG为编程信号,第二功能,低电平有效。
(3)PSEN:片外ROM选通信号输出端,低电平有效。
(4)EA/VPP:EA为内部和外部ROM控制端当EA=1时,从内ROM开始访问当EA=0时,只访问外部ROMVPP是编程电源输入端4.并行输入/输出引脚(1)P0口:P0.0~P0.7统称为P0口(2)P1口:P1.0~P1.7统称为P1口(3)P2口:P2.0~P2.7统称为P2口(4)P3口:P3.0~P3.7统称为P3口P3口每一位可用作第二功能,而且P3口的每一条引脚都可以独立设置为第一功能的I/O口功能和第二功能。
51单片机超详细教程PPT(绝对值)
00
3区
外部
FFH 80H 7FH (低128B) 00H (高128B) 专用 寄存器 内部 RAM 0000H
1FH 18H 17H 10H 0FH 08H 07H 00H
2区
工作寄存器区
1区 0区
数据存储器
内部RAM存储器
RAM位寻址区位地址表
单元地址 MSB
2FH 2EH 2DH 2CH 2BH 2AH 29H 28H 27H 26H 25H 24H 23H 22H 21H 20H 7F 77 6F 67 5F 57 4F 47 3F 37 2F 27 1F 17 0F 07 7E 76 6E 66 5E 56 4E 46 3E 36 2E 26 1E 16 0E 06 7D 75 6D 65 5D 55 4D 45 3D 35 2D 25 1D 15 0D 05
c8051f单片机教程
内容:西安科技大学科技创新实验班C8051F单片机教程之一作者:苗瑞日期:2009-12-8网站:/bbs一、认识C8051F并与51比较本节主要是让初学C8051F单片机的学员有个感性的认识,着重强调理论方面的知识,并通过与51单片机的比较,让大家能有更深刻的体会。
1、C8051F单片机简介C8051Fxxx 系列单片机是完全集成的混合信号系统级芯片,具有与8051 兼容的微控制器内核,与MCS-51 指令集完全兼容。
除了具有标准8052 的数字外设部件之外,片内还集成了数据采集和控制系统中常用的模拟部件和其它数字外设及功能部件MCU 中的外设或功能部件包括模拟多路选择器、可编程增益放大器、ADC、DAC、电压比较器、电压基准、温度传感器、SMBus/ I2C、UART、SPI、可编程计数器/定时器阵列(PCA)、定时器、数字I/O 端口、电源监视器、看门狗定时器(WDT)和时钟振荡器等。
所有器件都有内置的FLASH 程序存储器和256 字节的内部RAM,有些器件内部还有位于外部数据存储器空间的RAM,即XRAM。
C8051Fxxx 单片机采用流水线结构,机器周期由标准的12 个系统时钟周期降为1 个系统时钟周期,处理能力大大提高,峰值性能可达25MIPS。
C8051Fxxx 单片机是真正能独立工作的片上系统(SOC)。
每个MCU 都能有效地管理模拟和数字外设,可以关闭单个或全部外设以节省功耗。
FLASH 存储器还具有在系统重新编程能力,可用于非易失性数据存储,并允许现场更新8051 固件。
应用程序可以使用MOVC 和MOVX 指令对FLASH 进行读或改写,每次读或写一个字节。
这一特性允许将程序存储器用于非易失性数据存储以及在软件控制下更新程序代码。
片内 JTAG 调试支持功能允许使用安装在最终应用系统上的产品MCU 进行非侵入式(不占用片内资源)、全速、在系统调试。
该调试系统支持观察和修改存储器和寄存器,支持断点、单步、运行和停机命令。
2024年度51单片机超详细教程PPT
实例:按键中断程序设计
3. 在主程序中初始化LED 灯和按键输入端口。
4. 开启外部中断0并等待 按键输入。
5. 当按键按下时,触发外 部中断0并执行中断服务 程序,实现LED灯的闪烁 功能。
2024/3/23
32
Part
06
接口技术与应用扩展
2024/3/23
33
并行I/O口扩展方法
2024/3/23
存放程序代码和常数表格 等,一般使用ROM或 EPROM实现
STEP 03
特殊功能寄存器
用于控制单片机的各种功 能,如定时器、中断等
存放变量、中间结果等, 一般使用RAM实现
9
I/O端口及特殊功能寄存器
要点一
I/O端口
要点二
特殊功能寄存器
与外部设备通信的接口,分为并行I/O和串行I/O两种
用于控制I/O端口的操作,如设置端口模式、读取端口状态 等
优势
51单片机在嵌入式系统领域具有广泛的应用,其稳定的性能和成熟的生态系统使得开发者能够快速开发出高质量 的嵌入式应用。
2024/3/23
5
应用领域与市场需求
应用领域
智能家居、工业自动化、医疗设备、汽车电子、物联网等。
市场需求
随着物联网、人工智能等技术的快速发展,对单片机的性能、功耗、安全性等方面提出了更高的要求 。同时,市场对于单片机的定制化、差异化需求也日益增加。
23
Part
05
中断系统与定时器/计数器应 用
2024/3/23
24
中断概念及中断源识别方法
2024/3/23
中断概念
中断是指在CPU执行程序的过程中,由于某种原因,暂时停止当前正在执行的程序,转 而去执行另一段特殊程序,待特殊程序执行完毕后,再返回原程序继续执行的过程。
8051单片机教程
8051单片机教程一、认识8051单片机8051单片机是一款经典的微控制器,自1981年由英特尔公司推出以来,便广泛应用于工业控制、智能家居、嵌入式系统等领域。
本教程将带领大家了解8051单片机的结构、原理及其编程方法。
1. 8051单片机的基本结构(1)中央处理器(CPU):负责执行程序指令,进行数据处理和控制。
(2)存储器:包括程序存储器(ROM)和数据存储器(RAM)。
程序存储器用于存放程序代码,数据存储器用于存放运行过程中的数据和变量。
(3)定时器/计数器:用于实现定时或计数功能,可应用于各种场合,如延时、脉冲计数等。
(4)并行I/O口:共有4个8位的并行I/O口,可用于连接外部设备,进行数据输入输出。
(5)串行通信接口:用于与其他设备进行串行通信,可实现数据的长距离传输。
(6)中断系统:允许外部设备或内部事件打断正常的程序执行流程,提高系统的实时性。
2. 8051单片机的特点(1)指令丰富:8051单片机拥有111条指令,包括数据传送、逻辑运算、算术运算、位操作等。
(2)硬件资源丰富:具备定时器、串行通信接口、中断系统等硬件资源,易于实现各种功能。
(3)扩展性强:可通过外部总线扩展存储器、I/O口等资源。
(4)功耗低:适用于电池供电的便携式设备。
(5)成本低:8051单片机价格低廉,性价比高。
二、8051单片机的编程基础1. 汇编语言与C语言2. 开发环境搭建(1)并安装Keil软件。
(2)创建一个新项目,选择8051单片机型号。
(3)编写,并将文件添加到项目中。
(4)编译、项目,可执行文件。
(5)将可执行文件到8051单片机中,进行调试和运行。
3. 基本语法与编程规范(1)变量定义:在C语言中,使用变量前需先进行定义。
例如:unsigned char count; // 定义一个无符号字符型变量count(2)数据类型:8051单片机支持多种数据类型,如char、int、long等。
8051单片机教程
8051单片机教程1.8051单片机的基本概念2.8051单片机的寄存器8051单片机共有4个寄存器:A累加器、B寄存器、DPTR数据指针和PSW程序状态字。
其中累加器A用于存储和运算数据,寄存器B常用于存放需要扩展的数据,数据指针DPTR可以用来指向程序存储器中的数据,程序状态字PSW用于标志程序的运行状态。
3.8051单片机的IO口4.8051单片机的编程8051单片机支持汇编语言编程,操作简单灵活。
编程过程主要包括程序设计、程序烧录和程序调试三个步骤。
程序设计需要根据具体需求编写程序,使用编译器将汇编语言转换成二进制程序,然后通过编程器将程序烧录到芯片中,最后通过仿真器对程序进行调试和测试。
5.8051单片机的应用8051单片机广泛应用于各个领域,如家电控制、工业控制、安防监控、医疗仪器等。
在家电控制方面,可以通过程序来控制电视机、空调、洗衣机等家电设备的开关和操作;在工业控制方面,可以利用8051单片机的IO口来控制工业生产线的运行和监测系统的数据采集;在安防监控方面,可以利用8051单片机来控制摄像头、门禁系统等设备的操作;在医疗仪器方面,可以利用8051单片机来控制血压测量、体温测量等设备的运行。
6.8051单片机的发展趋势随着科技的发展,8051单片机也在不断升级。
最新的8051单片机已经具备了更高的性能、更多的接口功能和更大的存储容量,可以更好地满足各种应用需求。
同时,也有越来越多的开发工具和IDE软件可以使用,使得8051单片机的开发变得更加便捷高效。
总结:本文简要介绍了8051单片机的基本知识和使用方法,包括8051的基本概念、寄存器、IO口、编程方法、应用领域及发展趋势等方面内容。
相信读者通过阅读本文,对于8051单片机有了一个初步的了解,并有了一定的学习和使用指导。
stc32位8051单片机原理与应用书本
标题:深度解读STC32位8051单片机原理与应用书本一、介绍在现代科技领域中,单片机技术作为信息技术的重要组成部分,一直扮演着重要的角色。
而STC32位8051单片机原理与应用书本,作为一本经典的教材,对于理解和应用单片机技术具有重要意义。
本文将对该书进行全面评估,并探讨其在单片机领域的深度和广度。
二、主题基础STC32位8051单片机原理与应用书本是一本重要的教材,其中包含了丰富的知识内容,涉及到单片机的原理、应用等方方面面。
通过系统地学习这本书,读者可以全面了解单片机技术,并掌握其丰富的应用方法。
三、深度探讨1. 单片机基础知识在STC32位8051单片机原理与应用书本中,作者首先介绍了单片机的基础知识,包括单片机的定义、结构、工作原理等。
这些内容为读者深入理解单片机奠定了坚实的基础。
2. 8051单片机架构书本详细介绍了8051单片机的内部结构和工作原理,包括CPU、存储器、I/O口、定时器/计数器等各个部分的功能和作用。
通过学习这些内容,读者可以深入理解8051单片机的内部机制。
3. 单片机编程书本通过丰富的案例和实例,介绍了单片机的编程方法和技巧,包括指令集、编程语言、编程工具的使用等。
这些内容对于读者掌握单片机的应用具有重要意义。
4. 单片机应用案例除了原理知识和编程技巧外,书本还提供了大量的单片机应用案例,涵盖了各种实际场景下的应用。
这些案例不仅帮助读者理解单片机在不同领域中的应用,同时也激发了读者对单片机技术的创新思维。
四、总结与回顾通过对STC32位8051单片机原理与应用书本的深度评估,我们可以清晰地了解到,这本教材内容丰富、深入浅出、涵盖面广。
无论是单片机的基础知识、内部架构还是编程方法和实际应用,书本都进行了全面系统的介绍和讲解。
读者在系统学习完这本书后,将能够全面、深刻、灵活地掌握单片机技术,为今后的实际应用打下坚实的基础。
五、个人观点个人认为,STC32位8051单片机原理与应用书本在系统性和实用性上都做得非常出色。
8051单片机c语言置位与复位操作点亮led方法
8051单片机c语言置位与复位操作点亮led方法8051单片机作为一种经典的微控制器,被广泛应用于工业控制、嵌入式系统等领域。
C语言因其高效性和易读性,成为编写8051单片机程序的首选语言。
本文将详细介绍如何使用C语言对8051单片机进行置位和复位操作,以点亮LED灯。
### 8051单片机C语言置位与复位操作点亮LED方法#### 1.硬件环境准备在开始编程之前,需要确保硬件环境搭建正确。
所需硬件包括:- 8051单片机开发板- LED灯一个- 电阻(与LED灯的电压和电流匹配)- 面包板(用于搭建电路)将LED灯的一个引脚连接到8051单片机的某个I/O口(如P1.0),另一个引脚通过电阻接地。
#### 2.软件环境准备- 使用Keil uVision IDE作为开发环境,编写和编译C语言代码。
- 确保安装了适用于8051单片机的C编译器。
#### 3.C语言代码编写以下是使用C语言对8051单片机进行置位(点亮LED)和复位(熄灭LED)操作的示例代码:```c#include <reg51.h> // 包含8051寄存器定义的头文件#define LED P1_0 // 定义LED连接的I/O口,这里以P1.0为例void delay(unsigned int); // 延时函数声明void main() {while(1) { // 无限循环LED = 1; // 置位P1.0,LED点亮delay(10000); // 延时LED = 0; // 复位P1.0,LED熄灭delay(10000); // 延时}}// 延时函数定义,具体的延时时间取决于单片机的晶振频率void delay(unsigned int count) {unsigned int i,j;for(i=0; i<count; i++)for(j=0; j<1275; j++); // 空循环实现延时}```#### 4.置位与复位操作说明在上面的代码中,`LED = 1;` 对应的是置位操作,将P1.0口置为高电平,电流流经LED,使其点亮。
8051单片机教程
实验一:扩展存储器读写实验一.实验要求编制简单程序,对实验板上提供的外部存贮器(62256)进行读写操作。
二.实验目的1.学习片外存储器扩展方法。
2.学习数据存储器不同的读写方法。
三.实验电路及连线?将接至L1。
CS256连GND孔。
四.实验说明1.单片机系统中,对片外存贮器的读写操作是最基本的操作。
用户藉此来熟悉MCS51单片机编程的基本规则、基本指令的使用和使用本仿真实验系统调试程序的方法。
用户编程可以参考示例程序和流程框图。
本示例程序中对片外存贮器中一固定地址单元进行读写操作,并比较读写结果是否一致。
不一致则说明读写操作不可靠或该存储器单元不可靠,程序转入出错处理代码段(本示例程序通过熄灭一个发光二极管来表示出错)。
读写数据的选用,本例采用的是55(0101,0101)与AA(1010,1010)。
一般采用这两个数据的读写操作就可查出数据总线的短路、断路等,在实际调试用户电路时非常有效。
用户调试该程序时,可以灵活使用单步、断点和变量观察等方法,来观察程序执行的流程和各中间变量的值。
2.在I状态下执行MEM1程序,对实验机数据进行读写,若L1灯亮说明RAM读写正常。
3.也可进入LCA51的调试工具菜单中的对话窗口,用监控命令方式读写RAM,在I状态执行SX0000↓ 55,SPACE,屏幕上应显示55,再键入AA,SPACE,屏幕上也应显示AA,以上过程执行效果与编程执行效果完全相同。
注:SX是实验机对外部数据空间读写命令。
4.本例中,62256片选接地时,存储器空间为0000~7FFFH。
五.实验程序框图实验示例程序流程框图如下:六.实验源程序:ORG 0000HLJMP STARTORG 0040HSTART:MOV SP,#60HMOV DPTR,#0000H ;置外部RAM读写地址MOV A,#55H ;测试的数据一MOV B,AMOVX @DPTR,A ;写外部RAMMOVX A,@DPTR ;读外部RAMXRL A,B ;比较读回的数据JNZ ERRORMOV A,#0AAH ;测试的数据二MOV B,AMOVX @DPTR,AMOVX A,@DPTRXRL A,BJZ PASS ;测试通过ERROR: SETB ;测试失败,点亮LED SJMP $PASS: CPL ;LED状态(亮/灭)转换MOV R1,#00H ;延时DELAY: MOV R2,#00HDJNZ R2,$DJNZ R1,DELAYLJMP START ;循环测试END实验二 P1口输入、输出实验一.实验要求口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。
8051单片机工作原理_--_单片机入门经典教程
第一课:初识单片机记得在我们网站的论坛里,曾经有一位网友问了一个问题,什么是单片机?单片机是怎样的一个东东?单片机可以实现些什么功能?它主要应用在哪些领域?在我们单片机自学网的网上课堂的第一节课,我们就上面的这些问题与大家先做一个初步的探讨。
在进入课程的讲解之前,大家先一起来看看单片机吧。
下图是一片40脚的89C51及一片20脚的89C2051的单片机。
单片机的外形从上图中我们已初步认识了,那么什么叫单片机呢?所谓单片机,通俗的来讲,就是把中央处理器CPU(Central Processing Unit),存储器(memory),定时器,I/O(Input/Output)接口电路等一些计算机的主要功能部件集成在一块集成电路芯片上的微型计算机。
单片机又称为“微控制器MCU”。
中文“单片机”的称呼是由英文名称“Single Chip Microcomputer”直接翻译而来的。
单片机的主要分类:1、按应用领域可分为:家电类,工控类,通信类,个人信息终端类等等;2、按通用性可分为:通用型和专用型。
通用型单片机的主要特点是:内部资源比较丰富,性能全面,而且通用性强,可履盖多种应用要求。
所谓资源丰富就是指功能强。
性能全面通用性强就是指可以应用在非常广泛的领域。
通用型单片机的用途很广泛,使用不同的接口电路及编制不同的应用程序就可完成不同的功能。
小到家用电器仪器仪表,大到机器设备和整套生产线都可用单片机来实现自动化控制。
专用型单片机的主要特点是:针对某一种产品或某一种控制应用而专门设计的,设计时已使结构最简,软硬件应用最优,可靠性及应用成本最佳。
专用型单片机用途比较专一,出厂时程序已经一次性固化好,不能再修该的单片机。
例如电子表里的单片机就是其中的一种。
其生产成本很低。
在我们的这个网上课堂中,介绍的是MCS-51系列单片机,MCS-51单片机也是一种通用单片机,其结构及原理对所有的单片机都适用。
3、按总线结构可分为总线型和非总线型。
8051单片机指令详解
数据传递类指令(1)以累加器为目的操作数的指令MOV A,RnMOV A,directMOV A,@RiMOV A,#data第一条指令中,Rn代表的是R0-R7。
第二条指令中,direct就是指的直接地址,而第三条指令中,就是我们刚才讲过的。
第四条指令是将立即数data送到A中。
下面我们通过一些例子加以说明:MOV A,R1 ;将工作寄存器R1中的值送入A,R1中的值保持不变。
MOV A,30H ;将内存30H单元中的值送入A,30H单元中的值保持不变。
MOV A,@R1 ;先看R1中是什么值,把这个值作为地址,并将这个地址单元中的值送入A中。
如执行命令前R1中的值为20H,则是将20H单元中的值送入A中。
MOV A,#34H ;将立即数34H送入A中,执行完本条指令后,A中的值是34H。
(2)以寄存器Rn为目的操作的指令MOV Rn,AMOV Rn,directMOV Rn,#data这组指令功能是把源地址单元中的内容送入工作寄存器,源操作数不变。
(3)以直接地址为目的操作数的指令MOV direct,A 例: MOV 20H,AMOV direct,Rn MOV 20H,R1MOV direct1,direct2 MOV 20H,30HMOV direct,@Ri MOV 20H,@R1MOV direct,#data MOV 20H,#34H(4)以间接地址为目的操作数的指令MOV @Ri,A 例:MOV @R0,AMOV @Ri,direct MOV @R1,20HMOV @Ri,#data MOV @R0,#34H(5)十六位数的传递指令MOV DPTR,#data168051是一种8位机,这是唯一的一条16位立即数传递指令,其功能是将一个16位的立即数送入DPTR中去。
其中高8位送入DPH,低8位送入DPL。
例:MOV DPTR,#1234H,则执行完了之后DPH中的值为12H,DPL中的值为34H。
8051单片机手册
! 确定你的计算机系统符合最低配置要求 ! 将安装盘备份 系统要求
为了保证编译器和工具的正常工作 系统必须满足软件和硬件的最低配置
对 Windows 版工具 必须满足以下条件 ! 100 IBM 兼容 386 或以上 PC ! Windows3.1 版或以上 ! 至少 4M 内存 ! 硬盘至少有 6MB 磁盘空间 对 DOS 版工具 必须满足以下条件 ! 100 IBM 兼容 386 或以上 PC 带 640K 内存 ! MS-DOS3.1 版或以上 ! 硬盘至少有 6MB 磁盘空间 C 编译器及工具要求 CONFIG.SYS 文件中至少定义 20 个文件及 20 个缓冲区 环境空间供编译器和工具的环境变量使用 见 环境设置 章节
第一章 介绍
Keil 软件公司的 8051 单片机软件开发工具可用于众多的 8051 派生器件以实现嵌入式应用 开发 工具清单如下
! C51 优化 C 编译器 ! A51 宏汇编器 ! 8051 工具 连接器 目标文件转换器 库管理器 ! Windows 版 dScope 源程序级调试器/模拟器 ! Windows 版µVision 集成开发环境 这些工具都集合在一个套件内 见第三章 独立的工具在第四章详细介绍 除了以上的开发工具 以外 还提供实时内核 评估板和调试硬件 这些内容详见第六章和第七章的讲述 这套工具是为专 业软件开发者设计的 但任何水平的编程者都可使用 手册主题 该手册讨论了许多主题 包括 ! 将软件安装到系统并将其调整到最佳性能 见第二章 ! 为你的应用系统选择最佳工具套件 见第三章 ! 使用 8051 开发工具 见第四章 ! 运行演示程序 见第五章 如果想要马上开始使用 应当安装软件并运行演示程序 评估和演示套件 Keil 提供两套软件供用户对开发工具进行评估 C51 演示套件是开发工具的示范版本 演示套件中的工具并不产生实际的目标代码 而是产生列 表文件 可通过列表文件查看编译器和其它工具产生的代码 C51 评估套件是工具的评估版本 评估套件的工具可产生最大为 2K 的应用程序 可使用该套件评 估开发工具的效用 并可用于产生小型的目标应用系统
标准8051单片机指令说明
标准8051单片机指令说明1.ACALL addrll指令名称:绝对调用指令指令代码:指令功能:构造目的地址,进行子程序调用。
其方法是以指令提供的11位地址(A10~A0)取代PC的低11位,PC的高5位不变。
操作内容:P C←(PC)+2SP←(PC)+1(SP)←(PC)7~0SP←(SP)+1(SP) ←(PC)15~8PC10~0←addr10~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.ADDC 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 addrll指令名称:绝对转移指令指令功能:构造目的地址,实现程序转移.其方法是以指令提供的11位地址,取代PC的低11位,而PC的高5位保持不变操作内容:PC←(PC)+2PC10~0←addrll字节数:2机器周期:2使用说明:由于addrll的最小值是000H,最大值是7FFH,因此地址转移范围是2KB11.ANL A,Rn指令名称:寄存器逻辑与指令指令代码:58H~5FH指令功能:累加器内容逻辑与寄存器内容操作内容:A←(A)∧(Rn),n=0~7字节数:1机器周期:112.ANL A,direct指令名称:直接寻址逻辑与指令指令代码:55H指令功能:累加器内容逻辑与内部RAM低128单元或专用寄存器内容操作内容:A←(A) ∧(direct)字节数: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指令名称:位逻辑与指令指令代码:B0指令功能:进位标志与直接寻址位的反操作内容: C←(C) ∧(bit)字节数 :2机械周期:219.CJNE A, direct,rel指令名称:数值比较转移指令指令代码:B5H指令功能:累加器内容与内部RAM低128字节或专用寄存器内容比较,不等则转移操作内容:若(A)=( direct),则PC←(PC)+3,C←0若(A)>(direct),则PC←(PC)+3+rel,C←0若(A)<(direct),则PC←(PC)+3+rel,C←1字节数:3机械周期:220.CJNE A,# data,rel指令名称: 数值比较转移指令指令代码:84H指令功能:累加器内容与立即数比较,不等则转移操作内容:若(A)=data,则PC←(PC)+3,C←0若(A)>data,则PC←(PC)+3+rel,C←0若(A)<data,则PC←(PC)+3+rel,C←1字节数 :3机械周期:221.CJNE Rn,#data,rel指令名称:数值比较转移指令指令代码:B8H~BFH指令功能:寄存器内容与立即数比较操作内容:若(Rn)=data,则PC←(PC)+3,C←0若(Rn)>data,则PC←(PC)+3+rel,C←0若(Rn)<data,则PC←(PC)+3+rel,C←1字节数: 3机械周期:222. CJNE @Ri,#data,rel指令名称: 数值比较转移指令指令代码:B6H~B7H指令功能:内部RAM低128单元内容与立即数比较,不等则转移操作内容: 若(Ri)=data,则PC←(PC)+3,C←0若(Ri)>data,则PC←(PC)+3+rel,C←0若(Ri)<data,则PC←(PC)+3+rel,C←1字节数:3机械周期:223.CLR A指令名称:累加器清零指令指令代码:E4H指令功能:累加器清零操作内容:A←0字节数: 1机械周期:124.CLR C指令名称:进位标志清零指令指令代码:C3指令功能: 进位位清零操作内容:C←0字节数:1机械周期:1指令名称:直接寻址位清零指令指令代码:C2H指令功能: 直接寻址位清零操作内容: bit←0字节数: 2机械周期:126.CPL A指令名称:累加器取反指令指令代码:F4H指令功能:累加器取反操作内容:A←(A)字节数:1机械周期:127.CPL C指令名称:进位标志取反指令指令代码:B3H指令功能:进位标志位状态取反操作内容:C←(C取反)字节数: 1机械周期:128.CPL bit指令名称:直接寻址位取反指令指令代码:B2H指令功能: :直接寻址位取反操作内容: bit←(bit取反)字节数:2机械周期:129.DA A指令名称:十进制调整指令指令代码:D4H指令功能:对BCD码加法运算的结果进行有条件的修正操作内容:若(A)3~0>9∨(AC)=1,则A3~0←(A)3~0+6若(A)7~4>9∨(AC)=1,则A7~4←(A)7~4+6若(A)7~4=9∧(A)3~0>9,则A7~4←(A) 7~4+6 字节数:1机械周期:130.DEC A指令名称:累加器减1指令指令代码:14H指令功能: 累加器内容减1操作内容:A←(A)-1字节数: 1机械周期:1指令名称:寄存器减1指令指令代码:18H~1FH指令功能: 寄存器内容减1操作内容:Rn←(Rn)-1,n=0~7字节数:1机械周期:132.DEC direct指令名称:直接寻址减1指令指令代码:15H指令功能:内部RAM低128单元及专用寄存器内容减1操作内容: direct←(direct)-1字节数:2机械周期:133.DEC @Ri指令名称:间接寻址减1指令指令代码:16H~17H指令功能: :内部RAM低128单元内容减1操作内容: Ri←(Ri)-1,i=0,1字节数: 1机械周期:134.DIV AB指令名称:无符号数除法指令指令代码:84H指令功能:A的内容被B的内容除.指令执行后,商存A中,余数存于B中操作内容:A←(A)/(B)的商B←(A)/(B)的余数字节数: 1机械周期:4影响标志位:C 被清零;若B=00H,除法无法进行,并使OV=1;否则OV=0 35.DJNZ Rn,rel指令名称:寄存器减1条件转移指令指令代码:D8H~DFH指令功能:寄存器内容减1.不为0转移;为0顺序执行操作内容:Rn←(Rn)-1,n=0~7若(Rn)≠0,则PC←(PC)+2+rel若(Rn)=0,则PC←(PC)+2字节数: 2机械周期:236.DJNZ direct,rel指令名称:直接寻址单元减1条件转移指令指令代码:D5H指令功能:内部RAM低128单元内容减1,不为0转移,为0顺序执行操作内容:direct←(direct)-1若(direct)≠0,则PC←(PC)+3+rel若(direct)= 0,则PC←(PC)+3字节数:3机械周期:237.INC A指令名称:累加器加1指令指令代码:04H指令功能:累加器内容加1操作内容:A←(A)+1字节数:1机械周期:138.INC Rn指令名称:寄存器加1指令指令代码:08H~0FH指令功能:寄存器内容加1操作内容:Rn←(Rn)+1,n=0~7字节数:1机械周期:139.INC direct指令名称:直接寻址单元加1指令指令代码:05H指令功能:内部RAM低128单元或专用寄存器内容加1操作内容:direct←(direct)+1字节数:2机械周期:140.INC @Ri指令名称:间接寻址单元加1指令指令代码:06H~07H指令功能:内部RAM低128单元内容加1操作内容:(Ri) ←((Ri))+1.i=0,1字节数:1机械周期:141.INC DPTR指令名称:16位数据指针加1指令指令代码:A3H指令功能:数据指针寄存器DPTR内容加1操作内容:DPTR←(DPTR)+1字节数:1机械周期:242.JB bit rel指令名称:位条件转移指令指令代码:20H指令功能:根据指定位的状态,决定程序是否转移.若为1则转移,否则顺序执行操作内容:若(bit)=1,则PC←(PC)+3+rel若(bit) ≠1,则PC←(PC)+3字节数:3机械周期:243.JBC bit rel指令名称:位条件转移清零指令指令代码:10H指令功能:对指定位的状态进行测试.若为1则把该位清零并进行转移;否则顺序执行操作内容:若(bit)=1,则PC←(PC)+3+rel,bit←0若(bit) ≠1,则PC←(PC)+3字节数:3机械周期:244.JC rel指令名称:累加位条件转移指令指令代码:40H指令功能:根据累加位(C)的状态决定程序是否转移,若为1则转移,否则顺序顺序执行操作内容:若(C)=1,则PC←(PC)+2+rel若(C)≠1,则PC←(PC)+2字节数:2机械周期:245.JMP @A+DPTR指令名称:无条件间接转移指令指令代码:73H指令功能:A内容与DPTR内容相加作为转移目的地址,进行程序转移操作内容:PC←(A)+(DPTR)字节数:1机械周期:246.JNB bit rel指令名称:位条件转移指令指令代码:30H指令功能:根据指定位的状态,决定程序是否转移.若为0则转移,否则顺序执行操作内容:若(bit)=0,则PC←(PC)+3+rel若(bit) ≠0,则PC←(PC)+3字节数:3机械周期:247.JNC rel指令名称:累加位条件转移指令指令代码:50H指令功能:根据累加位(C)的状态决定程序是否转移,若为0则转移,否则顺序顺序执行操作内容:若(C)=0,则PC←(PC)+2+rel若(C)≠0,则PC←(PC)+2字节数:2机械周期:248.JNZ rel指令名称:判0转移指令指令代码:70H指令功能:累加位 (A)的内容不为0,则程序转移;否则顺序执行操作内容:若(A) ≠0,则PC←(PC)+2+rel若(A)=0,则PC←(PC)+2字节数:2机械周期:249.JZ rel指令名称:判0转移指令指令代码:60H指令功能:累加位 (A)的内容为0,则程序转移;否则顺序执行操作内容:若(A) = 0,则PC←(PC)+2+rel若(A) ≠0,则PC←(PC)+2字节数:2机械周期:250.LCALL addr16指令名称:长调用指令指令代码:12H指令功能:按指令给定地址进行子程序调用操作内容:PC←(PC)+3SP←(SP)+1(SP) ←(PC)7~0SP←(SP)+1(SP) ←(PC)15~8PC←addr16字节数:3机械周期:2使用说明:在职6KB的范围内调用子程序51.LJMP addr16指令名称:长转移指令指令代码:02H指令功能:使程序按指定地址进行无条件转移操作内容:PC←addr16字节数:3机械周期:252.MOV A,Rn指令名称:寄存器数据传送指令指令代码:E8H~EFH指令功能:寄存器内容送累加器操作内容:A←(Rn),n=0~7字节数:1机械周期:153.MOV A,direct指令名称:直接寻址数据传送指令指令代码:E5H指令功能:内部RAM低128(书上说的是126)单元或专用寄存器内容送累加器操作内容:A←(direct)字节数:2机械周期:154.MOV A ,@Ri指令名称:间接寻址数据传送指令指令代码:E6H~E7H指令功能:内部低128单元内容送累加器 (我认为描述不当)操作内容:A←((Ri)),i=0,1字节数:1机械周期:155.MOV A,#data指令名称:立即数据传送指令指令代码:74H指令功能:立即数送累加器操作内容:A←data字节数:2机械周期:156.MOV Rn,A指令名称:累加器数据传送指令指令代码:F8H~FFH指令功能:累加器内容送寄存器操作内容:Rn←(A)字节数:1机械周期:157.MOV Rn, direct指令名称:直接寻址数据传送指令指令代码:A8H~AFH指令功能:内部RAM低128单元或专用寄存器内容送累加器操作内容:Rn←(direct),n=0~7字节数:2机械周期:2指令名称:立即数传送指令指令代码:78H~7FH指令功能:立即数送寄存器操作内容:Rn←data,n=0~7字节数:2机械周期:159.MOV direct,A指令名称:累加器数据传送指令指令代码:F5H指令功能:累加器内容传送内部RAM低128单元或专用寄存器操作内容:direct←(A)字节数:2机械周期:160. MOV direct,Rn指令名称:寄存器数据传送指令指令代码:88H~8FH指令功能:寄存器内容传送内部RAM低128单元或专用寄存器操作内容:direct←(Rn),n=0~7字节数:2机械周期:261.MOV direct2, direct1指令名称:直接寻址数据传送指令指令代码:85H指令功能:内部RAM低128(书上是123)单元或专用寄存器之间相互传送操作内容:direct2←(direct1)字节数:3机械周期:262.MOV direct,@Ri指令名称:间接寻址数据传送指令指令代码:86H~87H指令功能:内部RAM低128单元内容传送内部RAM低128单元或专用寄存器操作内容:direct←((Ri)),i=0.1字节数:2机械周期:263.MOV direct,#data指令名称:立即数传送指令指令代码:75H指令功能:立即数送内部RAM低128单元或专用寄存器操作内容:direct←data字节数:3机械周期:2指令名称:累加器数据传送指令指令代码;F6H~F7H指令功能:累加器内容送内部RAM低128单元操作内容:(Ri) ←(A),i=0,1字节数:1机械周期:165.MOV @Ri, direct指令名称:直接寻址数据传送指令指令代码;A6H~A7H指令功能: 内部RAM低128单元或专用寄存器内容送内部RAM低128单元操作内容:字节数:2机械周期:266.MOV @Ri,#data指令名称:立即数传送指令指令代码;76H~77H指令功能:立即数送内部RAM低128单元操作内容: (Ri) ←data,i=0,1字节数:2机械周期:167.MOV C,bit指令名称:位数据传送指令指令代码;A2H指令功能:内部RAM可寻址位或专用寄存器的位状态送累加位C操作内容:C←(bit)字节数:2机械周期:168.MOV bit,C指令名称:累加位数据传送指令指令代码;92H指令功能: 累加位(书上写的是器)状态送内部RAM可寻址位或专用寄存器的指定位操作内容: bit←(C)字节数:2机械周期:269.MOV DPTR,#datal6指令名称:十六位数据传送指令指令代码;90H指令功能:十六位立即数送数据指针操作内容:DPH←data15~8DPL←data7~0字节数:3机械周期:270.MOVC A,@A+DPTR指令名称: 程序存储器读指令指令代码:93H指令功能:读程序存储器单元内容送累加器操作内容:A←(A)+(DPTR)字节数:1机械周期:2使用说明:变址寄存器A内容加基址寄存器DPTR内容时,低8位产生的进位直接加到高位,不影响进位标志71.MOVC A,@A+PC指令名称: 程序存储器读指令指令代码:83H指令功能:读程序存储器内容送累加器操作内容:A←((A)+(PC))字节数:1机械周期:2使用说明: 变址寄存器A内容加基址寄存器DPTR内容时,低8位产生的进位直接加到高位,不影响进位标志72.MOVX A,@Ri指令名称:寄存器间接寻址外部RAM读指令指令代码:E2H~E3H指令功能:读外部RAM低256单元数据送累加器字节数:1机械周期;273.MOVX A,@DPTR指令名称:数据指针间接寻址外部RAM读指令指令代码:E0H指令功能:读外部RAM单元数据送累加器操作内容:A←((DPTR))字节数:1机械周期:274.MOVX @Ri,A指令名称:寄存器间接寻址外部RAM写指令指令代码:F2H~F3H指令功能:把累加器内容写入外部RAM低256单元数据操作内容:(Ri) ←(A),i=0,1字节数:1机械周期;275.MOVX @DPTR,A指令名称:数据指针间接寻址外部RAM写指令指令代码:F0H指令功能:把累加器内容写入外部RAM单元操作内容: DPTR←(A)字节数:1 , 机械周期:276.MUL AB指令名称:乘法指令指令代码:A4H指令功能:实现8位无符号数乘法运算.两个乘数分别放在累加器A和寄存器B中.乘积为16,低8位在B中,高8位在A中操作内容:AB←(A)×(B)字节数:1机械周期:4影响标志位:进位标志复位.若乘积大于255,则OV标志置位;否则复位77.NOP指令名称: 空操作指令指令代码:00H指令功能:不执行任何操作,常用于产生一个周期的时间延迟操作内容:PC←(PC)+1字节数:1机械周期:178.ORL A,Rn指令名称:逻辑或操作指令指令代码:48H~4FH指令功能:累加器内容与寄存器内容进行逻辑或操作操作内容:A1(书上在个1) ←(A)∨(Rn),n=0~7字节数:1机械周期:179.ORL A,direct指令名称:指令代码:45H操作内容: A ←(A)∨(direct)字节数:2机械周期:180.ORL A,@Ri指令名称: 逻辑或操作指令指令代码:46H~47H指令功能:累加器内容与内部RAM低128单元内容进行逻辑或操作操作内容: A ←(A)∨((Ri)),i=0,1字节数:1机械周期:181.ORL A,#data指令名称: 逻辑或操作指令指令代码:44H指令功能:累加器内容与立即数进行逻辑或操作操作内容: A ←(A)∨data字节数:2机械周期:182.ORL direct,A指令名称:逻辑或操作指令指令代码:42H指令功能:内部RAM低128单元或专用寄存器内容与累加器内容进行逻辑或操作操作内容:direct←(direct)∨(A)字节数:2机械周期:183.ORL direct,#data指令名称:逻辑或操作指令指令代码:43H指令功能:内部RAM低128单元或专用寄存器内容与立即数进行逻辑或操作操作内容:direct←(direct)∨(data )字节数:3机械周期:284.ORL C,bit指令名称:位逻辑或操作指令指令代码:72H指令功能:累加位C的状态与内部RAM可寻址位或专用寄存器指定位进行逻辑或操作操作内容:C←(C)∨(bit )字节数:2机械周期:285.ORL C,/bit指令名称:位反逻辑或操作指令指令代码:A0H指令功能:累加位C的状态与内部RAM可寻址位或专用寄存器指定位的反进行逻辑或操作操作内容:C←(C)∨(bit 非)字节数:2机械周期:2使用说明:指定位的状态取反后进行逻辑或操作,但并不改变指定位的原来状态86.POP direct指令名称:出栈指令指令代码:D0H指令功能:堆栈栈顶单元的内容送内部RAM低128单元或专用寄存器操作内容:direct←(SP)字节数:2机械周期:287.PUSH direct指令名称:进栈指令指令代码:C0H指令功能:内部RAM低128单元或专用寄存器内容送堆栈栈顶单元操作内容:SP←(SP)+1(SP)←(direct)字节数:2;机械周期:2指令名称:子程序返回指令指令代码:22H指令功能:子程序返回操作内容:PC15~8←((SP))SP←(SP)-1PC7~0←((SP))SP←(SP)-1字节数:1机械周期:289.RETL指令名称:中断返回指令指令代码:32H指令功能:中断服务程序返回操作内容:PC15~8←((SP))SP←(SP)-1PC7~0←((SP))SP←(SP)-1字节数:1机械周期:290.RL A指令名称:循环左移指令指令代码:23H指令功能:累加器内容循环左移一位操作内容:An+1←(An);n=0~6A0←(A7)字节数:1机械周期:191.RLC A指令名称:带进位循环左移指令指令代码:33H指令功能:累加器内容连同进位标志位循环左移一位操作内容:An+1(书上写的是减1)←(An);n=0~6 A0←(C)C←(A7)字节数:1机械周期:192.RR A指令名称:循环右移指令指令代码:03H指令功能:累加器内容循环右移一位操作内容:An←(An+1);n=0~6A7←(A0)字节数:1;机械周期:1指令名称:带进位循环右移指令指令代码:13H指令功能:累加器内容连同进位标志位循环右移一位操作内容:An←(An+1);n=0~6A7←(C)C←(A0)字节数:1机械周期:194.SETB c指令名称:进位标志置位指令指令代码:D3H指令功能: 进位标志置位操作内容:C←1字节数:1机械周期:195.SETB bit指令名称:直接寻址位置位指令指令代码:D2H指令功能: 内部RAM可寻址位或专用寄存器指定位置位操作内容:bit←1字节数:2机械周期:196.SJMP rel指令名称:短转移指令指令代码:80H指令功能:按指令提供的偏移量计算偏移的目的地址,实现程序的无条件相对转移操作内容:PC←(PC)+2PC←(PC)+rel字节数:2机械周期:2使用说明:偏移量是8位二进制补码数,可实现程序的双向转移,其转移范围是(PC-126) ~(PC+129).其中PC值为本指令的地址.97.SUBB A,Rn指令名称:寄存器寻址带进位减法指令指令代码:98H~9FH指令功能:累加器内容减寄存器内容和进位标志位内容操作内容:A←(A)-(Rn)-(C),n=0~7字节数:1机械周期:1影响标志位:当够减时,进位标志位复位;不够减时,进位标志置位.当位3发生借位时,AC置位,否则AC复位.当位6及位7不同时发生借位时,OV置位,否则OV复位98.SUBB A, direct指令名称:直接寻址带进位减法指令指令代码:95H指令功能:累加器内容减内部RAM低128单元或专用寄存器和进位标志位内容操作内容: A←(A)-( direct)-(C)字节数:2机械周期:1影响标志位:同SUBB A,Rn指令(序号97)99.SUBB A,@Ri指令名称: 间接寻址带进位减法指令指令代码:96H~97H指令功能: 累加器内容减内部RAM低128单元内容及进位标志位内容操作内容: A←(A)-((Ri))-(C),i=0,1字节数:1机械周期:1影响标志位:同SUBB A,Rn指令(序号97)100.SUBB A,#data指令名称:立即数带进位减法指令指令代码:94H指令功能:累加器内容减立即数及进位标志内容操作内容: A←(A)-data -(C)字节数:2机械周期:1影响标志位:同SUBB A,Rn指令(序号97)101.SWAP A指令名称:累加器高低半字节交换指令指令代码:C4H指令功能:累加器内容的高4位与低4位交换操作内容:(A) 7~4交换(A)3~0字节数:1机械周期:1102.XCH A,Rn指令名称:寄存器寻址字节交换指令指令代码:C8H~CFH指令功能: 寄存器寻址字节交换(书上没有交换二字)操作内容:(A)交换(Rn);n=0~7字节数:1机械周期:1103.XCH A, direct指令名称:直接寻址字节交换指令指令代码:C5H指令功能:累加器内容与内部低128单元或专用寄存器内容交换操作内容:(A)交换(direct)字节数:2; 机械周期:1104.XCH A,Ri指令名称: 间接寻址字节交换指令指令代码:C6H~C7H指令功能:累加器内容与内部RAM低128单元内容交换操作内容: (A)交换((Ri));i=0,1字节数:1机械周期:1105.XCHD A,@Ri指令名称:半字节交换指令指令代码:D6H~D7H指令功能: 累加器内容低4位与内部RAM低128单元内容低4位交换操作内容: (A)3~0交换((Ri))3~0;i=0,1字节数:1机械周期:1106.XRL A,Rn指令名称:逻辑异或操作指令指令代码:68H~6FH指令功能:累加器内容与寄存器内容进行逻辑异或操作操作内容:A←(A)异或(Rn);n=0←7字节数:1机械周期:1107.XRL A, direct指令名称: 逻辑异或操作指令指令代码:65H指令功能: 累加器内容与内部RAM低128单元或专用寄存器内容进行逻辑异或操作操作内容: A←(A)异或(direct)字节数:2机械周期:1108.XRL A,@Ri指令名称: 逻辑异或指令指令代码:66H~67H指令功能: 累加器内容与内部RAM低128单元内容进行逻辑异或操作操作内容: A←(A)异或(Ri);i=0,1字节数:1机械周期:1109.XTL A,#data指令名称: 逻辑异或指令指令代码:64H指令功能: 累加器内容与立即数进行逻辑异或操作操作内容: A←(A)异或data字节数:1机械周期:1110 .XRL direct, A指令名称: 逻辑异或操作指令指令代码:62H指令功能: 累加器内容与内部RAM低128单元或专用寄存器内容进行逻辑异或操作操作内容: direct←(direct)异或(A)字节数:2机械周期:1111 .XRL direct, #data指令名称: 逻辑异或操作指令指令代码:63H指令功能:内部RAM低128单元或专用寄存器内容与立即数进行逻辑异或操作操作内容: direct←(direct)异或(data)字节数:3机械周期:2。
第1章 单片机8051基础知识
计算机科学与技术系
外部时钟源
1.1 单片机的典型结构
外部事件计数
振荡器和时序 OSC
程序存储器 4KBROM
数据存储器 256B RAM/SFR
2×16位 定时器/计数器
89C51 CPU 64KB 总线 扩展控制器 内中断 外中断 控制 并行口 图 1-1 AT89S51/S52的基本组成功能框图 串行通信 可编程全双工 串行口
2.低128字节RAM ·通用工作寄存器区 ·位寻址区 ·用户RAM区 3.高128字节用户RAM区 为特殊功能寄存器SFR AT89S52有256字节 4.片外数据存储器的结构及操作 片外数据存储器和外围扩展电路统一编址,可寻址范围为64 KB。 片外数据存储器寻址空间的数据传送使用专门的MOVX指令。片外数据存储器只能 和累加器A交换数据,通过地址指针DPTR或工作寄存器Ri间接寻址。
计算机科学与技术系
第1章 单片机8051硬件基础知识
教学目的:了解80C51系列单片机的内部结构、工作 原理 、存储器结构、基本电路、内部资源等硬件 内容。
教学重点:1.内部主要组成及工作原理 ; 2.存储器结构特点; 3.I/O 的复用结构及应用特点; 4.时序及复位电路的作用。 教学难点: 1.特殊功能寄存器的作用; 2.堆栈及堆栈指针的作用; 3.单片机内部资源(定时器、中断、串行口)
1.3
单片机的存储器
1.3.1 存储器结构和地址空间
FFFF 64KB RAM (I/O) 89S51片内存储器 0FFF 100 FF 00 片外数据存储器 FF 80 7F 00
计算机科学与技术系 数据和程序 分开的结 构,称为 哈弗结构
FFFF 64KB ROM 1000 0FFF
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
原作:平凡的单片机单片机教程第一课:单片机概述1、何谓单片机一台能够工作的计算机要有这样几个部份构成:CPU(进行运算、控制)、RAM(数据存储)、ROM(程序存储)、输入/输出设备(例如:串行口、并行输出口等)。
在个人计算机上这些部份被分成若干块芯片,安装一个称之为主板的印刷线路板上。
而在单片机中,这些部份,全部被做到一块集成电路芯片中了,所以就称为单片(单芯片)机,而且有一些单片机中除了上述部份外,还集成了其它部份如A/D,D/A等。
天!PC中的CPU一块就要卖几千块钱,这么多东西做在一起,还不得买个天价!再说这块芯片也得非常大了。
不,价格并不高,从几元人民币到几十元人民币,体积也不大,一般用40脚封装,当然功能多一些单片机也有引脚比较多的,如68引脚,功能少的只有10多个或20多个引脚,有的甚至只8只引脚。
为什么会这样呢?功能有强弱,打个比方,市场上面有的组合音响一套才卖几百块钱,可是有的一台功放机就要卖好几千。
另外这种芯片的生产量很大,技术也很成熟,51系列的单片机已经做了十几年,所以价格就低了。
既然如此,单片机的功能肯定不强,干吗要学它呢?话不能这样说,实际工作中并不是任何需要计算机的场合都要求计算机有很高的性能,一个控制电冰箱温度的计算机难道要用PIII?应用的关键是看是否够用,是否有很好的性能价格比。
所以8051出来十多年,依然没有被淘汰,还在不断的发展中。
2、MCS51单片机和8051、8031、89C51等的关系我们平常老是讲8051,又有什么8031,现在又有89C51,它们之间究竟是什么关系? MCS51是指由美国INTEL公司(对了,就是大名鼎鼎的INTEL)生产的一系列单片机的总称,这一系列单片机包括了好些品种,如8031,8051,8751,8032,8052,8752等,其中8051是最早最典型的产品,该系列其它单片机都是在8051的基础上进行功能的增、减、改变而来的,所以人们习惯于用8051来称呼MCS51系列单片机,而8031是前些年在我国最流行的单片机,所以很多场合会看到8031的名称。
INTEL 公司将MCS51的核心技术授权给了很多其它公司,所以有很多公司在做以8051为核心的单片机,当然,功能或多或少有些改变,以满足不同的需求,其中89C51就是这几年在我国非常流行的单片机,它是由美国ATMEL 公司开发生产的。
以后我们将用89C51来完成一系列的实验。
单片机教程第二课:单片机的内部、外部结构(一)一、单片机的外部结构拿到一块芯片,想要使用它,首先必须要知道怎样连线,我们用的一块称之为89C51的芯片,下面我们就看一下如何给它连线。
1、电源:这当然是必不可少的了。
单片机使用的是5V电源,其中正极接40引脚,负极(地)接20引脚。
2、振蒎电路:单片机是一种时序电路,必须提供脉冲信号才能正常工作,在单片机内部已集成了振荡器,使用晶体振荡器,接18、19脚。
只要买来晶振,电容,连上就可以了,按图1接上即可。
3、复位引脚:按图1中画法连好,至于复位是何含义及为何需要复要复位,在单片机功能中介绍。
4、 EA引脚:EA引脚接到正电源端。
至此,一个单片机就接好,通上电,单片机就开始工作了。
我们的第一个任务是要用单片机点亮一只发光二极管LED,显然,这个LED必须要和单片机的某个引脚相连,否则单片机就没法控制它了,那么和哪个引脚相连呢?单片机上除了刚才用掉的5个引脚,还有35个,我们将这个LED和1脚相连。
(见图1,其中R1是限流电阻)按照这个图的接法,当1脚是高电平时,LED不亮,只有1脚是低电平时,LED才发亮。
因此要1脚我们要能够控制,也就是说,我们要能够让1引脚按要求变为高或低电平。
即然我们要控制1脚,就得给它起个名字,总不能就叫它一脚吧?叫它什么名字呢?设计51芯片的INTEL公司已经起好了,就叫它P1.0,这是规定,不可以由我们来更改。
图1名字有了,我们又怎样让它变'高'或变'低'呢?叫人做事,说一声就可以,这叫发布命令,要计算机做事,也得要向计算机发命令,计算机能听得懂的命令称之为计算机的指令。
让一个引脚输出高电平的指令是SETB,让一个引脚输出低电平的指令是CLR。
因此,我们要P1.0输出高电平,只要写SETB P1.0,要P1.0输出低电平,只要写 CLR P1.0就可以了。
现在我们已经有办法让计算机去将P10输出高或低电平了,但是我们怎样才能计算机执行这条指令呢?总不能也对计算机也说一声了事吧。
要解决这个问题,还得有几步要走。
第一,计算机看不懂SETB CLR之类的指令,我们得把指令翻译成计算机能懂的方式,再让计算机去读。
计算机能懂什么呢?它只懂一样东西——数字。
因此我们得把SETB P1.0变为(D2H,90H ),把CLR P1.0变为(C2H,90H ),至于为什么是这两个数字,这也是由51芯片的设计者--INTEL规定的,我们不去研究。
第二步,在得到这两个数字后,怎样让这两个数字进入单片机的内部呢?这要借助于一个硬件工具"编程器"。
我们将编程器与电脑连好,运行编程器的软件,然后在编缉区内写入(D2H,90H)见图2,写入……好,拿下片子,把片子插入做好的电路板,接通电源……什么?灯不亮?这就对了,因为我们写进去的指令就是让图2P10输出高电平,灯当然不亮,要是亮就错了。
现在我们再拨下这块芯片,重新放回到编程器上,将编缉区的内容改为(C2H,90H),也就是CLR P1.0,写片,拿下片子,把片子插进电路板,接电,好,灯亮了。
因为我们写入的()就是让P10输出低电平的指令。
这样我们看到,硬件电路的连线没有做任何改变,只要改变写入单片机中的内容,就可以改变电路的输出效果。
三、单片机内部结构分析我们来思考一个问题,当我们在编程器中把一条指令写进单片要内部,然后取下单片机,单片机就可以执行这条指令,那么这条指令一定保存在单片机的某个地方,并且这个地方在单片机掉电后依然可以保持这条指令不会丢失,这是个什么地方呢?这个地方就是单片机内部的只读存储器即ROM(READ ONLY MEMORY)。
为什么称它为只读存储器呢?刚才我们不是明明把两个数字写进去了吗?原来在89C51中的ROM是一种电可擦除的ROM,称为FLASH ROM,刚才我们是用的编程器,在特殊的条件下由外部设备对ROM 进行写的操作,在单片机正常工作条件下,只能从那面读,不能把数据写进去,所以我们还是把它称为ROM。
单片机教程第三课:几个基本概念数的本质和物理现象。
我们知道,计算机可以进行数学运算,这可令我们非常的难以理解,计算机吗,我们虽不了解它的组成,但它总只是一些电子元器件,怎么可以进行数学运算呢?我们做数学题如37+45是这样做的,先在纸上写37,然后在下面写45,然后大脑运算,最后写出结果,运算的原材料:37、45和结果:82都是写在纸上的,计算机中又是放在什么地方呢?为了解决这个问题,先让我们做一个实验:这里有一盏灯,我们知道灯要么亮,要么不亮,就有两种状态,我们可以用’0’和’1’来代替这两种状态,规定亮为’1’,不亮为’0’。
现在放上两盏灯,一共有几种状态呢?我们列表来看一下:状态表达0 0 0 1 1 0 1 1请大家自已写上3盏灯的情况000 001 010 011 100 101 110 111我们来看,这个000,001,101 不就是我们学过的的二进制数吗?本来,灯的亮和灭只是一种物理现象,可当我们把它们按一按的顺序排更好后,灯的亮和灭就代表了数字了。
让我们再抽象一步,灯为什么会亮呢?看电路1,是因为输出电路输出高电平,给灯通了电。
因此,灯亮和灭就可以用电路的输出是高电平还是低电平来替代了。
这样,数字就和电平的高、低联系上了。
(请想一下,我们还看到过什么样的类似的例子呢?(海军之)灯语、旗语,电报,甚至红、绿灯)位的含义:通过上面的实验我们已经知道:一盏灯亮或者说一根线的电平的高低,可以代表两种状态:0和1。
实际上这就是一个二进制位,因此我们就把一根线称之为一“位”,用BIT表示。
字节的含义:一根线可以表于0和1,两根线可以表达00,01,10,11四种状态,也就是可以表于0到3,而三根可以表达0-7,计算机中通常用8根线放在一起,同时计数,就可以表过到0-255一共256种状态。
这8根线或者8位就称之为一个字节(BYTE)。
不要问我为什么是8根而不是其它数,因为我也不知道。
(计算机世界是一个人造的世界,不是自然界,很多事情你无法问为什么,只能说:它是一种规定,大家在以后的学习过程中也要注意这个问题)存储器的工作原理:1、存储器构造存储器就是用来存放数据的地方。
它是利用电平的高低来存放数据的,也就是说,它存放的实际上是电平的高、低,而不是我们所习惯认为的1234这样的数字,这样,我们的一个谜团就解开了,计算机也没什么神秘的吗。
图3图2让我们看图2。
这是一个存储器的示意图:一个存储器就象一个个的小抽屉,一个小抽屉里有八个小格子,每个小格子就是用来存放“电荷”的,电荷通过与它相连的电线传进来或释放掉,至于电荷在小格子里是怎样存的,就不用我们操心了,你可以把电线想象成水管,小格子里的电荷就象是水,那就好理解了。
存储器中的每个小抽屉就是一个放数据的地方,我们称之为一个“单元”。
有了这么一个构造,我们就可以开始存放数据了,想要放进一个数据12,也就是00001100,我们只要把第二号和第三号小格子里存满电荷,而其它小格子里的电荷给放掉就行了(看图3)。
可是问题出来了,看图2,一个存储器有好多单元,线是并联的,在放入电荷的时候,会将电荷放入所有的单元中,而释放电荷的时候,会把每个单元中的电荷都放掉,这样的话,不管存储器有多少个单元,都只能放同一个数,这当然不是我们所希望的,因此,要在结构上稍作变化,看图2,在每个单元上有个控制线,我想要把数据放进哪个单元,就给一个信号这个单元的控制线,这个控制线就把开关打开,这样电荷就可以自由流动了,而其它单元控制线上没有信号,所以开关不打开,不会受到影响,这样,只要控制不同单元的控制线,就可以向各单元写入不同的数据了,同样,如果要某个单元中取数据,也只要打开相应的控制开关就行了。
2、存储器译码那么,我们怎样来控制各个单元的控制线呢?这个还不简单,把每个单元元的控制线都引到集成电路的外面不就行了吗?事情可没那么简单,一片27512存储器中有65536个单元,把每根线都引出来,这个集成电路就得有6万多个脚?不行,怎么办?要想法减少线的数量。
我们有一种方法称这为译码,简单介绍一下:一根线可以代表2种状态,2根线可以代表4种状态,3根线可以代表几种,256种状态又需要几根线代表?8种,8根线,所以65536种状态我们只需要16根线就可以代表了。