《单片机仿真设计与应用》高职配套教学课件_第1页
《单片机仿真设计与应用》高职配套教学课件_第2页
《单片机仿真设计与应用》高职配套教学课件_第3页
《单片机仿真设计与应用》高职配套教学课件_第4页
《单片机仿真设计与应用》高职配套教学课件_第5页
已阅读5页,还剩598页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

项目一、认识单片机

项目一、认识单片机----任务1.单片机最小系统

一、微型计算机系统的组成由硬件系统和软件系统两大部分成二、微型计算机的概念1、微处理器(CPU):(1)运算器(ALU):数据的算术和逻辑运算(2)控制器(CU):使微型计算机各组成部分按命令以一定的节拍进行工作。2、微型计算机组成:微处理器(运算器、控制器)、存储器、输入设备、输出设备。

图1-1微型计算机组成

3、微型计算机系统:

微型计算机加上系统软件和必要的外设就构成了微型计算机系统。CPU、微型计算机、微型计算机系统三者关系:

输入输出接口内部存储器系统软件外设CPU微型计算机微型计算机系统4、单片微型计算机(SCM)它将微处理器(运算器、控制器)、存储器、I/O(Input/Output)接口和中断系统集成在同一块芯片上,具有完整功能的微型计算机,这块芯片就是其硬件。三、单片机硬件组成1、微处理器

2、存储器(1)根据存储器与微处理的关系分:内部存储器——用来存储当前要运行的程序和运算数据,容量虽小,存取速度较快。外部存储器——用来存放大量的当前暂时不直接参与运行的程序和运算的数据,在需要时与内部存储器进行信息的成批传送、容量大,但存取速度较慢。(2)根据存储器的读写功能分:随机存储器(RAM)—可以随时写入或读出信息。只读存储器(ROM)—通过特定的方式写入,写入的信息只能读出而不能随意更改。3、输入输出接口:主要功能:实现外设与微机的数据传输、电平转换。4、三总线:(1)数据总线(DB)—用来实现CPU、存储器、I/O口之间的数据双向传送,数据为8位。(2)地址总线(AB)—由CPU发出的存储器或I/O的地址,以选择相应的存储单元和I/O接口。(3)控制总线(CB)—它给出微机中各个部分协调工作的定时信号和控制信号,保证正确执行程序指令时所需要的各种操作不至于发生冲突。控制总线的宽度(根数)因机型而异。

图1-3三总线与CPU、存储器、I/O口之间之间连接关系

四、单片机最小系统(一)单片机应用系统及组成单片机应用系统是以单片机为核心,配以输入、输出、显示、控制等外围电路和软件,能实现一种或多种功能的实用系统。

(二)单片机的引脚介绍11、电源连接:单片机使用的是+5V电源,其中电源正极接单片机40引脚(VCC),电源负极接20引脚(GND)。2、振蒎电路(XTAL1~XTAL2)连接:第19~18引脚。C1和C2取20PF左右3、控制总线:RST:第9引脚。—复位信号EA/Vpp:第31脚,外部寻址使能/编程电压。EA为高电平,从内部程序寄存器开始访问;EA为低电平时,则跳过内部程序存储器,从外部程序存储器开始访问ALE/PROG:第30引脚。—地址锁存允许信号第一功能:访问外部存储器时:ALE用来锁存扩展地址的低8位(P0口)的地址信号。当不访问外部存储器时:ALE将输出1/6的振荡频率,可用来对外部提供定时和时钟信号。第二功能:单片机编程时,此脚接编程脉冲。PSEN:第29引脚。—外部程序存储器读选通信号。当访问外部存储器时,此脚将定时输出负脉冲作为读取外部存储器的选题信号。4、并行I/O口(1)P0口:第32~39引脚。1)作为I/O口。2)作为单片机8位准双向数据总线。作为低8位地址总线,低8位地址的选通由ALE控制线决定。(3)P2口:第21~28引脚。1)作为I/O口。2)是当系统外扩存储器时,P2口输出高8位的地址A7~A15,与P0口第二功能输出的低8位地址相配合。(4)P3口:第10~17引脚。1)作为I/O口。2)作控制和特殊功能口使用。见表1-1P3口各位的第二功能表1-1P3口各位的第二功能(三)MCS-51单片机的内存结构

第2组通用寄存器区第3组通用寄存器区第1组通用寄存器区第0组通用寄存器区位寻址区(为地址00H~7FH)用户RAM区R0、R1、R2、R3、R4、R5、R6、R71FH/20H17H/18H0FH/10H07H/08H00H数据缓冲、堆栈、工作单元既可位寻址,又可字节寻找1)

通用寄存器区。四组通用寄存器,每组8个寄存器单元,每组都以R0~R7为寄存器单元编号。

2)位寻址区。既可位寻址,又可字节寻找。3)用户RAM。其单元地址30H~7FH,一般常将堆栈数据放在用户RAM区。(2)内部数据存储器高128单元8051共有22个特殊功能寄存器

B、ACC、PSW、IP、P0、P1、P2、P3、IE、SUBF、SCON、TH1、TL1、TH0、TL0、TMOD、TCON、PCON、DPH、DPL、SP、(PC)1)程序计数器PCPC是一个16位的计数器,PC没有地址,所以是不可寻址的。2)累加器ACC8位寄存器用的最多的专用寄存器:既可以存放操作数,也可以用来存放运算的中间结果。3)B寄存器8位寄存器主要用于乘除运算,乘法运算时,B是乘数。除法运算时,B是除数,余数放于B中。4)程序状态字PSW程序状态字是一个8位寄存器,用于寄存程序运行的状态信息。

表2-5状态寄存器PSW各位的意义位序PSW.7PSW.6PSW.5PSW.4PSW.3PSW.2PSW.1PSW.0位标志CYACF0RS1RS0OV∕PCY(PSW.7)---进位标志位CY(PSW.6)---辅助进位标志位CY(PSW.5)---用户标志位OV(PSW.2)---溢出标志位P(PSW.0)---奇偶标志位奇数个“1”时,P=1,偶数个“1”时,P=0

5)数据指针(DPTR)按16位寄存器使用:DPTR也可以按两个8位寄存器分开使用:DPH和DPL。

寄存器位地址/位定义地址BF7HF6HF5HF4HF3HF2HF1HF0HF0H

ACCE7HE6HE5HE4HE3HE2HE1HE0HE0H

PSWD7HD6HD5HD4HD3HD2HD1HD0HD0HCYACF0RS1RS0OV/PIPBFHBEHBDHBCHBBHBAHB9HB8HB8H

P3B7HB6HB5HB4HB3HB2HB1HB0HB0HP3.7P3.6P3.5P3.4P3.3P3.2P3.1P3.0IE

A8H

P2A7HA6HA5HA4HA3HA2HA1HA0HA0HP2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0SUBF

99HSCON

98H90H97H96H95H94H93H92H91H90H90HP1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0TH1

8DHTH0

8CHTL1

8BHTL0

8AHTMODGATEC/TM1M0GATEC/TM1M089HTCON8FH8EH8DH8CH8BH8AH89H88H88HTF1TR1TF0TR0IE1IT1IE0IT0PCONSMOD///GF1GF0PDIDL87HDPH

83HDPL

82HSP

81HP087H86H85H84H83H82H81H80H80HP0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0项目一、认识单片机----任务2.单片机开发软件

KeilC

硬件电路连接根据要求拟定总体设计方案(包括任务书、划分硬件和软件的任务分配等)硬件电路设计绘制程序总体框图、模块流程图编写主程序和各模块程序使用KeilC软件调试主程序和各模块程序联机在线仿真调试,修改硬件电路和程序使用PROTEUS软件,执行系统模拟调试,修改硬件电路和程序连接电脑和编程器,运行编程器RF1800软件,执行程序烧写(固化)脱机,现场运行,完成单片机开发硬件电路调试和修改一一、启动KeilμVision21、双击,KeilμVision2

2、新建一个项目文件

二、建立一个汇编程序文件

但如果是采用的C语言进行编程,则后缀名为C,然后单击保存3、添加文件到当前项目

三、编译文件

图1-18编译文件

图1-19编译成功信息

生成HEX文件图1-20目标选项工具栏

图1-21目标选项对话框

图1-22汇编文件生成HEX文件

四、仿真调试1、进入仿真环境2、熟悉存储器结构

(1)内部数据存储器图1-26存储器窗口图1-27存储器内部数据存储器空间各单元中的内容(2)外部数据存储器图1-28外部数据存储器区空间各单元中的内容(3)程序存储器区

图1-29程序存储器空间各单元中的内容

(4)工作寄存器和专用寄存器区

图1-30工作寄存器和专用寄存器区

(5)并行输入/输出口

图1-31并行输入/输出接口显示

3、检查存储器状态

(1)单步运行单击单步运行按钮,或者单击“Debug”下拉菜单中的“Step”。单步运行中两种方式和的区别:前者单步运行进入子程序内部后者在调用子程序时,把子程序当成一条指令运行,它们在调试时不碰到子程序时是一样的。(2)全速运行

全速运行可点击工具栏中的图标,如图1-33所示,点击全速运行意味着程序连续运行而不被打断。图1-33全速运行(3)断点设置

方法是在这指令前双击鼠标左键,此时在该指令前出现红色的方块,此时全速运行程序的话,程序则会在红色方块时停下,如要取消断点可在同样的位置双击鼠标左键。如图1-33所示。图1-33断点设置(4)复位设置

有时程序经修改,需要从头运行,可点击,目的是让程序从头开始运行,PC指针从0开始。

五、统调并将程序烧录至单片机芯片中(1)将由KeilC调试生成的*.hex/文件,下载到用Proteus软件绘制的硬件仿真图的CPU后台,进行软硬件的综合仿真调试,期间不断修改软件(也有些情况需要修改一下硬件),最后实现调试成功。

(2)调试成功后,将由KeilC调试生成的*.hex/文件烧录至单片机芯片,采用RF1800软件进行程序烧录,具体烧录方法参见附录3中的RF系列编程器简介。项目一、认识单片机----任务3.单片机仿真软件Proteus

一、双击运行桌面Proteus仿真软件

图1-35Proteus界面各工具栏(一)模型选择工具栏(ModeSelectorToolbar):

1、主要模型(MainModes):(1)选择元件(components)(默认选择的)(2)放置连接点(3)放置标签(用总线时会用到)(4)放置文本(5)用于绘制总线(6)用于放置子电路(7)用于即时编辑元件参数(先单击该图标再单击要修改的元件)

从左边开始2、配件(Gadgets):(1)终端接口(terminals):有VCC、地、输出、输入等接口(2)器件引脚:用于绘制各种引脚(3)仿真图表(graph):用于各种分析,如NoiseAnalysis(4)录音机(5)信号发生器(generators)(6)电压探针:使用仿真图表时要用到(7)电流探针:使用仿真图表时要用到(8)虚拟仪表:有示波器等(二)仿真控制按钮:(1)运行(2)单步运行(3)暂停(4)停止二、提取元器件

单击左键放置元器件到原理图中右击对象选中变红可移动单击左键选择元件旋转方向单击单击MicroprocessorICS元件库选择双击AT89C52元件图确定后关闭已知元件名检索三、放置元器件

单击左键放置元器件到原理图中右击对象选中变红可移动单击左键选择元件旋转方向四、绘制电路原理图

(一)元器件连线(二)整体移动部分电路,操作方法:先用右键拖选,再单击中的,这时这部分电路会随鼠标移动,在目标位置单击左键,这部分电路将被放到该处。绘制的电原理图如图1-38所示。五、程序注入和调试

(一)程序注入(二)程序的调试项目二、单片机硬件及指令系统应用项目二、单片机硬件及指令系统应用—

任务1.二极管点亮能力目标1.能用Proteus构建单片机最小系统2.能运用并行I/O接口3.能学会程序编写的基本方法并用KeilC进行调试4.能进行灯亮控制电路综合调试学习内容1.了解指令的概念2.掌握寻找方式3.掌握传送、位操作等指令4.了解并行I/O接口一、任务要求用单片机来实现对一个发光二极管实现点亮的功能。二、任务分析1.一个普通二极管被点亮的条件R1在此电路中的选择范围为330Ω~1KΩ

2.用单片机的I/O口的其中一位来控制二极管的点亮问题给P1.0送一低电平,则二极管就可以被点亮,送一高电平,则二极管就熄灭。三、学习知识

(一)了解指令的概念

1、指令的表示法:由操作码和操作数两大部分组成MCS-51指令格式:[标号:]操作助记符[操作数1][,操作数2][,操作数3]其中操作码助记符一般由2~5个英文字母组成。51系列单片机共有111条指令。

2、指令的分类:按指令在存储器中所占用的存储单元分:单字节NOP

双字节ADDA,#05H

三字节LJMP8000H按指令功能分:数据传送类MOVA,#04算术运算类ADDA,#05H逻辑运算类ANLA,#05H控制类LJMP8000H位操作类SETB90H3、指令中操作数的描述Rn——

工作寄存器R0~R7。Ri——

间接寻址寄存器R0、R1。Direct——

直接地址,包括内部128BRAM单元地址、21个SFR地址。#data——8位常数。#data16——16位常数。addr16——16位目标地址。addr11——11位目标地址。rel——8位带符号的偏移地址。DPTR——16位外部数据指针寄存器。bit——

可直接位寻址的位。A——

累加器。B——

寄存器B。C——

进、借位标志位,或位累加器。@——间接寄存器或基址寄存器的前缀。/——指定位求反。(x)——x中的内容。((x))——x中的地址中的内容。$——当前指令存放的地址。AB——累加器A和B寄存器组成的寄存器对,常出现在乘除法指令中。

(二)掌握寻找方式1、立即数寻址

MOVA,#40H

2、直接寻址

MOVA,40H

3、寄存器寻址

MOVA,R2

4、寄存器间接寻址

MOVA,@R0

(1)采用R0或R1作为寄存器间接寻址,可寻址的片内片外的RAM的低256字节的存储空间。(2)采用DPTR作寄存器间接寻址,可寻址的片外的数据存储器的整个64KB的空间。

5、变址寻址操作数地址=变地址+基地址

如MOVCA,@A+DPTR

例:累加器A的内容为20H,DPTR的值为2000H,程序存储器2020H单元内容为47H,则执行该指令后累加器A的值为47H。

MOVCA,@A+DPTR6、相对寻址

如JC60H;设(PC)=2000H为基址,相对偏移量为60H;

则当C=1时,转移的目的地址=2000H+2+60H

7、位寻址位寻址是指指令的操作数为8位二进制数的某一位,指令中给出的是操作数的位地址。可用于位寻址的区域是片内RAM20H~2FH单元和部分特殊功能寄存器。(1)可直接使用位地址。(2)对特殊寄存器也可进行位寻址。

(三)掌握传送、位操作等指令1、片内数据传送指令单片机在逻辑上分为三个空间,分别是程序空间、片内数据存储器空间、片外数据存储器空间。

片内外程序存储器ROMEPROMMOVC特殊功能寄存器片内RAM128字节MOVPUSHPOPXCHXCHDMOVX片外数据存储器RAM(1)以A为目标地址的传送指令指令指令代码操作MOVA,Rn11101rrrA←(Rn)MOVA,direct11100101directA←(direct)MOVA,@Ri1110011iA←((Ri))MOVA,#data1101000A←data(2)以直接地址为目标地址的传送指令指令指令代码操作MOVdirect,A11110101directdirect←(A)MOVdirect,Rn10001rrrdirectdirect←(Rn)MOVdirect,@Ri1000111directdirect←((Ri))MOVdirect,#data01110101directdatadirect←dataMOVdirect1,direct210000101direct2,direct1direct1←(direct2)(3)以Rn为目标地址的传送指令指令指令代码操作MOVRn,A11111rrrRn←(A)MOVRn,#data01111rrrRn←dataMOVRn,direct10101rrrRn←(direct)(4)以间接地址为目标地址的传送指令指令指令代码操作MOV@Ri,A1111011i((Ri))←(A)MOV@Ri,#data0111011i((Ri))←dataMOV@Ri,direct1010011i((Ri))←(direct)(5)十六位数传送(以DPTR为目标地址)传送指令指令指令代码操作MOVDPTR,#data1610010000dataH8dataL8(DPTR)←data162、累加器A与片外RAM之间传送指令MOVX(4条)MOVXA,@DPTR;A←(DPTR)MOVX@DPTR,A;(DPTR)←AMOVXA,@Ri;A←(Ri)MOVX@Ri,A;(Ri)←A

1、3两条指令完成了将外部数据读入单片机,此时单片机的RD为低电平2、4两条指令完成了将单片机数据写入外部设备,此时单片机的WR为低电平3、程序存储器向累加器A传送指令MOVC(2条)MOVCA,@A+PCMOVCA,@A+DPTR这种指令可用来实现查表程序,不同之处在于:第一条指令只能在256位中查表,第二条指令可在64KB范围中查表。例:试编写一程序,实现将片外RAM的0FAH单元中的内容传送到外RAM的04FFH单元中。分析:根据图2-6可以看到,外部存储单元之间是不能相互传递的,所以只有将外部数据通过传向片内,再将片内的数据传向片外来进行操作。具体在操作过程中要考虑如下事宜:①定义起始地址、目标地址。②源操作数→A。③A→目标操作方式。ORG1000HMOVR0,#0FAH;定义源操作数地址MOVDPTR,#04FFH;定义目标地址MOVXA,@R0;源操作数先送至AMOVX@DPTR,A;A→目标地址END4、位操作指令(1)位传送指令(2条)MOVC,bitMOVbit,C

(2)位修正指令(6条)

CLRCCLRbitCPLCCPLbitSETBCSETBbit四、任务实施(一)用Proteus构建单片机最小系统硬件

图2-7单片机控制的二极管点亮电路(二)编写程序并进行调试在任务分析中得知,给P1.0赋个低电平,发光二极管就被点亮。程序如下:

ORG0000H;从程序空间地址0000H开始L:MOVP1,#0FEH;点亮二极管

SJMPL;在此处踏步等待

END

;结束(三)进行二极管点亮电路仿真调试

图2-8单片机控制的二极管点亮仿真电路

五、总结与提高完成了二极管点亮的任务,大家考虑一下:1、能否用两个按钮来控制二极管的点亮与熄灭,一个按钮定义为点亮功能,另一个按钮定义为熄灭。2、能否采用一个按钮来实现二极管的点亮与熄灭,按一下按钮,二极管被点亮,再按一下后,熄灭,再按下点亮,再按下熄灭…。

能力目标1.能编写和用KeilC调试简单的延时子程序2.能用KeilC进行单步,连续调试3.能进行单灯闪烁电路综合调试学习内容1.学习转移指令的运用2.掌握子程序的编写方法项目二、单片机硬件及指令系统应用—任务2.单灯闪烁一、任务要求要求二极管亮灭闪烁的时间为200ms,控制端口仍然采用P1.0口。二、任务分析在任务一中我们已成功将二极管点亮,本任务与任务一所不同的是要由P1.0产生的时序信号如图2-9所示。200

ms图2-9单灯闪烁控制时序

三、学习知识(一)主程序和子程序的概念

所谓主程序就是根据设计者的要求完成主要功能的程序。子程序的概念:主程序中反复用到的一些重复的功能模块程序,如果都放在主程序中,会让主程序显得冗长,所以常将这种需要频繁使用的基本操作设计成相对独立的程序段。1、子程序的调用与返回子程序的调用:短调用指令ACALLaddr11,长调用指令LCALLaddr16,不同的是前者跳转的范围为2K后者跳转的范围为64K。返回指令:RET从子程序返回到主程序,RETI从中断服务程序返回到主程序

2、子程序设计(1)每个子程序都有一个唯一的入口(唯一的名称),并以标号作为标识,以便主程序的正确调用,子程序通常以RET指令作为结束。(2)为了使子程序具有通用性,子程序的操作对象通常采用寄存器或寄存器间址等寻址方式。(3)为了使子程序不论存放在存储器的任何区域都能被正确执行,在子程序中如有转移指令,应使用相对转移指令而不能用绝对转移指令。(4)进入子程序时,应对那些主程序中使用并在子程序中继续需要使用的寄存器的内容进行保护(即保护主程序现场),在返回主程序时应恢复它们的原来的状态。子程序设计的基本步骤如下:(1)确定子程序的名称(入口标号)。(2)确定子程序的入口参数及出口参数。(3)确定所使用的寄存器和存储单元机器使用目的。(4)确定子程序的算法,编写源程序。例、设内部RAM20H、21H单元中有两个数a和b,编程求c=a2+b2,并把c送入内存单元22H中。该程序由两部分组成:主程序和子程序。主程序通过累加器A传送入口参数a和b,子程序用于求平方并将结果通过累加器A传送给主程序,主程序再求两平方和。

主程序ORG0100H

MOVA,20H;a→AACALLSQR;求a2MOVR0,A;a2→R0MOVA,21H;b→AACALLSQR;求b2ADDA,R0;a2+b2→AMOV22H,A;存入22H单元END

以下为子程序ORG1000H

SQR:ADDA,#01H;

MOVCA,@A+PC

RET

TAB:DB00H,01H,04H,09H,16H,

DB25H,36H,49H,64H,81H(二)循环转移指令DJNZRn,rel;(Rn)←(Rn)—1若(Rn)≠0,则PC+2+rel,跳转至目标地址若(Rn)=0,PC+2

跳转到本指令的下一条指令去执行DJNZdirect,rel;(direct)←(direct)—1若(direct)≠0,则PC+2+rel,跳转至目标地址若(direct)=0,PC+2

跳转到本指令的下一条指令去执行DJNZ指令主要用来实现计数功能,一旦计数完毕,立即退出循环体,否则继续在循环体中循环。例:将8031内部的RAM40H~4FH单元置为#00H。解:

ORG0000h

MOVR0,#40H;置首址

MOVR2,#10H;置长度LOOP:MOV@R0,A

INCR0;修改指针

DJNZR2,LOOP;判断长度

END

(三)延时子程序的设计1、机器周期当振荡脉冲频率为12MHZ,一个机器周期为1us。当振荡脉冲频率为6MHZ,一个机器周期为2us。2、指令周期执行一条指令所需的时间叫指令周期,一般指令需1、2、4个机器周期。3、单循环程序运用图2-10延时子程序(5.135ms)

考虑在此单循环程序外再嵌套一层循环,见下方第2~7部分,以内部(3~6行)产生延时时间为5ms为重复操作对象,重复操作的次数由外循环来进行参数设置,由外部循环中R7设定为20,这样重复20次1ms的操作后延时约为100ms,考虑到晶振会带来点误差。图2-11延时子程序(102ms)

四、任务实施(一)硬件电路同任务一。(二)100ms延时子程序的调试。这已在延时子程序的设计中完成。(三)编写完整的主程序和子程序。

ORG0000H

L1:MOVP1,#0FEH;点亮二极管

LCALLDELAY2;延时200ms

MOVP1,#0FFH;关闭二极管

LCALLDELAY2;延时200ms

LJMPL1;返回到首址

ORG0100H

DELAY2:MOVR7,#20;延时200ms子程序D1:MOVR6,#00H

D2:NOP

NOP

DJNZR6,D2

DJNZR7,D1

RET

;返回

END

(四)进行单灯闪烁综合调试。将上述生成的单灯闪烁.hex文件加载到用Proteus绘制的硬件电路CPU后台,点击运行,可以观察到二极管以200ms闪烁的结果图2-12单灯闪烁电路仿真

五、总结与提高1、纯粹的硬件电路设计:硬件定时不占CPU时间,但需通过改变电路的元件参数来调节定时时间,在使用上不方便。2、延时子程序:像本次任务中,CPU大量的时间停留在延时程序中增加了开销,所以软件定时时间不宜过长。3、可编程定时器:通过对系统时钟脉冲的计数来实现,计数值通过改变计数值程序设定。可以不占用CPU的开销。

项目二、单片机硬件及指令系统应用—

任务3.跑马灯

能力目标1.能通过程序的编写使灯从上依次向下轮流点亮,或从下往上依次轮流点亮。2.能用KeilC进行单步,连续调试3.能进行跑马灯电路综合调试学习内容1.学习向左或向右转指令的运用2.状态计数器的设计3.程序流程图的画法一、任务要求P1口的8位分别接着二极管,通过编程依次实现P1口8个二极管由低位到高位依次点亮和熄灭,依次点亮的时间为100ms。二、任务分析通过任务要求分析,需要在P1口产生如下时序:见图2-13所示。

100ms700ms

P1.023456P1.1P1.2P1.3P1.4P1.5P1.6P1.7图2-13跑马灯要求P1口产生的时序

通过任务分析,要解决如下问题:(1)100ms的延时子程序,前面任务二中已会运用,更可以直接拿来运用。(2)状态转移的实现。(3)一个时序周期中8个状态的记忆问题。三、学习知识(一)状态转移的实现

1、RLA;roundlefta助记例:(A)=81H,RLA

后A7移至A0的后边,其它位向左移1位,执行结果(A)=03H。将累加器A的内容左移1位,位A7循环移入A0,不影响其它的标志位。2、RLCA和RLA指令一样都使A中内容逐位左移一位,但RLCA将使CY连同A中的内容一起左移循环,A7进入CY,CY进入A0。

例:(A)=81H,CY=0执行RLCA后,(A)=02H,CY=1

3、RRA;roundrightARRA指令的异同点类似于RLA,仅是A中数据位移方向向右。例:(A)=81HRRA执行结果(A)=0C0H

4、RRCA指令的异同点类似于RLCA仅是A中数据位移方向向右。例:(A)=81H,CY=0执行RRCA(A)=40H,CY=1

(二)一个时序周期中8个状态的记忆问题

在本任务中我们可以将Rn设为08H,然后进行一次状态转移,Rn就减1,直至减到Rn为0(三)跑马灯程序周而复始的实现学习指令:无条件转移指令(4条)1、AJMPaddr11低11位这条指令的实现过程:①首先将当前PC指针加2。②然后用addr11位的地址替换PC指针的低11位,形成新的PC指针而转移到新的地址。③跳转的范围为2K。

例:ZHUAN:AJMPaddr11设addr11=001,0000,0011B标号ZHUAN的值为16位地址1230H①PC+21230H+02H=1232H=0001,0010,0011,0010B②替换低11位新的PC值为0001,0001,0000,0011B=1103H

2、长转移指令(长跳转指令)LJMPaddr16执行完该条指令时,无条件转移到指令所提供的16位地址去,所以转移地址可在64K程序空间内跳转。例:LJMP9000H执行完该条指令后,将使程序转移到9000H单元继续执行。3、相对转移指令——相对寻址SJMPrel

rel——取值范围-128~+127(向前向后)采用的是跳转两量的补码(向下为正,向上为负——求补)最终跳转的目的地为PC+2+rel4、间接转移指令JMP@A+DPTR该指令是无条件的间接转移(散转)指令,一般用于程序的多种出口的实现。

例:根据累加器A的数值设计散转表程序

MOVA,#dataMOVDPTR,#TABLEADDA,#dataJMP@A+DPTRTABLE:AJMPPORT0(PC=TABLE)AJMPPORT1(PC=TABLE1)AJMPPORT2(PC=TABLE2)

条件0data0=0(A)=0PORT0(PC指针)出口0条件1data1=1(A)=1PORT1(PC指针)出口1条件2data2=2(A)=2PORT2(PC指针)出口2┈┈┈┈┈┈(PC指针)┈┈条件Ndatan=n(A)=nPORTN(PC指针)出口N

例:设A中为键值,试编写按键值处理相应事件的程序段。解:MOVDPTR,#KYEGMOVB,#03HMULABJMP@A+DPTR┈┈KYEG:LJMPKEYG0

LJMPKEYG1

比较LJMP、AJMP、SJMP、JMP转移的范围LJMP0~64KAJMP2KSJMP-128~+127JMP0~256(四)流程图的绘制在编写流程图时,会采用如图2-15所示的框图说明程序的执行情况。

图标程序的执行情况表示程序的开始和结束

表示顺序执行

表示分支(根据循环变量的测试进行分支)四、任务实施

图2-16跑马灯的硬件电路设计

2、程序流程图如图2-17所示。

(R1)-1=0?0FEH→(P1)调用DELAY2子程序A→(P1)(P1)→ARLA开始NY3、程序的编制如下:

ORG0000H

L3:MOVR1,#08H;状态数设置

MOVP1,#0FEH;跑马灯初始状态L2:MOVA,P1

LCALLDELAY2;延时

RLA

MOVP1,A

DJNZR1,L2;判断状态是否结束

LJMPL3

;跑马灯周而复始工作

ORG0100H

DELAY2:MOVR7,#20;跑马灯延时子程序设计D1:MOVR6,#00H

D2:NOP

NOP

DJNZR6,D2

DJNZR7,D1

RET

END

4、跑马灯电路用Proteus仿真调试结果如图所示。图中选择了D1、D2、D8、被点亮的状态。五、总结与提高1.程序的优化问题在本程序中,如果不考虑一个时序周期中8个状态的记忆问题,程序同样能实现,原因是当用RLA进入到第八个状态时,(A)中数值又回到0FEH,自然完成到一个周期的初始状态,这样程序第2和第8行可省去,第9行程序改为LJMPL2,读者可以自己进行比较,体会个中原因。2.设计由灯的P1.0至P1.5六个二极管从上到下循环点亮。3.设计成由D1~D8~D7~D1顺序亮的跑马灯。4.设计成先从D1亮至D7一个周期,再从D7亮至D1一个周期,然后周而复始。

项目三、定时计数器和中断系统应用项目三、定时/计数器和中断系统应用---任务1.秒脉冲发生器

能力目标1.能正确运用定时/计数器产生秒信号2.秒脉冲发生器程序的编写3.学会中断控制系统的应用4.秒脉冲发生器程序的仿真调试方法学习内容1.掌握定时/计数器的组成及功能2.掌握单片机内部结构资源:TH0、TL0、TH1、TL1、TMOD、TCON3.掌握中断控制系统的概念及定时功能4.理解预置数的用法和溢出的概念一一、任务要求在项目二的任务2中曾经采用单纯的软件来实现延时或定时很耗费单片机的资源,采用可编程定时/计数器,可以解决上述问题。用可编程定时/计数器设计一个秒脉冲发生器,通过P1.0端口输出驱动二极管每隔1s亮一次来显示秒脉冲发生器效果。定时1s用定时器中断来实现。二、任务分析首先得用可编程定时/计数器设计一个0.5s脉冲发生器,每隔0.5s将P1.0端口取反,即可在P1.0端口输出1Hz方波,P1.0硬件接法可参考项目二中任务2的接法。三、学习知识(一)定时/计数器的结构1、定时/计数器的结构

(1)定时/计数器的结构51子系列单片机内有两个十六位加1定时/计数器T0T1

计数值高八位计数值低八位TH1计数值高八位TL1计数值低八位TMODTCON工作方式定时/计数控制控制控制TH0TL02、定时/计数器功能(1)计数功能对外部输入脉冲计数。定时/计数器0计数信号由芯片的T0(P3.4)端引入。定时/计数器1计数信号由芯片的T0(P3.5)端引入。外部输入脉冲频率不能高于单片机晶体振荡频率的1/24,单片机机器周期变化的频率为单片机晶体振荡频率的1/12,因为单片机在相邻两个机器周期中采样到端口上有负跳变时,才计作输入一个脉冲。(2)定时功能对内部机器周期脉冲计数。定时时间=计数脉冲数×机器周期时间由于机器周期时间取决于单片机晶振

(二)中断概念与定时中断

1、中断定义

单片机主要用于实时控制,当对控制对象进行正常控制时,如果外部突然有特殊情况发生,这个向CPU发出请求的过程叫中断请求,则CPU必须立即暂停原来正常的控制程序,并转向执行应急处理的服务程序,这个转去处理应急任务的过程叫中断响应,处理应急的过程叫中断服务,处理完毕,再恢复到原来正常控制程序的暂停处继续执行,这个返回过程叫中断返回,这样的过程称为中断系统。表3-1日常生活中的中断与单片机中断比较日常生活中的中断与单片机中断比较中断的比较:某同学单片机过程说明正在看书执行主程序

有人找出去中断信号中断请求暂停看书暂停执行主程序中断响应书中作记号当前PC入栈保护断点出去做事执行中断程序中断服务回来继续看返回主程序中断返回

2、

中断服务子程序返回指令中断响应是单片机响应随机的突发要求,进行相应处理,等应急处理的服务程序完毕,要进行中断返回,为区别子程序返回,中断服务子程序返回指令用“RETI”

3、

中断源能够引发CPU中断的事件源称为中断源。MCS-51系列单片机有定时中断(定时/计数器0和定时/计数器1)、外中断(外中断0和外中断1)和串行中断3类。4、定时中断当它们计数到预定的次数或预定的时间时,通过单片机内部硬件电路将定时中断源的中断请求标志置于“1”,向CPU提出中断请求,让CPU及时作出处理。(三)定时/计数器控制1、

工作方式控制寄存器TMOD(89H)特殊功能寄存器TMOD用于控制T0和T1的工作方式,低4位用于控制T0,高4位用于控制T1,TMOD

M0

M1C/

GATE

M0

M1C/GATET1T0GATE——

门控位。

GATE=0启动不受/INT0或/INT1的控制;

GATE=1启动受/INT0或/INT1的控制。C/T——

外部计数器/定时器方式选择位

C//T=0定时方式;

C//T=1计数方式。M1M0——

工作模式选择位(编程可决定四种工作方式)。TMOD工作方式控制位:M1M0工作方式计数器功能00方式013位计数器01方式116位计数器10方式2自动重装初值的8位计数器11方式3定时器0:分成两个8位计数器定时器1:波特率发生器2、定时控制寄存器TCON(88H)

TCON的作用是控制定时器的启、停,标志定时器的溢出和中断情况,定时器控制字TCON格式TF1TR1TF0TR0IE1IT1IE0IT0TCON8FH

8EH

8DH

8CH

8BH

8AH

89H

88HTR0定时/计数器1运行控制位。软件置位。TR1定时/计数器1运行控制位。(用法与TR0类似)3、定时器/计数器的4种工作方式(1)方式0计数寄存器TLi低5位+THi8位(T1、T0的等效逻辑结构)

控制BAC/T=0振荡器1/12&≥1TiTRiGATEINTiC/T=1TLi(5位)THi(8位)TFi0~40~7中断波形等间隔,次数已定,时间确定即对机器周期进行计数。左图定时时间为N*TN个方波

T每个下降沿计数一次确认一次负跳变需两个机器周期,所以,计数频率最高为fosc/24。

C//T=0——定时;C//T=1——

对外计数。定时:fosc/12=1/(12/fosc)=1/T

计数:脉冲不等间隔。(2)工作方式1与方式0相似。与方式0的区别:计数位数不同。计数寄存器:THi(高8位)+TLi(低8位)TFi中断TLi(8位)THi(8位)0~70~7控制BAC/T=0振荡器1/12&≥1TiTRiGATEINTiC/T=1(3)方式2与方式0、1的区别:1)计数位数不同;2)初值自动重装。TFi中断TLi(8位)THi(8位)控制BAC/T=0振荡器1/12&≥1TiTRiGATEINTiC/T=1(4)方式3T0定时/计数,而T1停止计数,但可作波特率发生器。T0分成两独立定时/计数器TL0和TH0。TL0使用C//T、GATE、TR0、/INT0、TF0定时/计数,TH0使用TR1、TF1因此,只能用于定时TF0中断控制BAC/T=0振荡器1/12&≥1T0TR0GATEINT0C/T=1TL0(8位)振荡器1/12TH0TF1中断(a)TL0作8位定时/计数器(b)TH0作8位定时器TR14、中断允许控制寄存器IE

表3-3中断允许控制寄存器IEIEEA—ET2ESET1EX1ET0EX0位地址AFH—ADHACHABHAAHA9HA8H(1)EA(IE.7):总允许控制位,若EA=0,禁止AT89C51所有中断源的中断请求;若EA=1,则总控制被开放,但每个中断源是允许还是被禁止CPU响应,还受控于中断源的各自中断允许控制位的状态。

(2)ET2(IE.5):定时器T2溢出中断允许控制位,位地址是ADH。(3)ES(IE.4):串行口中断允许控制位,位地址是ACH。(4)ET1(IE.3):定时器T1的溢出中断允许控制位,位地址为ABH。

(5)EX1(IE.2):外部中断的中断请求允许控制位,位地址是AAH。(6)ET0(IE.1):定时器T0的溢出中断允许控制位,位地址是A9H。

(7)EX0(IE.0):外部中断的中断请求允许控制位,位地址是A8H。以上各位置为“1”时,允许中断;清为“0”时,禁止中断。注意要设定某中断源允许中断时,除将对应的中断源允许控制位置成“1”外,还有将总控制位EA置成为“1”。

5、相关指令

(1)位指令的应用

SETBEA;开启总中断允许

SETBET0;开启定时器0中断允许

SETBTR0;启动定时/计数器0

CLREA;禁止总中断允许

CLRET0;禁止定时器0中断允许

CLRTR0;禁止定时/计数器0

(2)位控制转移指令

JBCbit,rel;若(bit)=1时,则转移到标号对应的地址,并且同时bit←0。例如:JBCTF0,NEXT;若定时器0数据溢出时,即TF0=1时,则转移到标号NEXT对应的地址,并且同时清定时溢出标志TF0←0,这样下次就可以重新定时/计数。

(3)比较转移指令CJNEA,#data,rel;

(A)≠data,PC+3+rel跳转到目标地址,

(A)=data,PC+3顺序向下执行。

CJNEA,direct,rel;CJNERn,#data,rel;CJNE@Ri,#data,rel;

CJNE系列指令可产生三分支程序:YA=B吗?A﹥B吗?入口出口NCY=0CY=1YN

(5)判CY转移指令JCrel;若(CY)=1,(PC)←(PC)+2+rel

若(CY)=0,(PC)←(PC)+2顺序JNCrel;若(CY)=0,(PC)←(PC)+2+rel

若(CY)=1,(PC)←(PC)+2顺序上述操作不影响操作位。

例:编程通过P1.0线连续输出256个宽度为5个机器周期长的方波。解:MOVR0,#00H;置R0的值为256LOOP:CLRP1.0;P1.0=0

CPLP1.0;P1.0=1

NOPNOPDJNZR0,LOOP例:用软件实现如图3-8所示P1.0~P1.3间的逻辑运算。

解:MOVC,P1.1ORLC,P1.2ANLC,P1.0MOVP1.3,C

图3-8逻辑运算图

(四)中断入口地址表3-4中断入口地址地址说明0003H~000AH外部中断0中断地址区000BH~0012H定时/计数0中断地址区0013H~001AH外部中断1中断地址区001BH~0022H定时/计数1中断地址区0023H~002AH串行中断地址区(五)定时器/计数器的设计步骤初始化的内容如下:1、设置TMOD寄存器参数2、计算计数初值计算出计数初始值并写入TH0、TL0、TH1、TL1中。计数器的初始值和实际计数值并不相同,两者的换算关系如下:设实际计数值为C,计数最大值为M,计数初始值为X,则X=M-C。其中计数最大值在不同工作方式下的值不同,具体如下:(1)工作方式0:M=213=8192。(2)工作方式1:M=216=65536。(3)工作方式2:M=28=256。(4)工作方式3:M=28=256。计数初值都是X=M-C(十六进制数)。定时器模式下对应的定时时间为:T=C·T机=(M-X)T机式中,T机为单片机的机器周期(T机为晶振时钟周期的12倍)。将计数所得的X值转换成相应的16进制数,分别放入相应的TH0、TL0或TH1、TL1中。

3、定时中断选择给定时器控制寄存器TCON送命令字,控制定时/计数器的启动和停止。(1)应用定时中断编程时,需要开启相应的定时中断控制位,否则将其设为禁止。(2)若定时/计数器仅使用一次,则要在服务程序中把工作启动/停止控制位TR清为“0”,关闭定时/计数器,若连续使用时,则不要改变TR位。(3)当不使用定时中断时,即用查询溢出标志编程,无论定时/计数仅用一次还是连续使用,每次都要用指令将对应的溢出标志位清“0”。而采用中断编程时,一旦中断响应,由硬件自动将对应的溢出标志撤销。例:产生周期为1ms的定时方波选择T1方式0用于定时,在P1.1输出周期为1ms的方波,晶振fosc=6MHZ。根据题意,只要使P1.1每隔500us取反一次即可得到1ms方波,因而T1的定时时间为500us,因定时时间不长,取方式0即可,则M1M0=00;因是定时器方式,所以C/=0;在此用软件启动T1,所以GATE=0.T0不用,方式字可任意设置,只要不使其进入方式3即可,一般取0,故TMOD=00H。系统复位后TMOD为0,可不对TMOD重新清“0”。下面计算500us定时T1初始值:机器周期T=12/fosc=12/6MHZ=2us设初始值为X,则(213-X)×2×10-6s=500×10-6sX=7942=111110000110B=1F06H因为在作13位计数器同时,TL1的高3位未用,应填写0,TH1占高8位,所以X的实际填写值应为X=11111000000110B=F806H,结果TH1=F8H,TL1=06H。四、任务实施1、硬件设计硬件设计可采用项目一中任务2的硬件原理图。2、软件设计(1)要二极管产生每一秒亮一次,则P1.0得每0.5s取反一次,所以定时器的定时时间为0.5s。(2)设定工作方式寄存器TMOD。

表3-5工作方式寄存器TMOD设置

GATEC//TM1M2GATEC//TM1M200010000(3)计算计数初值。选用晶振为6MHZ,则机器周期T=12/fosc=12/6MHZ=2us,设初始值为X,则定时时间为(216-X)×2×10-6s,当X=0,在晶振为6MHZ的情况下,采用定时/计数器1工作方式1下,最长的定时时间为216×2×10-6s=131ms,而125ms×4=500ms=0.5s,可选定时0.5s的流程图如图3-9所示,对定时器125ms中断4次,就是0.5s。(216-X)×2×10-6s=125ms,X=3036=(BDC)16,所以TH1=0BH,TL1=0DCH定时125ms4次到否否0.5s图3-9定时0.5s示意图

开始置定时器1工作方式1置定时常数置中断记录初值R2←0开中断允许、定时器R2≥5?R2←00HR2≠4?R2←00HP1.0取反是是否图3-10主程序流程图

中断返回定时中断恢复计数初值中断次数加1图3-11定时中断服务程序流程图(5)程序设计

ORG0000H

AJMPMAIN

ORG001BH;定时/计数器1中断入口地址

AJMPRT1

ORG0030H

MAIN:MOVTMOD,#10H;设定时/计数器1定时功能,工作方式1

MOVTH1,#0BH;设置计数初值高8位

MOVTL1,#0DCH;设置计数初值低8位

MOVR2,#00H;设置记录中断次数初值

SETBEA;开启总中断允许

SETBET1;开启定时/计数器1中断允许

SETBTR1;启动定时/计数器1MAIN1:CJNER2,#04H,RT11;判别满0.5s否

MOVR2,#00H;满,则将中断计数次数恢复初值RT11:JCMAIN1;若(R2)<5,则继续判0.5s到否

MOVR2,#00H;若(R2)≧5,则将中断计数次数恢复0

CPLP1.0

SJMPMAIN1

RT1:MOVTH1,#0BH;定时/计数器1中断服务子程序,重新装数

MOVTL1,#0DCH

INCR2;中断次数加1

RETI

;中断返回

END

3、软件调试与仿真

用PROTEUS进行仿真调试当来一个外中断,指示灯发生变化。五、总结与提高1、中断优点和功能:2、程序的结构:3、定时器/计数器的运用:项目三、定时/计数器和中断系统应用---任务2.脉冲计数测量

能力目标1.正确运用定时/计数器进行计数2.把握主程序、子程序、中断程序之间的关系,各入口和出口参数的协调3.硬件资源、软件资源的合理分配4.脉冲计数测量电路仿真调试学习内容1.定时/计数器计数功能的运用2.单片机脉冲计数测量控制系统的组成3.相关指令的学习4.掌握外部中断系统的应用一、任务要求由MCS-51单片机组成最小应用系统,对外部脉冲信号进行计数测量,通过8个发光二极管(LED)显示外部脉冲的个数。二、任务分析1.构建一个单片机的最小系统。2.采用MCS-51单片机外部中断0来实现对外部中断的测量,即每输入一个外部脉冲,引起外部中断一次。3.单片机将测量的脉冲个数由P1端口输出,驱动LED发光二极管显示。

三、学习知识(一)外部中断1、信号引入脚外中断0:(中断请求信号从P3.2端口引入)外中断1:(中断请求信号从P3.3口引入)2、信号方式和中断请求标志(1)信号方式电平方式——低电平有效脉冲方式——负跳变有效(2)定时器控制寄存器与中断请求标志位序号D7D6D5D4D3D2D1D0位符号TF1TR1TF0TR0IE1IT1IE0IT0IE0和IE1——外中断0和1的中断请求标志位IE0(IE1)=1时,表示有外部中断请求,IE0(IE1)=0时,表示无请求。IT0和IT1——外中断0和1请求信号方式控制位IT0(IT1)=1时,即后沿负跳变有效IT0(IT1)=0时,低电平有效(三)中断优先级

1、中断优先级的概念

当多个中断源同时向CPU发出中断请求时,CPU应按情况的紧急程度,按优先次序来处理,最紧急的中断源请求优先处理,这就是中断优先级控。

2、中断优先级控制寄存器(IP)位序号D7D6D5D4D3D2D1D0位符号———PSPT1PX1PT0PX0(1)PS:串行中断优先级设定位。(2)PT1和PT0:定时中断1和0优先级设定位。(3)PX1和PX0:外部中断1和0优先级设定位。各位置为“1”时,对应中断源设定成高优先级;清为“0”时,对应中断源设定成低优先级。

3、中断优先级控制规则(1)高优先级中断源的请求可以打断低优先中断源的中断服务,形成中断嵌套,但低优先级中断源请求不能打断高优先级的中断服务。(2)当一个中断源的请求已被响应,与其同优先级的中断源的请求不能打断它的中断服务。(3)同级优先级中断源的中断请求被响应的优先次序:外中断0→定时中断0→外中断1→定时中断1→串行中断

4、中断处理过程(1)中断响应(2)中断处理1)完成当前指令的操作。2)保护断点地址,将PC内容压入堆栈。3)屏蔽同级的中断请求。4)将中断源入口地址(固定的)送入PC寄存器,自动转入相应中断程序入口地址。5)执行中断服务程序。6)当执行到RETI指令时即结束中断,从堆栈中自动弹出断点地址到PC寄存器,返回到先前断点处继续执行原程序。(3)中断返回(4)中断请求的撤消CPU一旦响应某中断请求后,在该中断程序结束前(RETI),必须把它的相应的中断标志复位,否则CPU在返回主程序后将再次响应同一中断请求。硬件复位:一般的中断请求都可以通过硬件清除,自动撤除,无需采用其他措施。软件复位:CLRTI;CLRRI(5)中断响应时间中断响应时间是指CPU从查询中断请求标志到转入中断服务程序入口地址所需要的时间。四、任务实施1、硬件设计2、软件设计

开始设置中断控制寄存器等待中断开启中断允许设置初始状态外中断0保护现场测量脉冲数加1脉冲数送显示恢复现场中断返回图3-20主程序流程图图3-21中断服务流程图4、程序设计

ORG0000H

AJMPMAIN

ORG0003H;外中断0入口地址

AJMPRXO

ORG0030H

MAIN:CLRA

MOV30H,A

MOVP1,#0FFH;发光二极管都不亮

MOVTCON,#01H;外部中断0下降沿触发

MOVIE,#81H;打开外部中断允许位(EX0)及总中断允许位(EA)

SJMP$;等待中断

RXO:PUSHPSW;保护现场

INC30H;脉冲计数

MOVA,30H

CPLA;取反

MOVP1,A;脉冲计数值由P1端口送发光二极管显示

POPPSW;恢复现场

RETI

;中断返回

END

5、仿真调试

计第一个脉冲时状态计第二个脉冲时状态计第三个脉冲时状态

五、总结与提高1、有关中断方式:中断信号的形式是低电平还是沿触发2、有关中断优先级:根据轻重缓急来定义好各个中断的优先级

项目三、定时/计数器和中断系统应用---任务3.转速计数器能力目标1.能理解单片机的中断原理及其中断过程,掌握外中断的程序设计步骤。2.简单了解霍尔传感器的原理和应用,会使用霍尔传感器进行转速测量电路设计。3.掌握数码管显示的方法。学习内容1.学习霍尔传感器的简单工作原理,学习用外中断边沿方式实现转速测量的程序设计与仿真;2.伪指令的使用方法。3.学习数码管的类型,用数码管显示数据的方法。

一、任务要求利用AT89C51单片机来制作一个转速计数器。在AT89C51单片机的P3.2管脚通过开关接一个霍尔传感器转速输入信号,用单片机的P1.0~P1.7接一个共阳数码管,作为00~60计数的个位数显示,用单片机的P2.0~P2.7接一个共阳数码管,作为00~60计数的十位数显示;当计数到60时,停止计数,按复位键后重复运行。

二、任务分析1、要了解霍尔传感器输出的信号形式,以方便在仿真时选用合适的信号进行仿真。2、

由于对转速的测量要具有实时性,所以考虑在P3.2口采用外中断0方式输入,这样在主程序中要考虑总中断EA、外中断0EX0的打开,以及对外中断0的检测是下降沿方式还是低电平方式。3、

计数值与数码管之间的对应关系可以采用查表的方式来对应。所谓转速是指单位时间1S内转过的圈数,所以真正的转速计数器必须加1S的时间背景来测定转速的计数值。三、学习知识(一)了解霍尔传感器测速的简单原理

(二)数码管的有关知识1、数码管的种类a)共阴极;b)共阳极;c)管脚配置

2、数码管的段码

显示字符共阴极字码段共阳极字码段显示字符共阴极字码段共阳极字码段03FHC0H96FH90H106HF9HA77H88H25BHA4HB7CH83H34FHB0HC39HC6H466H99HD5EHA1H56DH92HE79H86H67DH82HF71H8EH707HF8HP73H8CH87FH80H熄灭00HFFH(1)静态显示(2)动态显示(三)相关指令学习1、二——十进制调整指令DAA该指令是对累加器参与BCD码运算所获得的8位结果(在累加器中)进行十进制修正,使得累加器中的内容调整为BCD码。DAA进行二——十进制修正的具体过程如下:当A的低4位大于9或AC=1,则低4位加6。当A的高4位大于9或CY=1,则高4位加6。

2、数据交换指令字节交换:指令:XCHA,Rn

XCHA,directXCHA,@Ri例:(A)=03H,(40H)=30HXCHA,40H执行后(A)=30H,(40H)=03H

半字节交换:指令:XCHDA,@Ri例:(A)=80H,(R1)=32H,(32H)=77H执行XCHDA,@R1后(A)=87H,(32H)=7

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论