收藏 分销(赏)

单片机原理实验讲义.pptx

上传人:精*** 文档编号:4408206 上传时间:2024-09-19 格式:PPTX 页数:154 大小:1.51MB
下载 相关 举报
单片机原理实验讲义.pptx_第1页
第1页 / 共154页
单片机原理实验讲义.pptx_第2页
第2页 / 共154页
单片机原理实验讲义.pptx_第3页
第3页 / 共154页
单片机原理实验讲义.pptx_第4页
第4页 / 共154页
单片机原理实验讲义.pptx_第5页
第5页 / 共154页
点击查看更多>>
资源描述

1、基本要求 本课程详细介绍该系列单片机的系统扩展和应用,实用程序及其设计方法等方面的知识。应熟练掌握以下内容:1、学会MCS-51指令系统和汇编语言程序设计。2、掌握单片微机存贮器扩展的基本原理和方法;3、掌握输入输出接口的基本概念,主要模式和基本工作方法及硬件扩展。4、学会使用可编程8255A、8155A等并行接口芯片。5、掌握按键、键盘、显示接口技术。实验准备 实验课前,学生必须预习实验指导书中的实验内容,了解本次实验的目的、要求、仪器设备、实验原理、实验步骤等;实验过程中,按照指导老师的要求进行实验,遵守仪器设备的操作规程;实验结束后,应将实验数据或结果送交指导老师审阅、签字,然后将仪器恢

2、复原状并搞好实验现场的环境卫生,经许可后方可离开实验室。MCS-51单片机的基本组成时钟电路SFR和RAMROMCPU定时/计数器并行端口中断系统串行端口系 统 总 线 时钟源 T0 T1P0 P1 P2 P3 TXD RXD INT0 INT18051CPU(1)一个8位微处理器CPU。(2)内部数据存储器RAM和特殊功能寄存器SFR。(3)内部程序存储器ROM。(4)两个定时/计数器,用以对外部事件进行计数,也可用作定时器。(5)四个8位可编程的I/O(输入/输出)并行端口,每个端口既可做输入,也可做输出。(6)一个串行端口,用于数据的串行通信。(7)中断控制系统。(8)内部时钟电路。MC

3、S-51单片机的引脚配置图P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7RST/VPDRXD/P3.0TXD/P3.1INT0/P3.2INT1/P3.3T0/P3.4T1/P3.5WR/P3.6RD/P3.7XTAL2XTAL1VSS123456789101112131415161718192080318051875189514039383736353433323130292827262521222324P0.0P0.1P0.2P0.3P0.4P0.5P0.6P0.7EA/VPPALE/PROGPSENP2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0MCS-

4、51单片机的片外总线结构单片机的片外总线结构地址锁存器CBI/OA15A14A13A12A11A10A9A8A7A6A5A4A3A2A1A0D7D6D5D4D3D2D1D0DBABP1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7RESETP3.0P3.1P3.3P3.4P3.5P3.6P3.7VSSVCC P0.0P0.1P0.2P0.3P0.5P0.6P0.7EAALEPSENP2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P3.2P0.4MCS-51单片机存储器结构特殊功能寄存器00H 1FH20H2FH30H7FH80HFFH80H88H90H98HA0H

5、A8HB0HB8HD0HE0HF0H 特殊功能寄存器中位寻址外部ROM内部ROM(EA=1)外部ROM(EA=0)0000H0000H0FFFH0FFFH1000HFFFFH外 部RAM(I/O口地址)0000HFFFFH工作寄存器区位寻址区通用RAM区内部数据存储器中的位地址内部数据存储器中的位地址特特殊殊功功能能寄寄存存器器地地址址及及功功能能表表单片机复位后特殊功能寄存器的状态单片机复位后特殊功能寄存器的状态特殊功能寄存器初始状态特殊功能寄存器初始状态A00HTMOD00HB00HTCON00HPSW00HTH000HSP07HTL000HDPL00HTH100HDPH00HTL100H

6、P0P3FFHSBUFBIP00000BSCON00HIE000000BPCON0B中断向量表中断源中断向量复位中断0000H外部中断00003H定时器T0中断000BH外部中断10013H定时器T1中断001BH串行口中断0023H高高低低优优 先先 级级寻址方式1 立即寻址立即寻址2 直接寻址直接寻址3 寄存器寻址寄存器寻址4 寄存器间接寻址寄存器间接寻址5 变址寻址变址寻址6 相对寻址相对寻址7 位寻址位寻址 单片机共有7种寻址方式:立即寻址指令中直接给出操作数。立即操作数用前面加有#号的8位或16位数来表示。例如:MOVA,#60H ;A#60H MOVDPTR,#3400H;DPTR

7、#3400HMOV30H,#40H ;30H单元#40H 返返 回回直接寻址指令中直接给出操作数地址。能进行直接寻址的存储空间有SFR寄存器和内部数据RAM。例:MOV A,30H;A30H内部RAM单元的内容返返 回回寄存器寻址以通用寄存器的内容为操作数的寻址方式。例:CLR A ;A0INC DPTR ;DPTRDPTR+1ADDR5,#20H ;R5#20H+R5返返 回回寄存器间接寻址以寄存器中内容为地址,以该地址中内容为操作数的寻址方式。间接寻址的存储器空间包括内部数据RAM和外部数据RAM。能用于寄存器间接寻址的寄存器有R0,R1,DPTR,SP。其中R0、R1必须是工作寄存器组中

8、的寄存器。SP仅用于堆栈操作。例:MOV R0,A ;内部RAM(R0)A片内RAM30HR034HA30H34HMOV R0,A间接寻址示意图返返 回回变址寻址变址寻址只能对程序存储器中数据进行操作。由于程序存储器是只读的,因此变址寻址只有读操作而无写操作,在指令符号上采用MOVC的形式。例:MOVC A,A+DPTR ;A(A+DPTR)程序存储器2000HDPTR64H(10H)A2010H64H10H2000H返返 回回变址寻址示意图相对寻址以当前程序计数器PC的内容为基础,加上指令给出的一字节补码数(偏移量)形成新的PC值的寻址方式。相对寻址用于修改PC值,主要用于实现程序的分支转移

9、。例:SJMP 08H ;PCPC+2+08H程序存储器(2000H)200AHSJMP200AH08H2000H+208HPC2000H相对寻址示意图返返 回回位寻址位寻址只能对有位地址的单元作位寻址操作。位寻址其实是一种直接寻址方式,不过其地址是位地址。返返 回回最小系统8051CPU板的结构EL-I型8051CPU板含有1片8031CPU、1片地址锁存器74LS373、2片地址译码器GAL16V8和1个时钟发生电路6MHz脉冲,并有用于系统扩展和更改配置的跳线、插孔(1)J2为8051仿真插座,它可以通过仿真电缆与目标相连,用于仿真调试;(2)J3为8051全部引脚的引出孔,可用作面包板

10、实验或与其它实验相连接;(3)J4为8051通过地址锁存器后的低八位地址;(4)CLOCK跳线用来设置仿真时用用户时钟还是用CPU板上的时钟,跳为SYSTEM时,使用系统时钟,跳为USER时使用用户时钟。(5)BANK跳线用来确定64K空间(40007FFFH,8000BFFFH,C000HFFFFH)是分配给系统还是给用户,这主要是为避免访问时出现总线冲突。其中右1控制40007FFFH段,中2控制8000BFFFH,左1控制C000HFFFFH。跳为SYS时分配给系统,而跳为USER时分配给用户板。通用片选地址如下:CS0:CFA0HCFA7H,实验程序、芯片可用的通用片选;CS1:CFA

11、8HCFAFH,实验程序、芯片可用的通用片选;CS3:CFB8HCFBFH,实验程序、芯片可用的通用片选;CS4:CFC0HCFC7H,实验程序、芯片可用的通用片选;CS5:CFC8HCFCFH,实验程序、芯片可用的通用片选;CS6:CFD0HCFD7H,实验程序、芯片可用的通用片选;CS7:CFD8HCFDFH,实验程序、芯片可用的通用片选;CS8250:CFE0HCFE7H,实验程序、芯片可用的通用片选;CS8279:CFE8HCFEFH,实验程序、芯片可用的通用片选。实验一 P1口实验实验二 P1口实验二实验三 简单I/O口扩展实验实验四 中断实验实验五 定时器实验实验六 8255可编程

12、并行接口实验实验七 数码显示实验目 录目录目录实验八 串行口实验单机实验实验九 D/A转换实验实验十 A/D转换实验实验十一 存储器扩展实验实验十二 数字钟实验实验一 P1口实验一、实验目的一、实验目的 1、学习P1口的使用方法。2、学习延时子程序的编写和使用。二、实验内容二、实验内容 1、P1口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。2、P1口做输出口,接八个按纽开关,以实验台上74LS273做输出口,编写程序读取开关状态,在发光二极管上显示出来。三、实验原理三、实验原理 实验原理如图1-1和1-2所示。P1口为准双向口,P1口的每一位都能独立地定义为输入位或输出位。作为

13、输入位时,必须向锁存器相应位写入“1”,该位才能作为输入。8031中所有口锁存器在复位时均置为“1”,如果后来在口锁存器写过“0”,在需要时应写入一个“1”,使它成为一个输入。可以用第二个实验做一下实验。先按要求编号程序并调试成功后,可将P1口锁存器中置“0”,此时将P1做输入口,会有什么结果。再来看一下延时程序的实现。现常用的有两种方法,一是用定时器中断来实现,一是用指令循环来实现。在系统时间允许的情况下可以采用后一种方法。本实验系统晶振为6.144MHz,则一个机器周期为即 。现要写一个延时0.1s的程序,可大致写出如下:MOV R7,#200 (1)DEL1:MOV R6,#X (2)D

14、EL2:DJNZ R6,DEL2 (3)DJNZ R7,DEL1 (4)上面MOV、DJNZ指令均需两个机器周期,所以每执行一条指令需要 ,现求出X值:经计算得 。代入上式可知实际延时时间约为 ,已经很精确了。图图1-1 P1P1口输出实验口输出实验图图1-2 P1P1口输入实验口输入实验仿真电路图:四、实验步骤四、实验步骤 1、编程完成实验内容1。程序框图如图1-3所示,P1.0P1.7接发光二极管L1L8。2、编程完成实验内容2。程序框图如图1-4所示,P1.0P1.7接按纽开关K1K8;74LS273的SO0SO7接发光二极管L1L8;74LS273的片选端CSU8接CS0(由程序所选择

15、的入口地址而定,查看系统资源)。程序初始化,设置P1口寄存器的初值为FEH延时0.1s,使显示稳定将P1口寄存器的数值逐位左移1位图图1-3 循环点亮发光二极管循环点亮发光二极管程序初始化,设置P1口为输入口将P1口数值读入累加器A将累加器A的数值送到273显示图图1-4 通过发光二极管显示通过发光二极管显示P1P1口的状态口的状态五、实验例程五、实验例程NAME T1_1 ;P1口输实验CSEG AT 0000H LJMP STARTCSEG AT 4100HSTART:MOV A,#01H ;先让第一个发光二极管点亮LOOP:MOV P1,A ;从P1口输出到发光二极管 MOV R1,#5

16、 ;延时0.5sDEL1:MOV R2,#200DEL2:MOV R3,#126DEL3:DJNZ R3,DEL3 DJNZ R2,DEL2 DJNZ R1,DEL1 RL A ;左移一位,点亮下一个发光二极管 JMP LOOP SJMP STARTENDNAME T1_2 ;P1口输实验PORT EQU 0CFA0H ;片选地址CS0CSEG AT 0000H LJMP STARTCSEG AT 4100HSTART:MOV P1,#0FFHLOOP:MOV A,P1 ;从P1口读取开关状态 MOV DPTR,#PORT MOVX DPTR,A ;从74LS273输出到发光二极管 LJMP

17、LOOP ;循环END实验二实验二 P1口实验二一、实验目的一、实验目的1、学习P1口既做输入又做为输出的使用方法。2、学习数据输入、输出程序的设计方法。二、实验内容二、实验内容 P1口做为输入、输出口。P1.0、P1.1接K1、K2;P1.2、P1.3接发光二极管L1、L2;P1.6、P1.7接L5、L6。K1做为左转弯开关,K2做为右转弯开关。L1、L2做为左转弯灯,L5、L6做为右转弯灯。要求编写程序实现如下功能:按下K1时左转弯灯以一定频率闪烁,按下K2时右转弯灯以一定频率闪烁,K1、K2同时按下或弹起时,发光二极管灭。三、实验原理三、实验原理 实验原理如图3.2-1所示。P1口的使用

18、方法这里不讲了。有兴趣者不妨将实验例程中的“SETB P1.0 SETB P1.1”中的“SETB”改为“CLR”看看会有什么结果。另外,例程中给出了一种N路转移的常用设计方法,该方法利用了JMP A+DPTR的计算功能实现转移。该法的优点是设计简单、转移表短,但转移表大小加上各个程序长度必须小于256字节。图图3.2-1P1P1口输入口输入/输出实验输出实验 四、实验步骤四、实验步骤 程序框图如图3.2-2所示,K1接P1.0、K2接P1.1;L1接P1.2、L2接P1.3;L5接P1.6、L6接P1.7。下图3.2-2程序框图仿真电路图:五、实验例程五、实验例程NAME T2 ;P1口输实

19、验CSEG AT 0000H LJMP STARTCSEG AT 4100HSTART:SETB P1.0 SETB P1.1 ;用于输入时先置位口内锁存器 MOV A,P1 ANL A,#03H ;从P1口读入开关状态,取低两位 MOV DPTR,#TAB;转移表首地址送DPTR MOVC A,A+DPTR JMP A+DPTR TAB:DB PRG0-TAB DB PRG1-TAB DB PRG2-TAB DB PRG3-TAB PRG0:MOV P1,#00 ;向P1口输出0,发光二极管全灭,此时K1=0,K2=0 JMP START PRG1:MOV P1,#0CH ;只点亮L1、L2

20、,表示左转弯,此时K1=1,K2=0 AAA:ACALL DELAY ;延时0.5s MOV P1,#00 ACALL DELAY ;再熄灭0.5s JMP START PRG2:MOV P1,#0C0H ;只点亮L5、L6,表示右转弯,此时 K1=0,K2=1 JMP AAA PRG3:JMP PRG0 ;发光二极管全灭,此时K1=1,K2=1 DELAY:MOV R1,#5 ;延时0.5s DEL1:MOV R2,#200 DEL2:MOV R3,#126 DEL3:DJNZ R3,DEL3 DJNZ R2,DEL2 DJNZ R1,DEL1 RET END 实验三实验三 简单简单I/OI

21、/O口扩展实验口扩展实验一、实验目的一、实验目的1、学习在单片机系统中扩展简单I/O口的方法。2、学习数据输入,输出程序的编制方法。二、实验内容二、实验内容 利用74LS244做为输入口,读取开关状态,并将此状态通过发光二极管显示出来。三、实验原理三、实验原理 实验原理如图2-1所示。MCS-51外部扩展空间很大,但数据总线口和控制信号线的负载能力是有限的。若需要扩展的芯片较多,则MCS-51总线口的负载过重,74LS244是一个扩展输入口,同时也是一个单向驱动器,以减轻总线口的负担。程序中可以加入一段延时程序,以减少总线口读写的频繁程度。延时时间约为0.01s,不会影响显示的稳定。图图2-1

22、 简单简单I/OI/O实验实验 仿真电路图:四、实验步骤四、实验步骤1、74LS244的SI0SI7接开关的K1K8,片选信号CSU10接CS0。2、74LS273的SO0SO7接发光二极管的L1L8,片选信号CSU8接CS1。3、拨动开关K1K8,观察发光二极管状态的变化。4、程序框图如图3.4-2所示,编程、全速执行。五、实验例程五、实验例程NAME T4 ;I/O口扩展实验CSEG AT 0000H LJMP STARTCSEG AT 4100HPORT1 EQU 0CFA0H ;74LS244端口地址PORT2 EQU 0CFA8H ;74LS273端口地址START:MOV DPTR

23、,#PORT1LOOP:MOVX A,DPTR ;读开关状态 MOV DPTR,#PORT2 MOVX DPTR,A ;显示开关状态 MOV R7,#10H ;延时DEL0:MOV R6,#0FFHDEL1:DJNZ R6,DEL1 DJNZ R7,DEL0 JMP STARTEND一、实验目的一、实验目的 1、学习外部中断技术的基本使用方法。2、学习中断处理程序的编程方法。二、实验内容二、实验内容 在3.33.3的内容的基础上增加允许急救车优先通过的要求。当有急救车到达时,两个方向上的红灯亮,以便让急救车通过,假定急救车通过路口的时间为10s,急救车通过后,交通灯恢复中断前的状态。本实验以单

24、脉冲为中断申请,表示有急救车通过。实验四实验四 中断实验中断实验 实验原理如图图2-1所示,交通灯的燃灭规律见实验二。本实验中断处理程序的应用,最主要的地方是如何保护进入中断前的状态,使得中断程序执行完毕后能回到交通灯中断前的状态。要保护的地方,除了累加器ACC、标志寄存器PSW外,还要注意:一是主程序中的延时程序和中断处理程序中的延时程序不能用,本实验给出的程序中,主程序延时用的是R5、R6、R7,中断延时用的是R3、R4和新的R5。三、实验原理三、实验原理 第二,主程序中每执行一步经74LS273的端口输出数据的操作时,应先将所输出的数据保存到一个单中。因为进入中断程序后也要执行往74LS

25、273端口输出数据的操作,中断返回时如果没有恢复中断前74LS273端口锁存器的数据,则显示往往出错,回不到中断前的状态。还要注意一点,主程序中往端口输出数据操作要先保存再输出,例如有如下操作:MOV A,#0F0H(0)MOVX R1,A(1)MOV SAVE,A(2)程序如果正好执行到(1)时发生中断,则转入中断程序,假设中断程序返回主程序前需要执行一句MOV A,SAVE指令,由于主程序中没有执行(2),故SAVE中的内容实际上是前一次放入的而不是(0)语句中给出的0F0H,显示出错,将(1)、(2)两句顺序颠倒一下则没有问题。发生中断时两方向的红灯一起亮10s,然后返回中断前的状态。四

26、、实验步骤四、实验步骤 程序框图如下图所示,74LS273的输出SO0SO7接发光二极管L1L8,74LS273的片选CSU8接片选信号CSO,此时74LS273的片选地址为CFA0HCFA7H之间任选。单脉冲输出端P1接CPU板上的INT0。开始开始东西路口绿灯亮,南北路口红灯亮东西路口绿灯亮,南北路口红灯亮置口地址置口地址外部中断初始化外部中断初始化两个红灯亮两个红灯亮延时延时3s延时延时10s东西路口绿灯灭东西路口绿灯灭东西路口黄灯闪烁东西路口黄灯闪烁5次次两个红灯亮两个红灯亮延时延时0.2s南北路口绿灯亮,东西路口红灯亮延时延时10s南北路口绿灯灭南北路口绿灯灭南北路口黄灯闪烁南北路口

27、黄灯闪烁5次次两个红灯亮两个红灯亮延时延时0.2s(a)主程序主程序 中断入口有关寄存器入栈延时10s取中断前所保存的数据输出,恢复原始状态有关寄存器出栈外部中断允许标志位置中断返回操作端口使红灯全亮,黄、绿灯全灭(b)中断程序中断程序 仿真电路图:五、实验例程五、实验例程AME T5 ;中断控制实验PORT EQU 0CFB0H ;端口地址SAVE EQU 55H ;save保存从端口cfa0输出的数据CSEG AT 0000H LJMP STARTCSEG AT 4003H LJMP INTCSEG AT 4100HSTART:MOV DPTR,#PORT MOV A,#03H ;置首显示

28、码 MOV SAVE,A ;保存 SETB EX0 SETB EA SETB IT0 MOVX DPTR,A;显示输出 ACALL DE3S ;延时3sLLL:MOV A,#12H ;东西路口绿灯亮,南北路口红灯亮 MOV SAVE,A MOVX DPTR,A ACALL DE10S ;延时10s MOV A,#02H ;东西路口绿灯灭 MOV SAVE,A MOVX DPTR,A MOV R2,#05H;东西路口黄灯闪烁5次TTT:MOV A,#06H MOV SAVE,A MOVX DPTR,A ACALL DE02S MOV A,#02H MOV SAVE,A MOVX DPTR,A A

29、CALL DE02S DJNZ R2,TTT MOV A,#03H ;红灯全亮 MOV SAVE,A MOVX DPTR,A ACALL DE02S ;延时0.2s MOV A,#21H ;东西路口红灯亮,南北路口绿灯亮 MOV SAVE,A MOVX DPTR,A ACALL DE10S ;延时10s MOV A,#01H ;南北路口绿灯灭 MOV SAVE,A MOVX DPTR,A MOV R2,#05H ;南北路口黄灯闪烁5次GGG:MOV A,#09H MOV SAVE,A MOVX DPTR,A ACALL DE02S MOV A,#01H MOV SAVE,A MOVX DPTR

30、,A ACALL DE02S DJNZ R2,GGG MOV A,#03H ;红灯全亮 MOV SAVE,A MOVX DPTR,A ACALL DE02S ;延时0.2s JMP LLL ;转LLL循环DE10S:MOV R5,#100 ;延时10秒 JMP DE1DE3S:MOV R5,#30 ;延时3s JMP DE1DE02S:MOV R5,#02 ;延时0.2sDE1:MOV R6,#200DE2:MOV R7,#126DE3:DJNZ R7,DE3 DJNZ R6,DE2 DJNZ R5,DE1 RETINT:PUSH ACC ;中断处理 PUSH PSW MOV A,R5 PUS

31、H ACC MOV A,#0C3H ;红灯全亮,绿、黄灯全灭 MOVX DPTR,A DEL10S:MOV R3,#100 ;延时10s DEL1:MOV R4,#200 DEL2:MOV R5,#126 DEL3:DJNZ R5,DEL3 DJNZ R4,DEL2 DJNZ R3,DEL1 MOV A,SAVE ;取SAVE中保存数据输出到端口 MOVX DPTR,A POP ACC ;出栈 MOV R5,A POP PSW POP ACC SETB EX0 ;允许外部中断 RETIEND实验五 定时器实验 -循环彩灯实验 一、实验目的一、实验目的 1、学习8031内部计数器的使用和编程方法

32、。2、进一步掌握中断处理程序的编写方法。二、实验内容二、实验内容 由8031内部定时器1按方式1工作,即作为16位定时器使用,每0.1s钟T1溢出中断一次。P1口的P1.0P1.7分别接发光二极管L1L8。要求编写程序模拟一循环彩灯,彩灯变化花样可自行设计。例程给出的变化花样为:(1)L1、L2、L8依次点亮;(2)L1、L2、L8依次熄灭;(3)L1、L2、L8全亮、全灭.各时序间隔为0.5s,让发光二极管按以上规律循环显示下去。三、实验原理 1、定时常数的确定 定时器/计数器的输入脉冲周期与机器周期一样,为振荡频率 的1/12。本实验中时钟频率为6.144MHz,现要采用中断方法来 实现延

33、时,要在定时器1中设置一个时间常数,使其每隔产生一 次中断,CPU响应中断后将R0中计数值减一,令R005H,即可 实现延时.秒。时间常数可按下述方法确定:一个机器周期:可求得X=14336。化为十六进制为X=3800H,故初始值为TH1=38H,TL1=00H计算初始值:2、初始化程序 包括定时器初始化和中断系统初始化,主要是对IP IE、TCON、TMOD的相应位进行正确的设置,并将时间常数送入定时器中。由于只有定时器中断,IP便不必设置。3、设计中断服务程序和主程序 中断服务程序除了要完成计数减一工作外,还要常数重新送入定时器中,为下一次中断做准备。主程序则用来控制发光二极管按要求顺序燃

34、灭。实验电路如图3.6-1所示。由于实验选用的是计数器,且工作方式是,故M0M1=01,C/T=0,GATE=0,则有TMOD=10H在TCON设置中应将运行控制位TR1将置”1”即为:SETB TR1EAXXESET1EX1ET0EX0在IE设置中有 EA=1,ET1=1,故 IE=88H4、仿真电路图四、实验步骤程序框图如图3.6-2所示,将P1.0P1.7分别接发光二极管L1L8即可。开始置首显示码(A)、初始地址偏移量(R1)和计数器初值(R0)定时器初始化,设初值开放EA、ET1及TR1R0为0?装计数初值于R0指向下一个显示代码单元地址偏移量为15H?装入初始偏移量03H从表中取显

35、示码输出显示中断入口关闭计数控制位计数值减1装入时间常数开放计数控制位中断返回(a)主程序主程序 (b)中中断断程程序序N五、实验例程五、实验例程 NAME T6 ;定时器实验OUTPORT EQU 0CFA0H;273地址CSEG AT 0000H LJMP STARTCSEG AT 401BH ;定时器/计数器1中断程序入口地址 LJMP INTCSEG AT 4100H START:MOV A,#01H ;首显示码 MOV R1,#03H ;MOV R0,#5H ;05是计数值 MOV TMOD,#10H ;计数器置为方式1 MOV TL1,#00H ;装入时间常数 MOV TH1,#3

36、8H ORL IE,#88H ;CPU中断开放标志位 和定时器 ;1溢出中断允许位均置位 SETB TR1 ;开始计数 LOOP1:CJNE R0,#00,DISP MOV R0,#5H ;R0计数计完一个周期,重置初值 INC R1 ;表地址偏移量加1 CJNE R1,#15H,LOOP2 MOV R1,#03H ;如到表尾,则重置偏移量初值 LOOP2:MOV A,R1 ;从表中取显示码入累加器 MOVC A,A+PC JMP DISP DB 01H,03H,07H,0FH,1FH,3FH,7FH,0FFH,0FEH,0FCH DB 0F8H,0F0H,0E0H,0C0H,80H,00H,

37、0FFH,00H DISP:MOV DPTR,#OUTPORT MOVX DPTR,A;送往273显示 ;MOV P1,A ;将取得的显示码从P1口输出显示 JMP LOOP1INT:CLR TR1 ;停止计数 DEC R0 ;计数值减一 MOV TL1,#00H ;重置时间常数初值 MOV TH1,#38H SETB TR1 ;开始计数 RETI ;中断返回END程序难点解析:MOVC A A+PC MOV R1,#03H 在程序中PC 是程序执行的当前地址,与表首的偏移量为:rel=tablehead-(pc+1)故rel+其中 JMP DISP占三个字节。CSEG AT 401BH LJ

38、MP INT 401BH是定时器/计数器1中断程序入口地址,当定时器/计数器1溢出时响应中断,指向定时器/计数器1中断程序入口地址即401BH,接着顺序运行中断程序。DISP:MOV DPTR,#OUTPORT MOVX DPTR,A;送往273显示 ;MOV P1,A ;将取得的显示码从P1口输出显示 在 DISP有两种显示方式,前者是通过273显示,后者是直接送往口显示。实验要求:、参照实验例程序,自己从新编写符合要求的程序,例如在程序中可以用查表方式,或者不用查表程序,可以对累加器的操作来完成彩灯的变化。、深刻理解定时器/计数器的工作流程,其功能是如何实现的,其中断过程又是怎样的,它的各

39、控制位如何设置,怎样在其溢出时进入中断子程序对此有了一定的了解之 后,考虑其外部连接的硬件特性。、深刻的体会实验过程,写下心得,整理实验资料,写实验报告。实验六实验六 8255可编程并行接口实验一、实验目的 1、了解8255A芯片的结构及编程方法。2、掌握通过8255A并行口读取开关数据的方法。二、实验内容 利用8255A可编程并行接口芯片,重复3.4的内容。实验可 用B通道作为开关量输入口,A通道作为显示输出口。三、实验原理 实验电路如图3.7-1所示。本实验很简单,主要是注意设置好8255A各端口的工作模式。实验中应当使三个端口都工作于方式0,并使A口为输出口,B口为输入口。实验原理图:仿

40、真电路图:四、实验步骤 程序框图如图3.7-2所示,8255A的PA0PA7接发光二极管L1L8;PB0PB7接开关K1K8;片选信号CS8255接CS0。开始监控制字从B通道读入开关状态从A通道输出到发光二极管延时一段时间程序框图:NAME T7 ;8255A实验CSEG AT 0000H LJMP STARTCSEG AT 4100HPA EQU 0CFA0HPB EQU 0CFA1HPCTL EQU 0CFA3H;状态控制寄存器地址START:MOV DPTR,#PCTL;置8255A控制字,A、B、C口均 工作方式0,A、C;口为输出,B口为输入 MOV A,#82H;写状态字 MOV

41、X DPTR,A五、实验例程:LOOP:MOV DPTR,#PB ;从B口读入开关状态值 MOVX A,DPTR MOV DPTR,#PA ;从A口将状态值输出显示 MOVX DPTR,A MOV R7,#10H ;延时DEL0:MOV R6,#0FFHDEL1:DJNZ R6,DEL1 DJNZ R7,DEL0 JMP LOOP END在本实验中仅是用pa和pb口作简单的输入输出,仅是最基本的功能,对于各端口的使用,非常的灵活,每个端口都可以作为输入输出口,对于pc口,还可以将其设置为状态输入输出口,可以将其进行位操作这些功能的实现都是通过读写控制逻辑和芯片的命令端口的设置来完成的。在本实验

42、中我们要了解对的操作过程,首先,按要求设置正确的读写控制逻辑,然后,向的命令端口写入正确的状态字在设置好的工作方式及输入输出口后,接着就是在写程序时按照设置对各端口进行读写操作。在实验中,同学们可以通过的控制寄存器,状态寄存器,以及数据寄存器的工作情况来认识此芯片。实验要求:、在实验例程的基础上,理解的初始化过程,读写操作方法。、结合实验例子,理解的内部结构。、在完成,之后,尝试的各端口的其他工作方式。实验七实验七 数码显示实验数码显示实验一、实验目的一、实验目的 1、进一步掌握定时器的使用和编程方法。2、了解七段数码显示数字的原理。3、掌握用一个段锁存器,一个位锁存器同时显示多位数字的技术。

43、二、实验内容二、实验内容 利用定时器1定时中断,控制电子钟走时,利用实验台上的六个数码管显示分、秒,做成一个电子钟显示格式为:分分秒秒三、实验原理三、实验原理图图3.9-1数码管显示实验数码管显示实验 如图3.9-1所示的实验电路。由于有六个LED,用静态显示则需要的 I/O 口太多,故适合于动态显示。动态显示就是一位一位地轮流点亮显示器的各个位(扫描)。EL-I型可用一个74LS273作位锁存器,用另一个74LS273作段锁存器。EL-II型由于只有一片74LS273可用,不妨将8031CPU的P1口当作一个锁存器使用,本实验例程用P1口作为位锁存器,74LS273作为段锁存器。定时时间常数

44、计算方法为:定时器1工作于方式1,晶振频率为6.144MHz,故预置值为:经计算有故TH1=38H,TL1=00H。四、实验步骤四、实验步骤 首先将数码显示部分与8279之间的14个短路子全部拔掉,改插在下面两根导柱上,即将每一组的中、下两导柱短接,然后将P1口的P1.0P1.5与LED1LED6相连,74LS273的SO0SO7与ADP相连,片选信号CSU8与CS0相连。程序框图如图3.9-2所示。五、实验例程五、实验例程NAME T9 ;数码显示实验PORT EQU 0CFA0HBUF EQU 23H ;存放计数值SBF EQU 22H ;存放秒值MBF EQU 21H ;存放分值CSEG

45、 AT 0000H LJMP STARTCSEG AT 401BH LJMP CLOCKCSEG AT 4100HSTART:MOV R0,#40H ;40H-45H是显示缓冲区,依次存放 MOV A,#00H ;分高位、分底位,0A,0A(横线)MOV R0,A ;以及秒高位、秒底位 INC R0 MOV R0,A INC R0 MOV A,#0AH MOV R0,A INC R0 MOV R0,A INC R0 MOV A,#00H MOV R0,A INC R0 MOV R0,A MOV TMOD,#10H ;定时器1初始化为方式1 MOV TH1,#38H ;置时间常数,延时0.1秒

46、MOV TL1,#00H MOV BUF,#00H ;置0 MOV SBF,#00H MOV MBF,#00H SETB ET1 SETB EA SETB TR1DS1:MOV R0,#40H ;置显示缓冲区首址 MOV R2,#20H ;置扫描初值,点亮最左边的LED6DS2:MOV DPTR,#PORT MOV A,R0 ;得到的段显码输出到段数据口 ACALL TABLE MOVX DPTR,A MOV A,R2 ;向位数据口P1输出位显码 CPL A MOV P1,A MOV R3,#0FFH ;延时一小段时间DEL:NOP DJNZ R3,DEL INC R0 ;显示缓冲字节加一 C

47、LR C MOV A,R2 RRC A ;显码右移一位 MOV R2,A ;最末一位是否显示完毕?如无则继续往下显示 JNZ DS2 MOV R0,#45H MOV A,SBF ;把秒值分别放于44H,45H中 ACALL GET DEC R0 ;跳过负责显示“-”的两个字节 DEC R0 MOV A,MBF ;把分值分别放入40H、41H中 ACALL GET SJMP DS1 ;转DS1从头显示起TABLE:INC A ;取与数字对应的段码 MOVC A,A+PC RET DB 3FH DB 06H DB 5BH DB 4FH DB 66H DB 6DH DB 7DH DB 07H DB

48、7FH DB 6FH DB 40HGET:MOV R1,A ;把从分或秒字节中取来的值的高 ANL A,#0FH ;位屏蔽掉,并送入缓冲区 MOV R0,A DEC R0 MOV A,R1 ;把从分或秒字节中取来的值的低 SWAP A ;位屏蔽掉,并送入缓冲区 ANL A,#0FH MOV R0,A DEC R0 ;R0指针下移一位 RETCLOCK:MOV TL1,#00H ;置时间常数 MOV TH1,#38H PUSH PSW PUSH ACC INC BUF ;计数加一 MOV A,BUF ;计到10否?没有则转到QUIT退出中断 CJNE A,#0AH,QUIT MOV BUF,#0

49、0H ;置初值 MOV A,SBF INC A ;秒值加一,经十进制调整后放入 DA A ;秒字节 MOV SBF,A CJNE A,#60H,QUIT;计到60否?没有则转到QUIT退出中断 MOV SBF,#00H ;是,秒字节清零 MOV A,MBF INC A ;分值加一,经十进制调整后放入 DA A ;分字节 MOV MBF,A CJNE A,#60H,QUIT;分值为60否?不是则退出中断 MOV MBF,#00H ;是,清零QUIT:POP ACC POP PSW RETI ;中断返回END8279资料:实验八 串行口实验一、实验目的一、实验目的 1、掌握8031串行口方式1的工

50、作方式及编程方法。2、掌握串行通讯中波特率的设置。3、在给定通讯波特率的情况下,会计算定时时间常数。二、实验内容二、实验内容 利用8031串行口发送和接收数据,并将接收的数据通过扩展I/O口74LS273输出到发光二极管显示,结合延时来模拟一个循环彩灯。MCS-51单片机串行通讯的波特率随串行口工作方式选择的不同而不同,它除了与系统的振荡频率f,电源控制寄存器PCON的SMOD位有关外,还与定时器T1的设置有关。(1)在工作方式0时,波特率固定不变,仅与系统振荡频率有关,其大小为f/12。(2)在工作方式2时,波特率也只固定为两种情况:当SMOD=1时,波特率=f/32;当SMOD=0时,波特

展开阅读全文
部分上传会员的收益排行 01、路***(¥15400+),02、曲****(¥15300+),
03、wei****016(¥13200+),04、大***流(¥12600+),
05、Fis****915(¥4200+),06、h****i(¥4100+),
07、Q**(¥3400+),08、自******点(¥2400+),
09、h*****x(¥1400+),10、c****e(¥1100+),
11、be*****ha(¥800+),12、13********8(¥800+)。
相似文档                                   自信AI助手自信AI助手
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服