8051单片机教程
- 格式:pdf
- 大小:1.09 MB
- 文档页数:70
8051单片机程序设计8051单片机是一种广泛应用于嵌入式系统中的微控制器。
它由英特尔公司在20世纪80年代推出,现在已经成为了嵌入式系统设计中最常用的单片机之一。
本文将介绍8051单片机程序设计的基本原理和方法。
8051单片机程序设计主要涉及到三个方面:硬件设计、软件设计和系统调试。
首先,我们需要通过硬件设计来搭建一个适合单片机工作的电路。
通常,我们会使用外部晶振来提供时钟信号,以确保单片机能够按照我们预期的速度运行。
此外,我们还需要为单片机提供适当的电源和外部存储器。
这些硬件设计的要点在此不再赘述,读者可以参考相关资料深入了解。
在硬件设计完成后,我们就可以开始编写单片机的软件了。
8051单片机程序设计主要使用汇编语言或C语言进行编程。
汇编语言是一种底层的机器语言,直接操作单片机的寄存器和指令集。
相比之下,C语言更加高级,提供了许多方便的编程工具和函数库。
因此,大多数人更倾向于使用C语言进行单片机程序设计。
无论我们选择使用汇编语言还是C语言进行编程,我们都需要掌握8051单片机的指令集。
8051单片机的指令集包括了大量的指令,可以进行各种运算、逻辑判断和数据传输等操作。
我们需要根据具体的需求选择合适的指令进行编程。
例如,如果我们需要将一个数值存储到内存中,我们可以使用MOV指令来实现。
而如果我们需要进行条件判断,我们可以使用JMP或JZ等分支指令来实现。
在编写单片机程序时,我们还需要注意内存的分配和使用。
由于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口功能和第二功能。
内容:西安科技大学科技创新实验班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 进行非侵入式(不占用片内资源)、全速、在系统调试。
该调试系统支持观察和修改存储器和寄存器,支持断点、单步、运行和停机命令。
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等。
一、航标灯程序控制单片机mcs_8051汇编语言程序航标灯实操目的:1、学会创建工程、源文件及关联;2、学会构建程序;3、学会调试程序,单步、跟踪、连续运行、运行到光标行。
汇编程序:ORG 0000HLJMP MAINCLR P1.0LCALL DELAYSETB P1.0LCALL DELAYRETIMAIN: MOV IE,#10000001BLJMP $DELAY: MOV R7,#8D1: MOV R6,#200D2: MOV R5,#250DJNZ R5,$DJNZ R6,D2DJNZ R7,D1RETEND;注:低电平灯亮二、循环灯控制程序单片机mcs_8051汇编语言程序要求:低电平灯亮,高电平灯灭,向右循环3遍后,再向左循环4遍。
汇编程序如下:ORG 0000HMOV R1,#24MOV A,#01111111BLP1: MOV P1,ALCALL DELAYRR ADJNZ R1,LP1MOV R1,#32MOV A,#11111110BLP2: MOV P1,ALCALL DELAYRL ADJNZ R1,LP2MOV P1,#11111111BLJMP $DELAY:MOV R7,#10D1: MOV R6,#200D2: MOV R5,#250DJNZ R5,$DJNZ R6,D2DJNZ R7,D1RETEND三、霓虹灯控制程序单片机mcs_8051汇编语言程序要求:低电平灯亮,高电平灯灭,从两侧向内闪烁5遍。
汇编程序(1):START: MOV R1,#5LP1: MOV R0,#0MOV DPTR,#TABLP2: MOV A,R0MOVC A,@A+DPTRCPL AMOV P1,ALCALL DELAYINC R0CJNE R0,#5,LP2DJNZ R1,LP1MOV P1,#00HSJMP $DELAY: MOV R7,#5D1: MOV R6,#200D2: MOV R5,#250DJNZ R5,$DJNZ R6,D2DJNZ R7,D1RETTAB: DB 81H,42H,24H,18H,00HEND汇编程序(2):START: MOV R1,#5LP1: MOV R0,#0MOV DPTR,#TABLP2: MOV A,R0MOVC A,@A+DPTRMOV P1,ALCALL DELAYINC R0CJNE R0,#5,LP2DJNZ R1,LP1MOV P1,#0FFHSJMP $DELAY: MOV R7,#5D1: MOV R6,#200D2: MOV R5,#250DJNZ R5,$DJNZ R6,D2DJNZ R7,D1RETTAB: DB 7EH,0BDH,0DBH,0E7H,0FFHEND。
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单片机有了一个初步的了解,并有了一定的学习和使用指导。
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,使其点亮。
实验一:扩展存储器读写实验一.实验要求编制简单程序,对实验板上提供的外部存贮器(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口输入、输出实验一.实验要求口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。
第一课:初识单片机记得在我们网站的论坛里,曾经有一位网友问了一个问题,什么是单片机?单片机是怎样的一个东东?单片机可以实现些什么功能?它主要应用在哪些领域?在我们单片机自学网的网上课堂的第一节课,我们就上面的这些问题与大家先做一个初步的探讨。
在进入课程的讲解之前,大家先一起来看看单片机吧。
下图是一片40脚的89C51及一片20脚的89C2051的单片机。
单片机的外形从上图中我们已初步认识了,那么什么叫单片机呢?所谓单片机,通俗的来讲,就是把中央处理器CPU(Central Processing Unit),存储器(memory),定时器,I/O(Input/Output)接口电路等一些计算机的主要功能部件集成在一块集成电路芯片上的微型计算机。
单片机又称为“微控制器MCU”。
中文“单片机”的称呼是由英文名称“Single Chip Microcomputer”直接翻译而来的。
单片机的主要分类:1、按应用领域可分为:家电类,工控类,通信类,个人信息终端类等等;2、按通用性可分为:通用型和专用型。
通用型单片机的主要特点是:内部资源比较丰富,性能全面,而且通用性强,可履盖多种应用要求。
所谓资源丰富就是指功能强。
性能全面通用性强就是指可以应用在非常广泛的领域。
通用型单片机的用途很广泛,使用不同的接口电路及编制不同的应用程序就可完成不同的功能。
小到家用电器仪器仪表,大到机器设备和整套生产线都可用单片机来实现自动化控制。
专用型单片机的主要特点是:针对某一种产品或某一种控制应用而专门设计的,设计时已使结构最简,软硬件应用最优,可靠性及应用成本最佳。
专用型单片机用途比较专一,出厂时程序已经一次性固化好,不能再修该的单片机。
例如电子表里的单片机就是其中的一种。
其生产成本很低。
在我们的这个网上课堂中,介绍的是MCS-51系列单片机,MCS-51单片机也是一种通用单片机,其结构及原理对所有的单片机都适用。
3、按总线结构可分为总线型和非总线型。
原作: 平凡单片机教程第一课:单片机概述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的名称。
数据传递类指令(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单片机指令说明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。
51单片机定时器设置51单片机,也被称为8051微控制器,是一种广泛应用的嵌入式系统。
它具有4个16位的定时器/计数器,可以用于实现定时、计数、脉冲生成等功能。
通过设置相应的控制位和计数初值,可以控制定时器的启动、停止和溢出等行为,从而实现精确的定时控制。
确定应用需求:首先需要明确应用的需求,包括需要定时的时间、计数的数量等。
根据需求选择合适的定时器型号和操作模式。
设置计数初值:根据需要的定时时间,计算出对应的计数初值。
计数初值需要根据定时器的位数和时钟频率进行计算。
设置控制位:控制位包括定时器控制寄存器(TCON)和中断控制寄存器(IE)。
通过设置控制位,可以控制定时器的启动、停止、溢出等行为,以及是否开启中断等功能。
编写程序代码:根据需求和应用场景,编写相应的程序代码。
程序代码需要包括初始化代码和主循环代码。
调试和测试:在完成设置和编程后,需要进行调试和测试。
可以通过观察定时器的状态和输出结果,检查定时器是否按照预期工作。
计数初值的计算要准确,否则会影响定时的精度。
控制位的设置要正确,否则会导致定时器无法正常工作。
需要考虑定时器的溢出情况,以及如何处理溢出中断。
需要考虑定时器的抗干扰能力,以及如何避免干扰对定时精度的影响。
需要根据具体应用场景进行优化,例如调整计数初值或控制位等,以达到更好的性能和精度。
51单片机的定时器是一个非常实用的功能模块,可以用于实现各种定时控制和计数操作。
在进行定时器设置时,需要注意计数初值的计算、控制位的设置、溢出处理以及抗干扰等问题。
同时需要根据具体应用场景进行优化,以达到更好的性能和精度。
在实际应用中,使用51单片机的定时器可以很方便地实现各种定时控制和计数操作,为嵌入式系统的开发提供了便利。
在嵌入式系统和微控制器领域,51单片机因其功能强大、使用广泛而备受。
其中,定时器中断功能是51单片机的重要特性之一,它为系统提供了高精度的定时和计数能力。
本文将详细介绍51单片机定时器中断的工作原理、配置和使用方法。
实验一:扩展存储器读写实验一.实验要求编制简单程序,对实验板上提供的外部存贮器(62256)进行读写操作。
二.实验目的1.学习片外存储器扩展方法。
2.学习数据存储器不同的读写方法。
三.实验电路及连线将P1.0接至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 P1.0 ;测试失败,点亮LEDSJMP $PASS: CPL P1.0 ;LED状态(亮/灭)转换MOV R1,#00H ;延时DELAY: MOV R2,#00HDJNZ R2,$DJNZ R1,DELAYLJMP START ;循环测试END实验二P1口输入、输出实验一.实验要求1.P1口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。
2.P1口做输入口,接八个扭子开关,以实验机上74LS273做输出口,编写程序读取开关状态,将此状态,在发光二极管上显示出来。
二.实验目的1.学习P1口的使用方法。
2.学习延时子程序的编写和使用。
三.实验电路及连线实验三P3口输出控制继电器实验一.实验要求利用P3.5输出高低,控制继电器的开合,实现对外部装置的控制。
二.实验目的掌握继电器控制的基本方法和经验。
三.实验电路及连线P3.5 接JD。
R-MID接L1灯,R-CLOSE接GND。
四.实验说明现代自动控制设备中,都存在一个电子电路与电气电路的互相连接问题,一方面要使电子电路的控制信号能够控制电气电路的执行元件(电动机,电磁铁,电灯等),另一方面又要为电子线路的电气电路提供良好的电隔离,以保护电子电路和人身的安全。
电子继电器便能完成这一桥梁作用。
继电器电路中一般都要在继电器的线圈两头加一个二极管以吸收继电器线圈断电时产生的反电势,防止干扰。
本电路的控制端为JD,当JD为高电平时,继电器不工作,当JD为低电平时,继电器工作,常开触点吸合。
执行时,对应的LED将随继电器的开关而亮灭。
五.实验程序框图六.源程序ORG 0000HLJMP STARTORG 0040HSTART:MOV SP,#60HJD: CPL P3.5 ;P3.5取反LCALL DELAY ;延时NOPSJMP JDDELAY: ;延时子程序(1秒)MOV R0,#0AHDELAY1: MOV R1,#00HDELAY2: MOV R2,#0B2HDJNZ R2,$DJNZ R1,DELAY2DJNZ R0,DELAY1RETEND实验四简单I/O实验(交通灯控制)一.实验要求以74LS273作为输出口,控制4个双色LED灯(可发红,绿,黄光),模拟交通灯管理。
二.实验目的1.学习在单片机系统中扩展简单I/O接口的方法。
2.学习数据输出程序的设计方法。
3.学习模拟交通灯控制的方法。
4.学习双色灯的使用。
三.实验电路及连线PO0-PO3接DG1-DG4,PO4-P07接DR1-DR4。
CS273 接8300H。
四.实验说明1.因为本实验是交通灯控制实验,所以要先了解实际交通灯的变化规律。
假设一个十字路口为东西南北走向。
初始状态0为东西红灯,南北红灯。
然后转状态1南北绿灯通车,东西红灯。
过一段时间转状态2,南北绿灯闪几次转亮黄灯,延时几秒,东西仍然红灯。
再转状态3,东西绿灯通车,南北红灯。
过一段时间转状态4,东西绿灯闪几次转亮黄灯,延时几秒,南北仍然红灯。
最后循环至状态1。
2.双色LED是由一个红色LED管芯和一个绿色LED管芯封装在一起,公用负端。
当红色正端加高电平,绿色正端加低电平时,红灯亮;红色正端加低电平,绿色正端加高电平时,绿灯亮;两端都加高电平时,黄灯亮。
五.实验程序框图程序框图:六.源程序ORG 0000HLJMP STARTORG 0040HSTART:MOV SP,#60HLCALL STATUS0 ;初始状态(都是红灯) CIRCLE: LCALL STATUS1 ;南北绿灯,东西红灯LCALL STATUS2 ;南北绿灯闪转黄灯,东西红灯LCALL STATUS3 ;南北红灯,东西绿灯LCALL STATUS4 ;南北红灯,东西绿灯闪转黄灯LJMP CIRCLESTATUS0: ;南北红灯,东西红灯MOV DPTR,#8300HMOV A,#0FHMOVX @DPTR,AMOV R2,#10 ;延时1秒LCALL DELAYRETSTATUS1: ;南北绿灯,东西红灯MOV DPTR,#08300HMOV A,#5AH ;南北绿灯,东西红灯MOVX @DPTR,AMOV R2,#50 ;延时5秒LCALL DELAYRETSTATUS2: ;南北绿灯闪转黄灯,东西红灯MOV DPTR,#8300HMOV R3,#03H ;绿灯闪3次FLASH: MOV A,#5FHMOVX @DPTR,AMOV R2,#03HLCALL DELAYMOV A,#5AHMOVX @DPTR,AMOV R2,#03HLCALL DELAYDJNZ R3,FLASHMOV A,#0AH ;南北黄灯,东西红灯MOVX @DPTR,AMOV R2,#10 ;延时1秒LCALL DELAYRETSTATUS3: ;南北红灯,东西绿灯MOV DPTR,#8300HMOV A,#0A5HMOVX @DPTR,AMOV R2,#50 ;延时5秒LCALL DELAYRETSTATUS4: ;南北红灯,东西绿灯闪转黄灯MOV DPTR,#8300HMOV R3,#03H ;绿灯闪3次FLASH1: MOV A,#0AFHMOVX @DPTR,AMOV R2,#03HLCALL DELAYMOV A,#0A5HMOVX @DPTR,AMOV R2,#03HLCALL DELAYDJNZ R3,FLASH1MOV A,#05H ;南北红灯,东西黄灯MOVX @DPTR,AMOV R2,#10 ;延时1秒LCALL DELAYNOPRETDELAY: ;延时子程序PUSH 2PUSH 1PUSH 0DELAY1: MOV 1,#00HDELAY2: MOV 0,#0B2HDJNZ 0,$DJNZ 1,DELAY2 ;延时100 mSDJNZ 2,DELAY1POP 0POP 1POP 2RETEND实验一时,P1.0-P1.7接L1-L8。
实验二时,P1.0-P1.7接K1-K8,PO0-PO7接L1-L8。
CS273接8300H。
四.实验说明1.P1口是准双向口。
它作为输出口时与一般的双向口使用方法相同。
由准双向口结构可知当P1口作为输入口时,必须先对它置高电平使内部MOS管截止。
因为内部上拉电阻阻值是20KΩ~40KΩ,故不会对外部输入产生影响。
若不先对它置高,且原来是低电平,则MOS管导通,读入的数据是不正确的。
2.延时子程序的延时计算问题对于程序DELAY:MOV R0,#00HDELAY1:MOV R1,#0B3HDJNZ R1,$DJNZ R0,DELAY1查指令表可知MOV,DJNZ 指令均需用两个机器周期,而一个机器周期时间长度为12/11.0592MHz,所以该段程序执行时间为:((0B3+1)×256+1)×2×12÷11059200=100.002mS五.实验程序框图主程序框图(1):程序框图(2):六.1、主程序ORG 0000HLJMP STARTORG 0040HSTART:MOV SP,#60HMOV A,#0FEHROTATE: MOV P1,A ;写P1口RL A ;循环左移LCALL DELAY ;延时NOPSJMP ROTATEDELAY: ;延时子程序(1秒)MOV R0,#0AHDELAY1: MOV R1,#00HDELAY2: MOV R2,#0B2HDJNZ R2,$DJNZ R1,DELAY2DJNZ R0,DELAY1RETEND2、读P1口程序框ORG 0000HLJMP STARTORG 0040HSTART:MOV DPTR,#8300H ;并行输出口地址MOV P1,#0FFH ;因P1口是准双向口,所以把P1口作为;输入口时,应先置高电平.READ:MOV A,P1 ;读开关状态MOVX @DPTR,A ;把读入的数据输出AJMP READEND实验五外部中断实验(急救车与交通灯)一.实验要求在实验四内容的基础上增加允许急救车优先通过的要求。
有急救车到达时,两向交通信号为全红,以便让急救车通过。
假定急救车通过路口时间为10秒,急救车通过后,交通灯恢复中断前状态。
本实验以按键为中断申请,表示有急救车通过。
二.实验目的1.学习外部中断技术的基本使用方法。
2.学习中断处理程序的编程方法。
三.实验电路及连线PO0-PO3接DG1-DG4,PO4-P07接DR1-DR4。