哈尔滨工业大学微处理器原理与应用实验报告
微处理器实验报告

《微处理器实验》实验报告一、实验目的与任务1、掌握80C51单片机程序的调试与下载方法。
2、掌握80C51单片机并口的工作原理及输入输出控制方法。
3、理解和学会单片机外部中断的使用;4、学习单片机定时器/计数器的应用。
二、实验原理介绍80C51单片机包括P0~P3共4个并口,除可作为普通I/O口使用外,P0口还可用作8位数据总线口和低8位地址口,P2可用作高8位地址口,P3.6、P3.7可用作外部RAM或I/O接口的读、写控制引脚,P3.0~P3.5可用作串口、外部中断、计数器的功能引脚。
ZSC-1实验箱包括4个单片机,其中1#单片机(MCU1)和2#单片机(MCU2)的型号都是STC12C5A60S2,只是封装不同。
STC12C5A60S2采用80C51内核,片内资源和性能较标准80C51单片机增强了许多。
本课程的全部实验只用到MCU1。
图3-1为本实验对应的硬件电路。
P0口用于控制发光管L101~L108,口线输出0(低电平)时,对应的发光管点亮,口线输出1(高电平)时,对应的发光管熄灭。
P3口的4根口线连接独立按键KX0~KX3,由于P3口内部上拉电阻的作用,按键松开时,对应的口线表现为1状态(高电平),按键按下时,对应的口线表现为0状态(低电平)。
中断是指在突发事件到来时先中止当前正在进行的工作,转而去处理突发事件。
待处理完成后,再返回到原先被中止的工作处,继续进行随后的工作。
引起突发事件的来源称为中断源,中断源要求服务的请求称为中断请求,对中断请求提供的服务称为中断服务,中断管理系统处理事件的过程称为中断响应过程。
51类单片机至少包括5个中断源:INT0:外部中断0,由P3.2端口线引入,低电平或下跳沿引起。
(本实验用)INT1:外部中断1,由P3.3端口线引入,低电平或下跳沿引起。
T0:定时器/计数器0中断,由T0计满回零引起。
(本实验用)T1:定时器/计数器l中断,由T1计满回零引起。
哈工大单片机原理与应用满分实验报告

H a r b i n I n s t i t u t e o f T e c h n o l o g y单片机原理与应用实验报告学生姓名学号 11105103班级 1105103专业通信工程任课教师张云所在单位电子与信息工程学院2014年4月软件实验在软件实验部分,通过实验程序的调试,使学生熟悉MCS-51的指令系统,了解程序设计过程,掌握汇编语言设计方法以及如何使用实验系统提供的调试手段来排除程序错误。
实验一清零程序一、实验目的掌握汇编语言设计和调试方法,熟悉键盘操作。
二、实验内容把2000~20FFh的内容清零。
三、程序框图四、实验过程实验过程:根据流程图编写代码,通过Dais进行仿真验证实验原理:对目标段内容分别赋值00H,并通过循环与判断完成段内容的分别赋值。
五、实验结果及分析1、2000H~20FFh中的内容是什么?答:程序对2000H~20FFH进行了清零操作,2000H~20FFH中的内容全为00H。
六、实验源程序;清零程序ORG 0640HMOV DPTR,#2000HMOV A,#00HMOV R0,#0FFHMOVX @DPTR,ALOOP: INC DPTRMOVX @DPTR,ADJNZ R0,LOOPEND实验二拆字程序一、实验目的掌握汇编语言设计和调试方法。
二、实验内容把2000h的内容拆开,高位送2001h低位,低位送2002h低位,2001h、2002h高位清零,一般本程序用于把数据送显示缓冲区时用。
三、程序流程四、实验过程实验过程:根据流程图编写代码,通过Dais进行仿真验证实验原理:把2000h的内容拆开,高位送2001h低位,低位送2002h低位,2001h、2002h高位清零。
五、实验结果及分析如果将2001h、2002h高位置1,程序该如何修改?答:修改程序如下:ORG 0640HMOV DPTR,#2000H ;(2000H)送DPTRMOVX A,@DPTRSWAP AANL A,#FFH ;修改之处INC DPTRMOVX @DPTR,AMOV DPTR,#2000H ;(2000H)送DPTR MOVX A,@DPTRANL A,#FFH ;修改之处INC DPTRINC DPTRMOVX @DPTR,ASJMP $END六、实验源程序;拆字程序ORG 0660HMOV DPTR,#2000HMOVX A,@DPTRSWAP AANL A,#0FHMOV DPTR,#2001HMOVX @DPTR,AMOV DPTR,#2000HMOVX A,@DPTRANL A,#0FHMOV DPTR,#2002HMOVX @DPTR,AEND实验三拼字程序一、实验目的进一步掌握汇编语言设计和调试方法。
微处理器实验报告

《微处理器实验》实验报告一、实验目的与任务1、掌握80C51单片机程序的调试与下载方法。
2、掌握80C51单片机并口的工作原理及输入输出控制方法。
3、理解和学会单片机外部中断的使用;4、学习单片机定时器/计数器的应用。
二、实验原理介绍80C51单片机包括P0~P3共4个并口,除可作为普通I/O口使用外,P0口还可用作8位数据总线口和低8位地址口,P2可用作高8位地址口,P3.6、P3.7可用作外部RAM或I/O接口的读、写控制引脚,P3.0~P3.5可用作串口、外部中断、计数器的功能引脚。
ZSC-1实验箱包括4个单片机,其中1#单片机(MCU1)和2#单片机(MCU2)的型号都是STC12C5A60S2,只是封装不同。
STC12C5A60S2采用80C51内核,片内资源和性能较标准80C51单片机增强了许多。
本课程的全部实验只用到MCU1。
图3-1为本实验对应的硬件电路。
P0口用于控制发光管L101~L108,口线输出0(低电平)时,对应的发光管点亮,口线输出1(高电平)时,对应的发光管熄灭。
P3口的4根口线连接独立按键KX0~KX3,由于P3口内部上拉电阻的作用,按键松开时,对应的口线表现为1状态(高电平),按键按下时,对应的口线表现为0状态(低电平)。
中断是指在突发事件到来时先中止当前正在进行的工作,转而去处理突发事件。
待处理完成后,再返回到原先被中止的工作处,继续进行随后的工作。
引起突发事件的来源称为中断源,中断源要求服务的请求称为中断请求,对中断请求提供的服务称为中断服务,中断管理系统处理事件的过程称为中断响应过程。
51类单片机至少包括5个中断源:INT0:外部中断0,由P3.2端口线引入,低电平或下跳沿引起。
(本实验用)INT1:外部中断1,由P3.3端口线引入,低电平或下跳沿引起。
T0:定时器/计数器0中断,由T0计满回零引起。
(本实验用)T1:定时器/计数器l中断,由T1计满回零引起。
(完整版)北航微机原理实验报告

微计算机原理及运用实验报告目录实验一:I/O地址译码实验 (4)一、实验目的 (4)二、实验原理和内容 (4)三、实验程序 (4)四.实验总结 (5)实验二:8255并行接口实验 (6)一、实验目的 (6)二、实验原理和内容 (6)三、程序框图 (7)四.实验程序 (7)五.实验总结 (8)实验三:键盘显示控制实验 (9)一、实验目的 (9)二、实验内容及原理 (9)三、流程图 (10)四.程序 (10)五.实验总结 (13)实验四:8254定时器/计数器实验 (14)一、实验目的 (14)二、实验原理和内容 (14)三、实验程序 (14)四.实验总结 (15)实验五:继电器控制实验 (16)一、实验目的 (16)二、实验原理和内容 (16)三、实验中使用的程序 (16)四.实验总结 (18)实验六:DMA传送 (18)一、实验目的 (18)二、实验原理和内容 (18)三、程序 (19)四.实验总结 (20)实验七:8259 中断控制实验 (20)一、实验目的 (20)二、实验原理和内容 (21)三、流程图 (21)四.程序 (21)五.实验总结 (25)实验八:8255中断实验 (25)一、实验目的 (25)二、实验原理和内容 (25)三.实验程序 (26)四.实验总结 (27)实验一:I/O地址译码实验一、实验目的掌握I/O地址译码电路的工作原理。
二、实验原理和内容实验电路如附图1所示,其中74LS74为D触发器,可直接使用实验台上数字电路实验区的D触发器,74LS138为地址译码器。
译码输出端Y0~Y7在实验台上“I/O地址“输出端引出,每个输出端包含8个地址,Y0:280H~287H,Y1:288H~28FH,……当CPU执行I/O指令且地址在280H~2BFH范围内,译码器选中,必有一根译码线输出负脉冲。
附图1 I/O地址译码电路利用这个负脉冲控制L7闪烁发光(亮、灭、亮、灭、……),时间间隔通过软件延时实现。
微处理器原理与应用实验指导书--修改后

一、硬件实验系统介绍EL型微机教学实验系统的最大特点是采用了模块化组合式设计,容8051、8086、80C198/80C196 三位于一体,而且可用功能齐全,硬件实验系统介绍如下:1.1 系统概述(1)主要技术特性:1.微处理器:INTEL8051。
2.时钟频率:6MHZ。
3.存储器:程序存储器、数据存储器统一编址。
最多达64K,板上ROM(监控)16K;EL—II型的RAM32K供用户使用,可扩展至48K。
用户存储器的起始地址为4000H;8051原有中断入口,均需定位在偏移4000H之后的相应地址,如外部中断0入口在原程序中应为:ORG 4003HLJMP INT0(中断服务程序入口标号)4.8255A可编程并行接口芯片一个。
5.串行接口两个:(1)8250芯片一个,与主机通讯用。
(2)单片机串行接口一个供用户使用。
6.6×5键盘一个,除CNTL键和SHIFT键外,其余28个键可用户自定义。
7.8279键盘、显示接口芯片一个。
8.六位LED数码显示。
9.ADC0809 A/D转换芯片一个。
10.DAC0832 D/A转换芯片一个。
11.8位简单输入接口74LS244一个;EL—II型简单输出接口74LS273一个。
12.配有逻辑电平开关;发光二极管显示电路。
13.三路0~5V连续可调模拟量输入。
14.一个可产生正、负脉冲的脉冲发生器。
15.8253可编程定时器一个计数器一个,74LS161计数器一个,输出4路时钟信号。
16.实验箱电源为正5V、正负12V,也可采用PC机电源或外接电源。
17.EL—II型配有一个20针EEPROM写入器接线插座,结合EEPROM8951系列写入器(可选件),可写EEPROM2864、28256、89C1051、89C2051、89C51、89C52等芯片,实验箱上有J1 EPROM字样的标记。
18.EL—II型配有一个20针的作微控制实验的接线插座,可进行步进电机、炉温控制、小直流电机调速等实验,实验箱上有J2 CONTR字样的标记。
微机原理及应用的实验报告

微机原理及应用的实验报告1. 实验介绍在本次实验中,我们将学习微机原理及应用的基本知识,并通过实践来深入理解和应用这些知识。
本实验旨在让我们熟悉微机系统的原理、组成部分以及在实际应用中的一些常见问题和解决方案。
2. 实验目的•了解微机系统的基本组成部分•掌握微处理器的工作原理和操作方法•学习使用汇编语言编写简单的程序•熟悉实验中常用的开发工具和调试技术3. 实验步骤1.首先,我们需要了解微机系统的基本组成部分。
微机系统主要由中央处理器(CPU)、内存、输入输出设备和总线组成。
其中,CPU是微机系统的核心部件,它负责执行程序的指令和处理数据。
内存用于存储程序和数据,输入输出设备用于与外部环境进行数据交互,总线则负责连接各个部件之间的数据传输。
2.接下来,我们将学习微处理器的工作原理和操作方法。
微处理器是CPU的核心组成部分,它由运算器、控制器和寄存器组成。
运算器负责执行各种算术和逻辑运算,控制器负责控制程序的执行流程,寄存器用于保存指令、数据和中间结果。
3.在实验中,我们将学习使用汇编语言编写简单的程序。
汇编语言是一种低级语言,它与机器语言直接相对应。
通过编写汇编程序,我们可以更加直观地了解指令的执行过程以及数据的处理方式。
同时,在实验中我们还将学习如何使用调试工具对程序进行调试和测试。
4.最后,我们将熟悉实验中常用的开发工具和调试技术。
在实验中,我们将使用一些开发工具如汇编器、编译器和调试器来编写、编译和调试程序。
同时,我们还将学习如何使用逻辑分析仪和示波器等调试工具来对程序进行分析和验证。
4. 实验结果通过本次实验,我对微机原理及应用有了更深入的了解。
我学会了微机系统的基本组成部分,了解了微处理器的工作原理和操作方法,并且能够使用汇编语言编写简单的程序。
同时,我还熟悉了实验中常用的开发工具和调试技术,能够使用它们来进行程序的编写、编译和调试。
通过实验,我对微机系统的原理和应用有了更加直观和深入的认识。
北理工微机原理与接口技术之8255,8253实验报告

北理工微机原理与接口技术之8255,8253实验报告微机原理与接口技术实验报告———8253可编程定时器8255并行接口实验实验一8255并行接口实验一,实验内容8255的A口作为输入口,与逻辑电平开关相连。
8255的B口作为输出口,与发光二极管相连。
编写程序,使得逻辑电平开关的变化在发光二极管上显示出来。
二,实验目的(1)掌握8255的工作原理。
(2)掌握编写8255并行接口初始化及编程实现的方法。
三,实验仪器微机实验教学系统实验箱、8086CPU模块四,实验步骤(1)连线8255的PA0—PA7分别与逻辑电平开关的K1—K8相连?PB0—PB7分别与发光二极管电路的LED1—LED8相连?CS0与8255的片选CS8255相连其它线路均已连好具体如图所示:(2)编辑程序,编译链接后,单步运行,调试程序。
(3)调试通过后,全速运行,观察实验结果。
(4)撰写实验报告。
五,实验源程序如下CODE SEGMENT PUBLICASSUME CS:CODEORG 100HSTART:MOV DX,04A6HMOV AX,90H ;写8255的控制字,A组工作在方式0,A口输入,C口高4位输出,B组工作在方式0,B口及C口的低4位均工作在输出OUT DX,AXSTART1:MOV DX,04A0HIN AX,DX ;读取A口数据MOV DX,04A2HOUT DX,AX ;将从A口读取的数据从B口输出,控制LED灯JMP START1CODE ENDSEND START六,实验现象LED灯低电平有效。
当某一开关拨到低电平时,对应的LED灯点亮。
当某一开关拨到高电平时,对应的LED灯熄灭七,思考题1.将片选线接到CS1—CS7;重新编写程序。
CS0对应地址是04A0---O4AF, CS1对应地址是04B0---O4BF.现将片选线接到CS1,重新编程:CODE SEGMENT PUBLICASSUME CS:CODEORG 100HSTART:MOV DX,04B6H ;CS1对应的地址MOV AX,90HOUT DX,AXSTART1:MOV DX,04B0HIN AX,DXMOV DX,04B2HOUT DX,AXJMP START1CODE ENDSEND START实验现象:如同片选线接到CS02.交换A B接线,A口输出、B口输入;重新编写程序。
微处理器设计实验报告

微处理器设计实验任务&目标利用Verilog HDL语言,基于Xilinx FPGA nexys4实验平台,设计一个能够执行以下MIPS指令集的单周期类MIPS处理器,要求完成所有支持指令的功能仿真,验证指令执行的正确性,要求编写汇编程序将本人学号的ASCII码存入RAM的连续内存区域微处理器各个模块硬件设计原理、Verilog代码顶层模块ROM块采用异步输出,RAM同步输出,异步写入。
该方案有三个部分用到了时钟信号:指令指针赋值,寄存器文件写入数据,数据存储器输出数据。
指令指针赋值与始终上升沿同步,而寄存器文件数据写入以及数据存储器数据输出、输入与时钟下降沿同步Verilog代码module top(input reset);reg [31:0] PC;wire J,B,Bzero,zero,M2R,memwr,Imm,regwr,RtDst;wire [1:0] ALUop;wire [3:0] ALUctr;wire [31:0] NewPC,JMPPC,BranPC,Imm32L2,Imm32,NotJMPPC,TempPC;wire [31:0] Instr,WriteData,DataOut,Res,RsData,RtData,in2;wire [4:0] WriteAddr;assign Imm32={{16{Instr[15]}},Instr[15:0]};assign WriteAddr=RtDst?Instr[15:11]:Instr[20:16];assign in2=Imm?Imm32:RtData;assign WriteData=M2R?DataOut:Res;assign NotJMPPC=Bzero?BranPC:NewPC;assign TempPC=J?JMPPC:NotJMPPC;assign Bzero=B&zero;assign Imm32L2=Imm32<<2;assign JMPPC={NewPC[31:28],Instr[25:0],2'b00};assign BranPC=NewPC+Imm32L2;assign NewPC=PC+4;always@(posedge clk)if(!reset)PC=TempPC;elsePC=32'b0;mainctr mainctr1(Instr[31:26],ALUop,RtDst,regwr,Imm,memwr,B,J,M2R);ALU alu(RsData,in2,ALUctr,Res,zero);aluctr_gzt aluctr1(ALUop,Instr[5:0],ALUctr);DataRAM dram(Res[7:2],RtData,!clk,memwr,DataOut);InstrROM irom(PC[8:2],Instr);regFile regfile(clk,reset,regwr,Instr[25:21],Instr[20:16],WriteAddr,WriteData,RsData,RtData); endmodule主控制器module mainctr(input [5:0] opCode,output [1:0] ALUop,output RtDst,output regwr,output Imm,output memwr,output J,output M2R);reg [8:0] outputtemp;assign RtDst=outputtemp[8];assign Imm=outputtemp[7];assign M2R=outputtemp[6];assign regwr=outputtemp[5];assign memwr=outputtemp[4];assign B=outputtemp[3];assign J=outputtemp[2];assign ALUop=outputtemp[1:0];always@(opCode)case(opCode)6'b000010:outputtemp =9'bxxx0_001_xx; //imp6'b000000:outputtemp =9'b1001_000_10; //R6'b100011:outputtemp =9'b0111_000_00; //lw6'b101011:outputtemp =9'bx1x0_100_00; //sw6'b000100:outputtemp =9'bx0x0_010_01; //beq6'b001000:outputtemp =9'b0101_000_11;default:outputtemp =9'b000000000;endcaseendmoduleALU运算模块module ALU(input [31:0] in1,input [31:0] in2,input [3:0] ALUctr,output reg [31:0] Res,output reg zero);always @(in1 or in2 or ALUctr)begincase(ALUctr)4'b0000: //andRes = in1&in2;4'b0001: //orRes = in1 | in2;4'b0010: //addRes = in1 + in2;4'b0110: //subbeginRes = in1 - in2;zero = (Res == 0)?1:0;end4'b0111:Res=(in1<in2)?1:0;default: //othersRes = 0;endcaseendendmoduleALU控制器module aluctr_gzt(input [1:0] ALUop,input [5:0] func,output reg [3:0] ALUctr);always @(ALUop or func)casex({ALUop,func})8'b00xxxxxx: ALUctr=4'b0010; //lw,sw8'b01xxxxxx: ALUctr=4'b0110; //beq8'b10xx0000: ALUctr=4'b0010; //add8'b11xxxxxx: ALUctr=4'b0010;8'b10xx0010: ALUctr=4'b0110; //sub8'b10xx0100: ALUctr=4'b0000; //and8'b10xx0101: ALUctr=4'b0001; //or8'b10xx1010: ALUctr=4'b0111; //sltdefault : ALUctr=4'b0000;endcaseendmodule寄存器文件module regFile(input clk,input reset,input regwr,input [4:0] RsAddr,input [4:0] RtAddr,input [4:0] WriteAddr,input [31:0] WriteData,output [31:0] RsData,output [31:0] RtData);reg [31:0] regs [0:31];assign RsData = (RsAddr == 5'h0)?32'h0:regs[RsAddr];assign RtData = (RsAddr == 5'h0)?32'h0:regs[RtAddr];integer i;always@(negedge clk or posedge reset)if (reset)for(i=0;i<32;i=i+1)regs[i]<=0;else if(regwr)regs[WriteAddr] <= WriteData;endmoduleROM汇编程序设计代码main:add $14,$12,$13addi $11,$0,200addi $12,$0,85 #Usw $12,36($11)addi $13,$0,50 #2sw $13,32($11)addi $14,$0,48 #0sw $14,28($11)addi $15,$0,49 #1sw $15,24($11)addi $16,$0,55 #7sw $16,20($11)addi $17,$0,49 #1sw $17,16($11)addi $18,$0,51 #3sw $18,12($11)addi $19,$0,53 #5sw $19,8($11)addi $14,$0,53 #5sw $14,4($11)addi $18,$0,55 #7sw $18,0($11)add $4,$2,$3lw $4,4($2)sw $2,8($2)sub $2,$4,$3or $2,$4,$3and $2,$4,$3slt $2,$4,$3beq $4,$3,exitj mainexit: lw,$2,0($3)j mainRegfile模块仿真激励代码module regSim();reg clk ;reg reset;reg regwr;reg [4:0] RsAddr;reg [4:0] RtAddr;reg [4:0] WriteAddr;reg [31:0] WriteData;wire [31:0] RsData;wire [31:0] RtData;regFile uut(clk,reset,regwr,RsAddr,RtAddr,WriteAddr,WriteData,RsData,RtData);parameter PERIOD = 10; //clk period 10nsalways beginclk = 1'b0;#(PERIOD/2) clk = 1'b1; //rising edge#(PERIOD/2); //falling edgeendinitial beginreset=1; //reset 14 nsRsAddr=3;RtAddr=0;WriteAddr=5;WriteData=8;regwr=1;#14 reset=0; //20ns writedata stored in writeaddr $5=8#20 RsAddr=5; //34ns RsData=8;endendmodule仿真截图验证Regfile模块正确性首先将光标移到14ns处,reset一直为有效电平,故regs值一直为0,符合复位功能要求。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
微处理器原理与应用实验报告姓名:***同组人:张绍文、马文佳、孙蓦征学号:**********班级:0805204指导教师:***院系:电子信息工程1 实验一简单I/O口扩展实验(一)交通灯控制实验1.1实验要求扩展实验箱上的74LS273作为输出口,控制八个发光二极管燃灭,模拟交通灯管理。
1.2实验目的1.学习在单片机系统中扩展简单I/O接口的方法2.学习数据输出程序的设计方法3.学习模拟交通灯控制的实现方法1.3实验原理本实验需要用到实验箱上八个发光二极管中的六个,即红、黄、绿各两个。
不妨将L1、L3、L5作为东西方向的指示灯,将L2、L4、L6作为南北方向的指示灯。
而交通灯的燃灭规律为:初始态是两个路口的红灯全亮,之后,东西路口的绿灯亮,南北路口的红灯亮,东西方向通车,延时一段时间后,东西路口绿灯灭,黄灯开始闪烁。
闪烁若干次后,东西路口红灯亮,而同时南北路口的绿灯亮,南北方向开始通车,延时一段时间后,南北路口的绿灯灭,黄灯开始闪烁。
闪烁若干次后,再切换到东西路口方向,重复上述过程。
各发光二极管共阳极,阴极接有与非门,因此使其点亮应使相应输入端为高电平。
1.4 实验内容(包括实验电路和程序流程图)按指导书搭接电路,调试程序并运行。
图1实验电路图图2实验流程图1.5 实验结果实验现象与既定目标相符:初始态是两个路口的红灯全亮,之后,东西路口的绿灯亮,南北路口的红灯亮,东西方向通车,延时一段时间后,东西路口绿灯灭,黄灯开始闪烁。
闪烁若干次后,东西路口红灯亮,而同时南北路口的绿灯亮,南北方向开始通车,延时一段时间后,南北路口的绿灯灭,黄灯开始闪烁。
闪烁若干次后,再切换到东西路口方向,重复上述过程。
1.6 实验结果讨论分析实验中发现交通灯在黄灯和红绿灯切换的时候有抖动和延时,初步估计是单片机定时系统不稳定以及程序的延时冗余没有添加所导致。
1.7 实验程序代码PORT EQU 0CFA0H ;片选地址CS0ORG 0000HLJMP BEGINORG 4100HBEGIN: MOV A,#03H ;1、2亮,其余灭ACALL SHOW ;调用273显示单元ACALL T03 ;延时3秒EW: MOV A,#12H ;东西导通;南北截止ACALL SHOWACALL T10 ;延时10秒MOV A,#02H ;东西截止;南北截止ACALL SHOWSNBY: MOV A,#04H ;3亮,其余灭ACALL SHOW ;调用273显示单元ACALL T02 ;延时2秒MOV A,#00H ;ACALL SHOWACALL T02 ;延时2秒MOV A,#04H ;3亮ACALL SHOWACALL T02 ;延时2秒MOV A,#00H ;灭ACALL SHOWACALL T02 ;2秒MOV A,#04H ;3亮ACALL SHOWACALL T02 ;2秒MOV A,#00H ;灭ACALL SHOWACALL T02 ;2秒MOV A,#04H ;3亮ACALL SHOWACALL T02 ;2秒MOV A,#00H ;灭ACALL SHOWACALL T02 ;2秒MOV A,#04H ;3亮ACALL SHOWACALL T02 ;2秒MOV A,#00H ;东西黄灯闪烁程序ACALL SHOWACALL T02 ;延时0.2秒MOV A,#02H ;东西路口黄灯灭;南北路口红灯亮ACALL SHOWACALL T02 ;延时0.2秒MOV A,#03H ;东西南北都截止ACALL SHOWACALL T02 ;延时0.2秒MOV A,#21H ;东西截止;南北导通ACALL SHOWACALL T10 ;延时10秒MOV A,#01H ;东西截止;南北截止ACALL SHOWSN: MOV A,#08HACALL SHOWACALL T02MOV A,#00HACALL SHOWACALL T02MOV A,#08HACALL SHOWACALL T02MOV A,#00HACALL SHOWACALL T02MOV A,#08HACALL SHOWACALL T02MOV A,#00HACALL SHOWACALL T02MOV A,#08HACALL SHOWACALL T02MOV A,#00HACALL SHOWACALL T02MOV A,#08HACALL SHOWACALL T02MOV A,#00H ;南北黄灯闪烁程序ACALL SHOWACALL T02 ;延时0.2秒MOV A,#01H ;东西截止;南北截止ACALL SHOWACALL T02 ;延时0.2秒MOV A,#03H ;东西南北都截止ACALL SHOWACALL T02 ;延时0.2秒JMP EW ;转EW循环T10: MOV R1,#100 ;延时10秒JMP TU1T03: MOV R1,#30 ;延时3秒JMP TU1T02: MOV R1,#02 ;延时0.2秒TU1: MOV R2,#200TU2: MOV R3,#126TU3: DJNZ R3,TU3DJNZ R2,TU2DJNZ R1,TU1RETSHOW: MOV DPTR,#PORT ;273显示单元MOVX @DPTR,ARETEND2 实验二简单I/O口扩展实验(二)2.1实验要求利用74LS244作为输入口,读取开状态,并将此状态通过发光二极管显示出来。
2.2实验目的1.学习在单片机系统中扩展简单的I/O口的方法。
2.学习数据输入,输出程序的编制方法。
2.3实验原理MCS-51外部扩展空间很大,但数据总线口和控制信号线的负载能力是很有限的。
若需要扩展的芯片较多,则MCS-51总线口的负载过重,74LS244是一个扩展输入口,同时也是一个单向驱动器,以减轻总线口的负担。
程序中加了一段延时程序,以减少总线口读写的频繁程度,延时时间约为0.01秒,不会影响显示的稳定。
2.4 实验内容(包括实验电路和程序流程图)按指导书搭接电路,调试程序并运行。
图3实验电路图图4实验电路图图5实验流程图2.5 实验结果74LS244作为输入口,二极管按开关状态显示。
2.6 实验结果讨论分析在发光二极管显示的过程中,有抖动产生,通过消抖开关或者程序延时可以消除抖动。
2.7 实验程序代码ORG 0000HLJMP BEGINORG 4100HINPORT EQU 0CFA8H ;读入开关状态OUTPORT EQU 0CFB0H ;输出开关状态BEGIN: MOV DPTR,#INPORTDO: MOVX A,@DPTRMOV DPTR,#OUTPORTMOVX @DPTR,AMOV R1,#0AHX0: MOV R0,#7DHX1: DJNZ R0,X1DJNZ R1,X0 ;延迟0.1sLJMP BEGINEND3 实验三中断实验——有急救车的交通灯控制实验3.1实验要求在实验三的内容基础上增加允许急救车优先通过的要求。
当有急救车到达的时候,两个方向上的红灯亮,以便让急救车通过,假定急救车通过路口的时间为10秒,急救车通过后,交通灯恢复中断前的状态。
本实验以单脉冲为中断申请,表示有急救车通过。
3.2实验目的1、学习外部中断技术的基本使用方法。
2、学习中断处理程序的编程方法。
3.3实验原理交通灯的燃灭规律见实验三。
本实验中断处理程序的应用,最主要的地方是如何保护进入中断前的状态,使得中断程序执行完毕后能回到交通灯中断前的状态。
要保护的地方,除了累加器ACC,标志寄存器PSW外,还要注意:一是主程序中的延时程序和中断处理程序中的延迟程序不能混用,本实验给出的程序中,主程序延迟用的是R5、R6、R7。
中断延迟用的是R3、R4和新的R5。
第二,主程序中每执行一步经74LS273的端口输出数据的操作时,应先将所输出的数据保存到一个单元中。
因为进入中断程序后也要执行往74LS273端口输出数据的操作,中断返回时如果没有恢复中断前74LS273端口锁存器的数据,则显示往往出错,回不到中断前的状态。
还要注意一点,主程序中往端口输出数据操作要先保存再输出,例如有如下操作:MOV A, #0F0H (0)MOVX R1, A (1)MOV SA VE, A (2)程序如果正好执行到(1)时发生中断,则转入中断程序,假设中断程序返回主程序前需要执行一句MOV A,SA VE指令,由于主程序中没有执行(2),故SA VE中的内容实际上是前一次放入的而不是(0)语句中给出的0F0H,显示出错,将(1)、(2)两句顺序颠倒一下则没有问题。
发生中断时两方向的红灯一起亮10秒,然后返回中断前的状态。
3.4 实验内容(包括实验电路和程序流程图)按电路图搭接电路,调试程序并运行。
实验电路图及程序流程图与实验一一样,下附中断程序流程图。
3.5 实验结果小灯泡按顺序发光。
由外部中断(应急处理),东西向南北向均为红灯亮。
3.6 实验结果讨论分析实验成功模拟了中断操作,需要注意的是中断钱需要对堆栈进行操作,同时如果不设置恢复程序中断前的数据会较容易丢失。
3.7 实验程序代码OUTPORT EQU 0CFB0H ;端口地址SA VE EQU 55H ;save保存从端口cfa0输出的数据ORG 0000HLJMP BEGINORG 4003H ;LJMP INTORG 4100HBEGIN: SETB IT0 ;跳沿触发SETB EX0 ;允许外部零中断SETB EA ;cpu开中断MOV A,#03H ;置首显示码,2红亮MOV SA VE,A ;保存ACALL SHOW ;显示输出ACALL T03 ;延时3秒EW: MOV A,#12H ;东西导通;南北截止MOV SA VE,AACALL SHOWACALL T10 ;延时10秒MOV A,#02H ;东西截止MOV SA VE,AACALL SHOWMOV R0,#05H ;东西黄灯闪烁5次SNBY: MOV A,#06HMOV SA VE,AACALL SHOWACALL T02MOV A,#02HMOV SA VE,AACALL SHOWACALL T02DJNZ R0,SNBYMOV A,#03H ;东西南北都截止MOV SA VE,AACALL SHOWACALL T02 ;延时0.2秒MOV A,#21H ;东西截止,南北导通MOV SA VE,AACALL SHOWACALL T10 ;延时10秒MOV A,#01H ;南北截止MOV SA VE,AACALL SHOWMOV R0,#05H ;南北黄灯闪烁5次SN: MOV A,#09HMOV SA VE,AACALL SHOWACALL T02MOV A,#01HMOV SA VE,AACALL SHOWACALL T02DJNZ R0,SNMOV A,#03H ;东西南北都截止MOV SA VE,AACALL SHOWACALL T02 ;延时0.2秒LJMP EW ;转EW循环T10: MOV R3,#100;延时10秒LJMP TU1T03: MOV R3,#30 ;延时3秒LJMP TU1T02: MOV R3,#02 ;延时0.2秒TU1: MOV R4,#200TU2: MOV R5,#126TU3: DJNZ R5,TU3DJNZ R4,TU2DJNZ R3,TU1RETINT: CLR EAPUSH ACC ;中断处理PUSH PSWMOV A,R3PUSH ACCMOV A,R0PUSH ACCMOV A,#03H ;东西南北都截止ACALL SHOWTT10: MOV R1,#100;延时10秒TT01: MOV R0,#200TT02: MOV R3,#126TT03: DJNZ R3,TT03DJNZ R2,TT02DJNZ R1,TT01MOV A,SA VE ;取SA VE中保存数据输出到cfa0端口ACALL SHOWPOP ACC ;出栈MOV R0,APOP ACC ;出栈MOV R3,APOP PSWPOP ACCSETB EA ;允许外部中断RETISHOW: MOV DPTR,#OUTPORTMOVX @DPTR,ARETEND4 实验四定时器实验----循环彩灯实验4.1实验要求由8031内部定时器1按方式1工作,即作为16位定时器使用,每0.1秒钟T1溢出中断一次。