8051实验报告
8051单片机实验报告

8051单片机实验报告练习题一1-1修改例程一的源程序:(1)将A寄存器的初值改为80H(正逻辑,数据位为1表示发光二极管点亮),再对源程序进行简单修改,使程序运行后发光二极管点亮情况与修改前相同。
(2)将LED向左循环移位点亮改为向右循环移位点亮。
(3)加快LED循环移位点亮的速度。
(1)在源程序MOV A,#080H后加CPL A(对A取反,80H取反后为7FH)。
(2)将RR A改为RL A。
(3)删除几个CALL DELAY。
1-2将例程二0-F的循环显示改为0-9的循环显示。
将源程序中CJNE A,#10H,MAIN改为CJNE A,#0AH,MAIN.练习题二2-1通过对例程5的程序进行修改和上机调试,改变原程序的功能。
(1)将KEY2,KEY4的功能对调。
(2)每次停下再启动后,更改发光二极管点亮的循环方向。
(1)将ORG 0003H改为0013H,将ORG 0013H改为0003H;将MOV IP,#01H改为MOV IP,#04H;将SETB EX1改为SETB EX0,将SETB EX0改为SETB EX1,将CLR EX0改为CLR EX1;将CLR IE1改为CLR IE0,将CLR IE0改为CLR IE1;(2)程序如下,主要利用两个循环分别进行左移与右移。
$include (C8051F020.inc)ORG 0000HLJMP INITIALORG 0013HLJMP STARORG 0003HLJMP STOPORG 0100HINITIAL: LCALL Init_DeviceMOV R4,#0FHMOV P3,#0FFHMOV A,#0FFHMOV DPTR,#7F80HMOVX @DPTR,AMOV A,#0FEHMOV R1,#1HMOV IP,#04HMOV TCON,#05HSETB EX0SETB EALOOP1: CLR EACJNE R4,#0FH,LOOP2RL ACJNE R4,#0FH,LOOP2MOV P3,ACJNE R4,#0FH,LOOP2INC R1CJNE R4,#0FH,LOOP2SETB EALCALL DELAY1LCALL DELAY1LCALL DELAY1LCALL DELAY1CJNE R1,#8,LOOP1MOV R1,#0HSJMP LOOP1LOOP2: CLR EACJNE R4,#0F0H,LOOP1RR ACJNE R4,#0F0H,LOOP1MOV P3,ACJNE R4,#0F0H,LOOP1DEC R1SETB EALCALL DELAY1LCALL DELAY1LCALL DELAY1LCALL DELAY1CJNE R1,#0,LOOP2MOV R1,#8SJMP LOOP2STOP: PUSH ACCMOV A,R1MOV DPTR,#TABMOVC A,@A+DPTRMOV DPTR,#7F80HMOVX @DPTR,ASETB EX1JNZ $MOV A,#0FFHMOVX @DPTR,ACLR EX1POP ACCCLR IE0RETISTAR: MOV A,#00HCLR IE1PUSH ACCMOV A,R4CPL AMOV R4,APOP ACCRETITAB: DB 0C0H,0F9H,0A4H,0B0H,099HDB 092H,082H,0F8H,080H DELAY1: MOV R6,#0D1: MOV R7,#0DJNZ R7,$DJNZ R6,D1RET$include (Init_Device.inc) ;END2-2修改例程6,将计数范围由0-F扩展至00-FF(使用定时器/计时器0),并在2位数码管上用10进制数显示计数结果(00-99)。
8051实验

基础实验部分实验1 P1口实验一一、实验目的:1.学习P1口的使用方法。
2.学习延时子程序的编写和使用。
二、实验设备:CPU挂箱、8031CPU模块三、实验内容:1.P1口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。
2.P1口做输入口,接八个按纽开关,以实验箱上74LS273做输出口,编写程序读取开关状态,在发光二极管上显示出来。
四、实验原理:P1口为准双向口,P1口的每一位都能独立地定义为输入位或输出位。
作为输入位时,必须向锁存器相应位写入“1”,该位才能作为输入。
8031中所有口锁存器在复位时均置为“1”,如果后来在口锁存器写过“0”,在需要时应写入一个“1”,使它成为一个输入。
可以用第二个实验做一下实验。
先按要求编好程序并调试成功后,可将P1口锁存器中置“0”,此时将P1做输入口,会有什么结果。
再来看一下延时程序的实现。
现常用的有两种方法,一是用定时器中断来实现,一是用指令循环来实现。
在系统时间允许的情况下可以采用后一种方法。
本实验系统晶振为6.144MHZ,则一个机器周期为12÷6.144us即1÷0.512us。
现要写一个延时0.1s的程序,可大致写出如下:MOV R7,#X (1)DEL1:MOV R6,#200 (2)DEL2:DJNZ R6,DEL2 (3)DJNZ R7,DEL1 (4)上面MOV、DJNZ指令均需两个机器周期,所以每执行一条指令需要1÷0.256us,现求出X值:1÷0.256+X(1÷0.256+200×1÷0.256+1÷0.256)=0.1×10⁶指令(1)指令(2)指令(3)指令(4)所需时间所需时间所需时间所需时间X=(0.1××10⁶-1÷0.256)/(1÷0.256+200×1÷0.256+1÷0.256)=127D=7FH 经计算得X=127。
8051汇编语言实训

实训内容实训1:P1口做输出口,控制八只发光二极管,编写程序,使相邻的发光二极管从左到右循环点亮。
实训2:P3口的P3.0连接一个开关,作为输入端;P1口的P1.0~P1.7连接八只发光二极管,作为输出端。
要求用P3.0来控制P1输出的循环灯,即当P3.0输出高电平时,控制P1口的发光二极管右循环点亮;当P3.0输出低电平时,控制P1口的发光二极管左循环点亮(P1口输出低电平时发光二极管被点亮)。
实训3:用8051单片机控制八个发光二极管,先1~8依次点亮,再1357同时亮。
闪三下,再2468亮,闪三下,再循环。
实训4:P1接8个发光二极管,编译程序使二极管从1亮到8,然后熄灭1个,2个直到8个全熄灭,循环进行。
实训5:用89S52单片机构件建一个彩灯控制系统,系统用P1口外接8个发光二极管。
状态1:控制系统通电或复位后,8个LED发光二极管依次从左向右开始逐个点亮,间隔时间为0.2S。
状态2:8个LED发光二极管全亮后,从右向左LED发光二极管再逐个熄灭,间隔时间仍为0.2S。
状态3:8个LED发光二极管全灭后,从左右两边开始同时点亮LED 发光二极管,全亮后,8个LED发光二极管再明暗一起闪烁2次,间隔时间仍为0.2s。
实训6:用89S52单片机构件建一个彩灯控制系统,系统用P1口外接8个发光二极管,没有键按下时,8支彩灯每隔0.5s全亮全灭一次。
按K1时,8支彩灯从左至右循环点亮。
按K2时,8支彩灯从右至左循环点亮。
按K3时,8支彩灯先右循环点亮后左循环点亮。
同时按下K1和K2时,8支彩灯从中间向外循环点亮。
同时按下K2和K3时,8支彩灯从两端向内循环点亮。
同时按下K1和K3时,8支彩灯从左到右依次点亮后从右到左依次熄灭,反复循环。
同时按下三个键时,0、2、4、6、1、3、5、7循环点亮。
实训7:定时器T1每0.05秒中断一次,单片机P1口接8个发光二极管LED0~LED7,编写程序,使发光二极管有规律地循环点亮。
80c51单片机专业实习(专业实习报告)

实习报告姓名:学号:班级:实习单位:天津理工大学模块:单片机控制模块设计单片机模块专业设计一.设计的目的通过本模块专业实习,目的旨在提高学生对课上知识的应用能力,开拓学生的思维,提高学生的动手能力。
总结起来包括以下几点目的:1. 学习Protel软件,掌握Protel软件原理图绘制功能;2. 掌握单片机内部定时器的使用及编程方法;3. 掌握 A/D 转换与单片机的接口方法,了解 A/D 芯片ADC0809 转换性能及编程方法,了解单片机如何进行数据采集;4. 掌握程序存储器和数据存储器扩展的方法,了解程序存储器芯片27256和数据存储器芯片6264的接口方法;5. 掌握单片机系统中扩展I/O接口的方法,了解芯片74LS273的接口方法;6. 了解8279芯片的工作原理,掌握扩展中8279芯片键盘显示接口的编程;二.设计实验设备EL-MUT-III 型单片机实验箱、8051CPU 模块、计算机三.设计内容及要求根据设计指导教师要求,本次设计主要涉及到的应用模块总共有四块,总体围绕8051单片机展开。
四块分别是ADC0809模拟量采集模块;8279芯片实现显示和键盘接口模块;27256程序存储器扩展模块;6264数据存储器扩展模块。
针对ADC0809模拟量采集模块的要求是:接线要求,利用实验台上的ADC0809 做A/D 转换器,实验箱上的电位器提供模拟电压信号输入,使用的输入通道为IN3(本人班级为3班);程序要求,使用定时中断,ADC0809没采集一次周期为100ms 将模拟量转换结果的数字量通过74LS273作为输出口,控制8个发光二极管的亮灭。
针对8279芯片实现显示和键盘接口模块的要求是:利用8279芯片,控制2个数码管显示本人学号的后两位(本人学号为20110789,即显示89),并实现当按键没按下一次时,学号显示自动加一。
扩展出一片程序存储器芯片27256和一片数据存储器芯片6264;并利用Protel软件,设计上述功能的电路,并绘制完整原理图;同时编制程序,实现上述所有功能,并调试通过;四.各模块原理图解释ADC0809模拟量采集模块在该模块设计中,主要涉及到的器件包括:ADC0809,74LS373,74LS02,下面对每个器件做简要介绍:ADC0809的引脚图如下图所示:ADC0809是单片双列直插式集成电路芯片,是8通路8位的A/D转换器,起主要特点是:分辨率8位;当模拟输入电压范围为0到5V时,可以使用单一的+5V电源;转换时间为100微妙;温度范围为-40到85摄氏度;可直接与CPU连接,不需另加接口逻辑;内部带8路模拟开关;可以输入8路模拟信号;输出带锁存器;逻辑电平与TTL兼容。
8051硬件实验2 模拟交通灯实验

硬件实验2 模拟交通灯实验1.实验目的1)进一步掌握基本I/O输入输出操作指令的灵活应用。
2)了解双色LED的控制、使用方法。
3)了解模拟交通灯的控制方法。
2.预习要求1)了解双色LED的结构、引脚功能和连接方法。
2)了解交通灯的工作过程和控制逻辑。
3)预习本节实验内容,设计实验的硬件连接,编写实验程序。
3.实验说明可以采用双色发光二极管(双色LED)作为交通指示灯。
双色发光二极管,即在一个LED封装中集成了2个发光LED,常见的是1个红色、1个绿色,当控制两个LED同时点亮时显示出黄色,因此双色LED有3种显示色。
其构成如图3-4所示。
当红色LED点亮、绿色LED不点亮时,发光二极管显示红色;当绿色LED点亮、红色LED不点亮时,发光二极管显示绿色;当红色LED、绿色LED同时点亮时,发光二极管呈现的是黄色。
另外,当控制双色LED红、绿两个PN结流过不同比例的电流时,可以使其发出粉红、淡绿、淡黄、黄色等不同的色彩,达到简单的“彩色”显示效果。
双色LED有共阴、共阳两种封装形式,提供3个引脚,其中一个为公共端,两个为显示控制端。
图3-4 双色LED结构原理图4.基础型实验如图3-5所示是采用P1口控制4个双色LED的接口电路。
在Keil环境运行并调试例程程序,观察结果。
图3-5 交通灯显示接口电路ORG 0000HLOOP:MOV P1,#0FFHNOPLCALL DELAY1SMOV P1,#0AAHNOPLCALL DELAY1SMOV P1,#55HNOPLCALL DELAY1SSJMP LOOPEND5.设计型实验电路如图3-5所示,D3、D4、D5和D6、D7、D7分别控制南北和东西方向的红黄绿指示灯。
设计程序,用6个LED控制两个方向的交通,具体要求如下。
²4个路口的红灯全部亮0.5s后,东西路口的绿灯亮,南北路口的红灯亮,东西路口方向通车;²延时一段时间后(2s),东西和南北路口的绿灯、红灯闪烁若干次(如2s),然后均变为黄灯亮;²延时一段时间后(0.5),东西路口的红灯亮,南北路口的绿灯亮,南北路口方向通车;²延时一段时间后(2s),南北和东西路口的绿灯、红灯闪烁若干次后(如2s),然后均变为黄灯亮;²延时一段时间后(0.5s),再切换到东西路口的绿灯亮,南北路口的红灯亮; ²不断重复以上过程,实现模拟交通灯控制。
实验六 8051单片机串行口实验

实验六8051单片机串行口实验一实验目的:理解8051单片机串行口工作原理和方式。
学习和掌握8051单片机实现通讯的环境和程序编写。
了解PC机通讯的基本要求。
二实验原理:在实时控制和管理方面,采用多台微机处理机组成分级分布控制系统中,各CPU之间的通信一般都是串行方式。
所以串行接口是微机应用系统常用的接口。
所谓“串行通信”是指外设和计算机间使用一根数据信号线(另外需要地线,可能还需要控制线),数据在一根数据信号线上一位一位地进行传输,每一位数据都占据一个固定的时间长度。
如图6-1所示。
这种通信方式使用的数据线少,在远距离通信中可以节约通信成本,当然,其传输速度比并行传输慢。
图6-1在串行通讯时,RS-232C接口是目前最常用的一种串行通讯接口,RS-232C使用-3到-25V表示数字“1”,使用3V到25V表示数字“0”,RS-232C在空闲时处于逻辑“1”状态。
8051单片机上有UART用于串行通信,发送时由TXD端送出数据,接收时则由RXD端输入数据。
它是一个可编程的全双工串行口。
SCON是串行口控制和状态寄存器,其格式如下:表6-1其中,SM0,SM1为串行口工作方式控制位,具体的工作方式如下表(表6-2)所示:表6-2SM2为多机通信控制位,当SM2=1时,只有接受到RB8为1,RI才置位,当SM2=0时,接受到字符RI就置位。
REN为串行口接收允许位。
工作在方式2和3时,TB8为发送的第9位数据,也可以用作奇偶校验位,RB8为接受到的第9位数据,而方式1时,RB8为接受到的停止位。
TI,RI分别为发送接受中断标志位,均由硬件置位,软件清0。
PCON是电源控制寄存器,其格式如下:表6-3其中,SMOD为串行口波特率加倍位。
当SMOD=1时,方式1,3波特率=定时器1溢出率/16,方式2波特率为fosc/32;当SMOD=0时,方式1,3波特率=定时器1溢出率/32,方式2波特率为fosc/64。
80C51单片机-实验报告

实验一 CPU片内(外)清零1.CPU片内RAM清零一、实验目的:掌握MCS-51汇编语言的设计,了解单片机的寻址方式以及调试方法。
二、实验内容:把单片机片内的30H~7FH单元清零。
三、实验框图:四、实验步骤:用连续或者单步的方式运行程序,检查30H-7FH执行前后的内容变化。
五、参考实验程序:程序名称:PNQL.ASMORG 0000HJMP MAINORG 0030HMAIN:MOV R0,#30H ;30H送R0寄存器CLR1:MOV A,#00H ;00送累加器AMOV @R0,A ;00 送到30H-7FH单元INC R0 ;R0加1CJNE R0,#7FH,CLR1 ;不到7F字节再清WAIT:LJMP WAITEND六、实验思考:如果把30H-7FH的内容改为99H,如何修改程序。
2.CPU 片外RAM清零一、实验目的:掌握MCS-51汇编语言的设计,了解单片机的寻址方式以及调试方法。
二、实验内容:把外部扩展的RAM的0000H-00FFH单元内容清零。
三、实验框图:四、实验步骤:用连续或者单步的方式运行程序,检查0000H-00FFH执行前后的内容变化。
五、参考实验程序:程序名称:PWQL.ASMORG 0000HMAIN:MOV SP,#60HMOV DPTR,#0000H ;0000H送DPTR寄存器MOV R6,#0FFH ;FFH送R6寄存器(计数)CLR1:MOV A,#00H ;00送累加器AMOVX @DPTR,A ;00 送到0000H-00FFH单元INC DPTR ;DPTR+1DJNZ R6,CLR1 ;不到FF个字节再清WAIT:SJMP WAITEND六、实验思考:把1-10先对应存入片内0030H起始的单元内,然后再从片内取出,对应存入片外7FFFH起始的单元中去。
实验二P1口亮灯实验一、实验目的:学习MCS-51单片机P1口的使用方法二、实验内容:P1口做输出,接8个发光管,编写程序,使得8个二极管循环点亮。
8051微机硬件实验报告完整

实验报告Array课程名称:___ 微机原理与接口技术_ __指导老师:___ _王晓萍__ __成绩:__________________ 实验名称:硬件实验__实验类型:__ \ _同组学生姓名:_ __ 一、实验目的和要求二、实验内容和原理三、主要仪器设备四、操作方法和实验步骤五、实验数据记录和处理六、实验结果与分析七、讨论、心得第二篇硬件实验实验一I/O口控制实验一、实验目的1.学习P1口的使用方法;2.学习延时子程序的编写和使用。
二、实验说明P1口是准双向口,它作为输出口时与一般的双向口使用方法相同。
由准双向口结构可知当P1口用作输入口时,必须先对口的锁存器写“1”,若不先对它写“1”,读入的数据可能是不正确的。
三、实验步骤实验1:用P1 口做输出口,接八位逻辑电平显示,程序功能使发光二极管从右到左轮流循环点亮。
1.用8P 数据线连接80C51 MCU 模块的JD1(P1 口)与八位逻辑电平显示模块的JD1A5。
2.打开Keil uVision2 仿真软件,选择硬件仿真,选择串行口,设置波特率为38400。
3.新建一个项目文件,添加“TH7_P1A.ASM”源程序,编译,直到编译无误后进入仿真环境。
4.打开模块电源和总电源,点击RUN 按钮运行程序。
观察发光二极管显示情况。
发光二极管单只从右到左轮流循环点亮。
实验2:用P1.0、P1.1 作输入接两个拨断开关,P1.2、P1.3 作输出,接两个发光二极管。
程序读取开关状态,并在发光二极管上显示出来。
1.用导线分别连接80C51 MCU 模块的P1.0、P1.1 到八位逻辑电平输出模块的K0、K1;P1.2、P1.3到八位逻辑电平显示模块的L0、L1。
2.打开“TH7_P1B.ASM”源程序,编译无误后,进入仿真环境。
3.全速运行程序,拨动拨断开关,观察发光二极管的亮灭情况。
向上拨为点亮,向下拨为熄灭。
四、实验电路图五、实验流程图及源程序1.流程图2.源程序(一)实验1(二)实验23.实验结果程序编译无误后打开实验箱电源,进入仿真环境,可得如下实验结果:1)实验1:结果:点击RUN按钮运行程序后,发现实验箱上的发光二极管单只从右到左轮流循环点亮。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
8051单片机实验报告本次8051课程主要学习了MCS-51单片机结构,以及通过μVision2软件对MCS-51单片机进行编程,掌握了该单片机的并行接口设计、中断系统设计、定时计数器设计、串行接口设计以及扩展和接口设计技术。
下面将以并行接口输入输出实验,中断实验以及定时/计数器实验给出实验报告。
实验一并行接口输入、输出实验一.实验目的1.熟悉51单片机并行口的输入方式、输出方式的编程。
2.熟悉51单片机并行口的应用编程软件仿真调试方法。
3.学会在线烧写单片机程序的方法。
二.实验原理MCS-51单片机有P0、P1、P2、P3四个8位双向I/O口,每个端口可以按字节输入或输出,也可以按位进行输入或输出,四个口共32根口线,用作位控制十分方便。
P0口为三态双向口,能带8个TTL电路;P1、P2、P3口为准双向口,负载能力为4个TTL电路。
5.1 PO~P3端口的功能和内部结构5.1.1 端口功能大多数口线都有双重功能,具体介绍如下:PO口—1.作为输入/输出口。
2.作为地址/数据总线,接外围芯片时PO口分时输出低8 位地址与数据信号。
●P1口—1.作为输入/输出口。
2.在增强型(52系列)和ISP型(在系统编程型)中有如下功能:P1.0 T2引脚,定时/计数器2外部计数脉冲输入P1.1 T2EX引脚,定时/计数器2触发和方向控制P1.5 MOSI引脚,在系统编程数据输入P1.6 MISO引脚,在系统编程数据输出P1.7 SCK引脚,在系统编程时钟输入●P2口—1.作为输入/输出口。
2.作为高8位地址总线。
●P3口—P3口为双功能1.作第一功能使用时,其功能为输入/输出口。
2.作第二功能使用时,每一位功能定义如下表所示:归纳四个并行口使用的注意事项如下:1。
如果单片机内部有程序存贮器,不需要扩展外部存贮器和I/O 接口,单片机的四个口均可作I/O口使用。
2。
四个口在作输入口使用时,均应先对其写“1”,以避免误读。
3。
P0口作I/O口使用时应外接10K的上拉电阻,其它口则可不必。
4。
P2可某几根线作地址使用时,剩下的线不能作I/O口线使用。
5。
P3口的某些口线作第二功能时,剩下的口线可以单独作I/O口线使用。
三、实验程序举例1.设计一电路,监视某开关K,用发光二极管LED显示开关状态,如果开关合上,LED 亮、开关打开,LED熄灭。
分析:设计电路如图5. 2如示。
开关接在P1.1口线,LED接P1.0口线,当开关断开时,P1.1为+5V,对应数字量为“1”,开关合上时P1.1电平为0V,对应数字量为“0”,这样就可以用JB指令对开关状态进行检测。
LED正偏时才能发亮,按电路接法,当P1.0输出“1”,LED正偏而发亮,当P1.0 输出“0” ,LED 的两端电压为0 而熄灭。
编程如下:CLR P1.0;使发光二极管灭LED 89C51+5VVcc--EARST 10uF1KP1.089S51+5VP1.11K30P30P XTAL1XTAL2GNDKAGA:SETB P1.1 ;先对P1口写入“1” JB P1.1,LIG ;开关开,转LIGSETB P1.0;开关合上,二极管亮SJMP AGALIG: CLR P1.0;开关开,二极管灭SJMP AGA在上述电路图中二极管亮度不够,按下面两种电路接法,增加了驱动能力,二极管更亮些。
接成灌电流形式:加驱动电路:2.用P1.0输出1KHz 和500Hz 的音频信号驱动扬声器,作报警信号,要求1KHz 信号响100ms ,500Hz 信号响200ms ,交替进行,P1.7接一开关进行控制,当开关合上响报警信号,当开关断开告警信号停止,编出程序。
分析:500Hz 信号周期为2ms ,信号电平为每1ms 变反1次。
1KHz 的信号周期为1ms ,信号电平 每500µS 变反1次,编一个延时500µS 子程序,延时1ms 只需调用2次。
用R2控制音响时间长短,A 作音响频率的交换控制的标志。
A=FF 时产生1KHz 信号,A=0时产生500Hz 信号。
P1.0P1.0+5V汇编程序代码如下:ORG 0000HCLR A ;A作1KHz,500Hz 转换控制BEG: JB P1.7, $;检测P1.7的开关状态MOV R2, #200 ;开关闭合报警,R2控制音响时间DV:CPL P1.0CJNE A, #0FFH, N1 ;A≠FFH,延时500µSACALL D500 ;A=FFH ; 延时1ms P1.0变反N1:ACALL D500DJNZ R2,DVCPL ASJMP BEGD500:MOV R7, #250 ;延时500µ S子程序DJNZ R7, $RETEND用C语言编程如下:#include<reg51·h>sbit P10=P1^0;sbit P17=P1^7;main(){unsigned char i,j;while(1){P17=1;while(P17==0){ for(i=1; i<=200; i++) /*控制音响时间*/{ P10=~P10;for(j=0; j<=50; j++); /*延时完成信号周期时间*/ }for(i=1; i<=200; i++) /*控制音响时间*/{P10=~P10;for(j=0; j<=100; j++); /*延时,完成信号周期时间*/}}}}``上述程序只产生报警音响效果,周期和响的时间长短是准确的,欲合乎要求,最好用定时器定时。
实验二中断实验一、实验目的了解中断的产生及响应过程,掌握中断程序的编制。
二、实验原理1、中断系统结构8XX51有5个中断源,3个在片内,2个在片外,当CPU 响应中断时,硬件自动形成这些地址,由此进入中断服务程序;5个中断源有两级中断优先级,可形式中断嵌套;8XX51有5个中断源,其符号、名称、产生条件及中断服务程序的入口地址如下表:2、 中断控制的有关寄存器 (1)中断的允许和禁止——中断控制寄存器IEIE 寄存器的各位对应相应的中断源,如果允许该中断源中断则该位置1,禁止中断则该位置0(2)中断请求标志及外部中断方式选择寄存器TCON(3)中断优先级管理寄存器IP五个中断源的优先级别由IP 寄存器管理,相应位置1,则该中断源优先级别高,置0的优先级别低。
当某几个中断源在IP 寄存器相应位同为1或同为零时,由内部查询确定优先级,查询的顺序是:INT0T0 INT1 T1 串行口 CPU 优先响应先查询的中断请求MCS_51系列单片机的中断结构可以用图6.1示。
三、实验程序举例汇编语言的中断服务程序按规定的中断矢量地址存入,由于五个中断矢量地址0003H 、000BH 、0013H 、001BH 、0023H 之间相图6.1 中断系统INT0INT1T0T1TX RX高级中断请求PC低级中断请求PC硬件查询距很近,往往装不下一个中断服务程序,通常将中断服务程序安排在程序存贮器的其他地址空间,而在矢量地址的单元中安排一条转移指令。
1、在图6.3中P1.4~P1.7接有四个发光二极管,P1.0~P1.3接有四个开关,消抖电路用于产生中断请求信号,当消抖电路的开关来回拔动一次将产生一个下降沿信号,通过INT0向CPU申请中断,要求:初时发光二极管全黑,每中断一次,P1.0~P1.3所接的开关状态反映到发光二极管上,且要求开关断开的对应发光二极管亮,编程如下:ORG 0000HAJMP MAINORG 0003H ;INT0中断入口AJMP WBI ;转中断服务程序ORG 0030H ;主程序MAIN: MOV P1,#0FH ;全灯灭,低四位输入SETB IT0 ;边沿触发中断SETB EX0 ;允许外中断0中断SETB EA ;开中断开关SJMP $WBI:MOV P1,#0FH ;P1先写入“1”且灯灭MOV A,P1 ;输入开关状态SWAP AMOV P1,A ;输出到P1高4位RETIEND300Ω 4图6.3此例的执行现象是,每重置一次四个开关的开、合状态,四个发光二极管维持原来的亮、灭状态,仅当来回拔动消抖电路开关后,产生了中断,发光二极管才反映新置的开关状态。
2、89C51的P1口接一个共阴极的数码管,利用消抖开关产生中断请求信号,每来回拔动一次开关,产生一次中断,用数码管显示中断的次数(最多不超过15次)。
图6.4ORG 0000HAJMP MAINORG 0013H ;INT1中断入口AJMP INT1 ;转中断服务程序ORG 0030H ;主程序MAIN:SETB IT1 ;边沿触发中断SETB EX1 ;允许INT1中断SETB EA ;开中断开关MOV R0,#0 ;计数初值为0MOV A,#3FH ;“0”的字形码送AAL1:MOV P1,A ;显示数码AL2:CJNE R0,#0FH,AL1 ;没满15次循环显示MOV R7,#0FFH ;满15次,显‘F’,延时DJNZ R7,$MOV P1,#0 ;关显示CLR EA ;关中断SJMP $;结束INT1:INC R0 ;中断次数加1MOV A,R0MOV DPTR,#TAB ;DPTR指向字形码表首址MOVC A,@A+DPTR ;查表POP DPHPOP DPL ;弹出断点MOV DPTR,#AL1PUSH DPLPUSH DPH ;修改中断返回点,AL1压入堆栈RETI ;从堆栈AL1地址→PC,返主程序AL处TAB:DB 3FH,06H,5BH,4FH,66H,6DHDB 7DH,07H,7FH,6FH,77H,7CHDB 39H,5EH,79H,71H;段码表(字形码)END上面程序每中断一次,执行一次中断服务程序INT1。
在中断服务程序中,累计中断次数并查字形表,返回到主程序AL1地址执行显示。
实验三定时/计数器实验一、实验目的了解定时/计数器的应用,掌握其应用编程方法。
二、实验原理51系列单片机片内有二个十六位定时/计数器:定时器0(T0)和定时器1(T1)。
两个定时器都有定时或事件计数的功能,可用于定时控制、延时、对外部事件计数和检测等场合定时/计数器实际上是16位加1计数器。
T0由2个8位持殊功能寄存器TH0和TL0构成,T1由2个8位持殊功能寄存TH1和TL1构成。
每个定时器都可由软件设置为定时工作方式或计数工作方式。
T0和T1受特殊功能寄存器TMOD和TCON控制。
1. 定时工作方式设置为定时工作方式时,定时器计数的脉冲是由51单片机片内振荡器经12分频后产生的。
每经过一个机器周期定时器(T0或T1)的数值加1直至计数满产生溢出。
如:当8051采用12MHz晶体时,每个机器周期为1μs,计5 个机器周期即为5 μs,即定时5 μs 。