哈尔滨工业大学微处理器原理与应用实验报告
微处理器实验报告
《微处理器实验》实验报告一、实验目的与任务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 熟悉并使用传送类指令题3. 模仿test1.Asm的循环结构,编写多字节数据的传送程序,把内部RAM的30H--39H单元置为10H-19H,然后传送到外部RAM的0100H--0109H单元。
提示:(1)用寄存器作内部RAM指针,用DPTR作外部RAM指针。
(2)设置内部RAM的30H--39H单元的值为10H-19H:解:程序如下:ORG 0000HAJMP STARTORG 0100HSTART:MOV R1,#10HMOV DPTR,#0100HMOV R2,#0AHLOOP:MOV A,@R1MOVX @DPTR,AINC R1INC DPTRDJNZ R2,LOOPNOPSJMP $END运行结果如下图所示:在memory1中,在Address 控件填上D:0x30,可查看内部RAM 30h单元开始的值,将30h-39h 置为10h-19h。
实验2:熟悉并使用算术逻辑操作类指令题2.编写程序,将6位压缩BCD码123456与6位BCD码567890相加,结果仍用BCD码表示。
第一组BCD码放在30H开始连续的内部存储器单元内,第二组BCD 码放在40H开始连续的内部存储器单元内,相加结果放在50H开始的连续的内部存储器单元内。
解:程序如下:ORG 0000HAJMP STARTORG 0100HSTART:MOV 30H,#56HMOV 31H,#34HMOV 32H,#12HMOV 40H,#90HMOV 41H,#78HMOV 42H,#56HMOV R0,#30HMOV R1,#40HMOV R2,#03HMOV R3,#50H LOOP:MOV A,@R0ADD A,@R1DA AMOV @R1,AINC R0INC R1INC R3DJNZ R2,LOOP NOPSJMP $END运行结果如下:实验3:顺序程序设计:拆字和拼字题1 .拆字程序69H存放在片外RAM中0200H地址上。
微处理器实习报告
微处理器实习报告一、实习背景及目的随着科技的不断发展,微型计算机技术得到了迅猛的普及和应用,微处理器作为微型计算机的核心部件,其性能和功能越来越受到重视。
为了更好地了解微处理器的工作原理和应用场景,提高自己在计算机领域的实际操作能力,我选择了微处理器实习项目。
本次实习的主要目的是:1. 学习微处理器的基本原理和工作机制;2. 掌握微处理器的编程方法和应用技巧;3. 培养自己在实际项目中解决问题的能力;4. 提高自己的团队协作和沟通能力。
二、实习内容与过程1. 实习前的准备工作:在实习开始前,我们参加了由指导老师举办的实习动员大会,了解了实习的要求和注意事项。
同时,我们还自学了相关教材和资料,为实习打下了扎实的理论基础。
2. 实习过程:实习过程中,我们以小组为单位,共同完成了以下任务:(1)学习微处理器的基本原理:我们通过阅读教材、讨论和请教老师,掌握了微处理器的基本组成、工作原理和性能指标,了解了不同类型的微处理器及其应用场景。
(2)编程实践:我们使用C语言进行编程,实现了简单的微处理器指令集模拟,掌握了寄存器、内存、栈等基本操作,并学会了使用汇编语言进行程序编写。
(3)实际操作:我们使用实验室的微处理器开发板,进行了硬件连接和编程调试,实现了流水灯、计数器等基本功能,并在此基础上进行了一些拓展应用。
(4)项目汇报:在实习结束前,我们以小组为单位进行了项目汇报,展示了实习成果,分享了实习过程中的心得体会和解决问题的方法。
三、实习收获与反思1. 实习收获:通过本次实习,我深入了解了微处理器的基本原理和工作机制,掌握了微处理器的编程方法和应用技巧,提高了自己在实际项目中解决问题的能力,为今后在计算机领域的发展打下了坚实基础。
2. 实习反思:在实习过程中,我发现自己在理论知识和实际操作之间存在一定的差距,需要在今后的学习中加强实践环节。
同时,我也意识到团队协作和沟通能力在实际项目中的重要性,将在今后的工作中更加注重与他人合作,提高自己的沟通技巧。
微处理器与及接口技术实验报告
实验报告实验报告一、实验题目延时警报器二、实验内容1.外设:红色LED:P2.3,绿色LED:P2.4 以及蜂鸣器:P2.1,无按键按下时,绿灯点亮,红灯熄灭,蜂鸣器无声;一旦按键按下,即触发报警器进入报警状态,红绿灯交替闪烁,蜂鸣器发出警报声。
2.按键:选择按键K1(P2.2)模拟非安全情况,按键按下及开始报警。
3.定时器:T0用来定时,控制灯闪烁的时间;T1用来产生中断,到达指定时间后警报自动停止。
整体功能:安全情况下,绿灯点亮,红灯熄灭,蜂鸣器无声;一旦按键按下,即触发报警器进入报警状态,红绿灯交替闪烁,蜂鸣器发出警报声。
到达指定时间后警报自动停止,从而达到报警目的。
三、原理图用AD画出的延时警报器原理图如下:四、实验记录实验前期较为顺利,因为已经提前预习了相关内容。
程序运行无误后烧录进单片机后能实现延时警报器的功能。
但是,在验收时,老师说要求必须有定时器中断,所以用了大量的时间进行中断程序的编写与调试,最后实现了预期的功能。
以下是遇到的问题及解决办法:问题一:烧录程序时显示握手失败,无法找到正确的串口。
解决办法:我的烧录软件版本较低,不能自动找到串口,所以我安装的驱动精灵,下载的驱动,就能找到正确的串口了。
问题二:按下按键后,红绿灯能交替闪烁,但是蜂鸣器不响。
解决办法: 我又重新看了开发板的电路原理图,发现蜂鸣器是低电平的时候发声,所以我改变了高低电平,之后就能正常运转了。
问题三:验收时没有用到定时器中断。
解决办法:我这个延时警报器时一旦报警之后除非按下复位键或断电才能停止报警,所以我想到使用定时器中断,让它能报警10秒钟后自动停止报警,模拟汽车的报警,如果有物体碰到汽车,汽车就会报警,并且一段时间之后会自动停止报警。
在编写这个中断程序的时候暴露出了很多小问题,调用子程序指令我写成了跳转指令,甚至缺少了中断返回指令,这些问题最后都在老师的指导下改正过来,最终实现了预期的功能并加入了定时器中断。
微处理器实验报告三
实验报告院别:电子信息学院课程名称:微处理器实验班级:姓名:学号:实验名称:中断与串行通信实验实验时间:成绩:教师签名:批改时间:一、实验原理与目的实验目的:1、学会实验仪用户程序的下载和执行;2、理解单片机的串口通信原理,学会单片机串行口的使用;3、学会单片机串行口中断的使用。
实验原理:串口通讯实验是单片机和主机之间进行的通讯实验。
由于仿真仪系统已经占用了通讯口,因此不能使用仿真系统的监控程序来进行软硬件联合调试!只能可以通过软件仿真来排除语法错误和关键程序段的错误,然后直接将程序下载到仿真仪上,脱机执行程序(具体可参考p17)。
二、实验仪器1、PC机一台;2、DP-51PRO 单片机综合仿真实验仪一台;3、普通示波器一台。
三、实验内容1、编写一段程序,利用单片机的串行口向PC机发送字符串。
在下面的原理图中,短接JP15就将单片机的串口,通过MAX232和插座连接到主机的串口信号线上了。
图3-2 串口通信连接图1)编写程序,设置目标选项成功通过KEIL系统的编辑、编译和部分程序的动态调试。
2)连接实验仪的串口和主机的串口,参照实验二方法将用户程序下载到单片机的FLASH中。
3)运行主机上的DPFLASH,点击主菜单上的串口调试器,并设置相应的参数波特率为9600,字符数为8位。
4)将MOD-SW1拨到RUN一边,按一下复位键,程序就开始运行了。
观察主机上接收到的字符串。
2、编写一段程序,接收主机串行口发送来的字符,在单片机接收到‘A’的时候返回一个‘T’表示正确,否则返回一个‘F’表示错误。
3、采用串行口中断方式,实现实验内容和步骤2的要求。
4、编写程序并运行,接受主机发来的一串字母(大小写兼有)和数字(以$结束),然后将其中的大写字母变成小写(其余不变),再回送给主机。
四、实验分析1、如上图连线后,编写一段程序让其在串口输出为“'WELCOME TO ZSC”,程序如下所示,在按复位键之前,程序将会不间断地输出“'WELCOME TO ZSC”:ORG 0000HLJMP MAINORG 0050HDB 'WELCOME TO ZSC'ORG 0100HMAIN: CLR EAMOV SP,#60H ;给堆栈指针赋初值MOV TMOD,#20H ;设置T1 为方式2MOV TH1,#0FDH ;设置波特率为9600MOV TL1,#0FDHMOV SCON,#40H ;设置串口位方式1MOV PCON,#00HSETB TR1 ;定时器1 开始计数MOV R7,#14HMOV DPTR,#0050HLOOP: MOV A,#00HMOVC A,@A+DPTRMOV SBUF,A ;开始发送JNB TI,$CLR TIINC DPTRDJNZ R7,LOOPSJMP MAINEND2、程序二中,要求输入大写字母"A"即输出"T",否则输出为"F",经过修改,把大写字母"A"的ASCII 码以八位二进制码映射到LED灯上,程序如下:ORG 0000HLJMP MAINORG 0050HDB 'WELCOME TO ZSC'ORG 0100HMAIN: CLR EAMOV SP,#60H ;给堆栈指针赋初值MOV TMOD,#20H ;设置T1 为方式2MOV TH1,#0FDH ;设置波特率为9600MOV TL1,#0FDHMOV SCON,#40H ;设置串口位方式1MOV PCON,#00HSETB TR1 ;定时器1 开始计数MOV R7,#14HMOV DPTR,#0050HLOOP: MOV A,#00HMOVC A,@A+DPTRMOV SBUF,A ;开始发送JNB TI,$CLR TIINC DPTRDJNZ R7,LOOPSJMP MAINEND3、程序编写与调试步骤与前类同,程序如下所示:ORG 0000HLJMP MAINORG 0023HLJMP ZRS232ORG 0100HMAIN: CLR EAMOV SP,#60H ;给堆栈指针赋初值MOV TMOD,#20H ;设置T1 为方式2MOV TH1,#0FDH ;设置波特率为9600MOV TL1,#0FDHMOV SCON,#50H ;设置串口位方式1,允许接收MOV PCON,#00HSETB ESSETB TR1 ;定时器1 开始计数SETB EASJMP $ZRS232: JB RI,ZRZT: CLR T IAJMP ZENDZR: CLR RIMOV A,SBUFCJNE A,#'A',BBBB:MOV A,#'a'AJMP SENDFSEND: MOV A,#'T'SEND: MOV SBUF,A;开始发送JNB TI,$CLR TIZEND: RETIEND实验心得:通过这个实验,知道了波特率的计算方法,特殊功能寄存器PCON 中的SMOD 位为串行口波特率控制位,当SMOD=1时,使波特率加倍。
微处理器实验报告
第二次实验上1、编写一个程序,把AL寄存器中的两位十六进制数显示出来。
程序如下CODE SEGMENT;段开始ASSUME CS:CODE;把代码段和寄存器CSSTART:MOV AL,3EHMOV BL,AL;把AL 的数给BLMOV DL,AL;把AL的数给DLMOV CL,4;把4存入CLSHR DL,CL;DL右移4位,变成03HCMP DL,9;DL内的数和9比较JBE NEXT1;小于等于9则进入next1ADD DL,7;大于9则DL=DL+7NEXT1:ADD DL,30H;把DL中的数转换成ASCII代码MOV AH,2;调用DOS中的2号中断命令,把DL中的数显示出来INT 21H ;显示高位ASCII 码MOV DL,BLAND DL,0FH;和00001111逻辑与,变成0EHCMP DL,9JBE NEXT2ADD DL,7NEXT2:ADD DL,30H MOV AH,2INT 21H ;显示低位ASCII 码MOV AH,4CHINT 21HCODE ENDS ;返回DOS END START流程图(1)在Windows条件下直接运行运行把AND DL,0FH改成SHL DL,CL,运行时错误,这种方法行不通调试程序其中IRET是中断返回指令,STI为置IF为零(2)masm5编译器编译第一次编译时出现了out of memory的情况原因是其中的标点是中文,重新写了一下可以编译了。
连接程序运行程序下实验内容:编写一个程序,判别键盘上输入的字符;若是1 1- -9 9 字符,则显示之;若为A A- -Z Z 或或a a- -z z字符,均显示'c c ';若是回车字符<CR>(其其I ASCII 码为0DH) ,则自动结束程序,若为其它字符则不显示,循环等待新的字符输入。
流程图源文件:ASSUME CS:CODECODE SEGMENTSTART:MOV AH,1INT 21H ;等待输入CMP AL,0DH ;和回车的ASCII代码比较JZ FINISH ;等于则跳转到finish CMP AL,1 ;和1比较JB START ;小于一则跳转到start CMP AL,10 ;和10比较JB PUT ;小于则跳转到put CMP AL,'A' ;和A的ASCII代码比较JB START ;小于则跳转到开头CMP AL,'Z' ;和’Z’比较JBE PUTS ;不大于则跳转到puts CMP AL,'a' ;和’a’比较JB START ;小于则跳转到开头CMP AL,'z' ;和’z’比较JA START ;大于则跳转到start JMP PUTS ;则跳转到开始PUT:MOV AL,30 ;输出原值的ASCII代码MOV DL,ALMOV AH,2INT 21HJMP FINISH;PUTS:MOV AL,'c’ ;输出’c’mov DL,ALMOV AH,2INT 21HFINISH:MOV AH,4CH ;退出DOS INT 21HCODE ENDSEND STARTWindows下程序执行情况:(1)输入a~z,1~9程序运行没有问题,满足要求。
微机原理及应用实验报告
实验一 程序调试实验(顺序结构程序设计)一、实验目的: 1.学习及掌握汇编语言源程序的基本结构,明确程序中各段的功能和相互之间的关系。
2.熟练掌握在计算机上建立、汇编、连接、调试及运行程序的方法。
3、熟悉和掌握DEBUG 常用命令的使用 二、实验要求:1、上机前,要认真阅读前言和课本相关章节2、上机前,画好流程图,编写好程序3、上机时,注意出现的错误,记录下出错信息,翻译之4、完成好实验报告 三、实验内容:在内存TAB 开始的16个单元连续存放了0-15的平方值(0-225),任给一个数X(0 ≤ X ≤ 15),求X 的平方值,并把结果存放在Y 单元中。
(2).分析X 平方的值是tab 为首地址且x 的值为有效地址中的值。
data segmentx db 8 y db ?data endsstack segment para'stack' db 100 dup(0) stack ends code segmentassume cs:code,ds:data,ss:stack start:mov ax,data mov ds,ax xor ax,ax mov al,x lea si,tab add si,ax mov al,[si] mov y,al mov ah,4ch int 21h code ends end start(3).程序调试:4.心得体会了解了顺序结构,掌握了程序的运行,调试。
实验二分支程序设计一、实验目的:熟悉运算类指令对标志位的状态影响以及标志位状态的表示方法;掌握条件转移、无条件转移指令的使用方法。
掌握分支程序设计、编写、调试和运行的方法。
二、实验要求:1、上机前认真分析题意,找出算法,画出流程图,依据流程图,编好程序。
2、认真调试程序,对程序可能存在的所有分支都要进行运行,只有这样才能证明程序的正确性。
二、实验内容1.判断X单元数据的奇偶性,若为奇数,将Y单元设置为0FFH,若为偶数,将Y单元清0。
微处理器实习报告
一、实习背景随着科技的飞速发展,微处理器作为计算机系统的核心部件,其性能和功能日益受到重视。
为了更好地了解微处理器的原理和应用,我于2023年在XX科技有限公司进行了为期一个月的微处理器实习。
通过这次实习,我对微处理器的架构、设计、编程以及在实际应用中的性能优化有了更加深入的认识。
二、实习内容1. 微处理器基础知识学习实习初期,我重点学习了微处理器的基本概念、发展历程、分类以及常见型号。
通过查阅资料、参加培训课程,我对微处理器的基本原理有了初步了解,包括指令集、寄存器、总线、缓存等。
2. 微处理器架构分析在实习过程中,我深入研究了不同类型的微处理器架构,如CISC(复杂指令集计算)、RISC(精简指令集计算)以及ARM架构。
通过对这些架构的对比分析,我认识到不同架构在性能、功耗、成本等方面的差异,为后续设计工作提供了理论依据。
3. 微处理器编程实践为了提高实际操作能力,我参与了微处理器编程实践。
在导师的指导下,我使用C语言编写了简单的微处理器程序,实现了对寄存器、内存、I/O端口等资源的操作。
通过实践,我掌握了微处理器编程的基本技巧,为后续开发工作打下了基础。
4. 微处理器性能优化在实习后期,我参与了微处理器性能优化项目。
通过分析程序运行过程中的瓶颈,我提出了相应的优化方案,包括指令重排、流水线优化、缓存优化等。
在实际操作中,我使用编译器优化工具和调试工具对程序进行了优化,有效提升了程序性能。
5. 项目总结与汇报在实习的最后阶段,我对实习期间参与的项目进行了总结,撰写了项目报告。
在导师的指导下,我进行了项目汇报,展示了实习成果。
通过这次汇报,我巩固了所学知识,提高了自己的表达能力。
三、实习收获1. 知识层面:通过实习,我对微处理器的原理、架构、编程以及性能优化等方面有了全面的认识,为今后的工作打下了坚实的基础。
2. 技能层面:在实习过程中,我掌握了微处理器编程、调试、优化等技能,提高了自己的实际操作能力。
微处理器实验报告2
2018/2019 学年第一学期《微处理器应用设计与实训》实验报告实验项目学生专业学生班级学生学号学生姓名指导教师DAC数模转换实验1 方案设计与要求实现功能:由STM32的DAC实现四种波形的输出,将DAC输出的模拟波形作为STM32的ADC的输入进行采样,将采样得到的值在LCD显示屏上显示即画出波形。
2 原理2.1 STM32F4 DAC简介STM32的DAC模块(数字/模拟转换模块)是12位数字输入,电压输出型的DAC。
DAC可以配置为8位或12位模式,也可以与DMA控制器配合使用。
DAC工作在12位模式时,数据可以设置成左对齐或右对齐。
DAC模块有2个输出通道,每个通道都有单独的转换器。
在双DAC模式下,2个通道可以独立地进行转换,也可以同时进行转换并同步地更新2个通道的输出。
DAC可以通过引脚输入参考电压VREF+以获得更精确的转换结果。
STM32的DAC模块主要特点有:①2个DAC转换器:每个转换器对应1个输出通道②8位或者12位单调输出③12位模式下数据左对齐或者右对齐④同步更新功能⑤噪声波形生成⑥三角波形生成⑦双DAC通道同时或者分别转换⑧每个通道都有DMA功能DAC模块方图:VDDA和VSSA为DAC模块模拟部分的供电。
Vref+则是DAC模块的参考电压。
DAC_OUTx就是DAC的输出通道了(对应PA4或者PA5引脚)。
2.2 DAC转换不能直接对寄存器DAC_DORx写入数椐,任何输出到DAC通道x 的数据都必须写入DAC_DHRx 寄存器(数据实际写入DAC_DHR8Rx、DAC_DHR12Lx、DAC_DHR12Rx、DAC_DHR8RD、DAC_DHR12LD、或者DAC_DHR12RD寄存器)。
如果没有选中硬件触发(寄存器DAC_CR1的TENx位置’0’),存入寄存器DAC_DHRx的数据会在一个APB1时钟周期后自动传至寄存器DAC_DORx。
如选中硬件触发(寄存器DAC_CR1的TENx位置'1’),数椐传输在触发发生以后3个APB1时钟周期后完成。
哈工大数字信号处理实验报告
实验一: 用FFT 作谱分析实验目的:(1) 进一步加深DFT 算法原理和基本性质的理解(因为FFT 只是DFT 的一种快速算法, 所以FFT 的运算结果必然满足DFT 的基本性质)。
(2) 熟悉FFT 算法原理和FFT 子程序的应用。
(3) 学习用FFT 对连续信号和时域离散信号进行谱分析的方法,了解可能出现的分析误差及其原因,以便在实际中正确应用FFT 。
实验原理:DFT 的运算量:一次完整的DFT 运算总共需要2N 次复数乘法和(1)N N -复数加法运算,因而直接计算DFT 时,乘法次数和加法次数都和2N 成正比,当N 很大时,运算量很客观的。
例如,当N=8时,DFT 运算需64位复数乘法,当N=1024时,DFT 运算需1048576次复数乘法。
而N 的取值可能会很大,因而寻找运算量的途径是很必要的。
FFT 算法原理:大多数减少离散傅里叶变换运算次数的方法都是基于nk N W 的对称性和周期性。
(1)对称性()*()k N n kn kn N N NW W W --==(2)周期性()(mod`)()()kn N kn n N k n k N N N N NW W W W ++=== 由此可得()()/2(/2)1n N k N n k nk N N N N N k N k N N W W W W W W ---+⎧==⎪=-⎨⎪=-⎩这样:1.利用第三个方程的这些特性,DFT 运算中有些项可以合并;2.利用nk N W 的对称性和周期性,可以将长序列的DFT 分解为短序列的DFT 。
前面已经说过,DFT 的运算量是与2N 成正比的,所以N 越小对计算越有利,因而小点数序列的DFT 比大点数序列的DFT 运算量要小。
快速傅里叶变换算法正是基于这样的基本思路而发展起来的,她的算法基本上可分成两大类,即按时间抽取法和按频率抽取法。
我们最常用的是2M N =的情况,该情况下的变换成为基2快速傅里叶变换。
哈工程微机原理实验4
实验五字符串匹配程序一、实验目的掌握显示提示信息的方法及接收键盘输入信息的方法。
二、实验内容编写程序, 实现两个字符串比较。
如相同, 则显示”MATCH”,否则, 显示“NO MATCH”。
四、实验程序及实验现象crlf m acromov dl,0dhmov ah,02hint 21hmov ah,02hmov dl,0ahint 21hendmdata segmentmess1 db 'match',0dh,0ah,'$'mess2 db 'nomatch',0dh,0ah,'$'mess3 db 'inputstring1:',0dh,0ah,'$'mess4 db 'inputstring2:',0dh,0ah,'$'maxlen1 db 81actlen1 db ?string1 db 81 dup(?) maxlen2 db 81actlen2 db ?string2 db 81 dup(?)data endsstack segment sta db 50 dup (?)top equ length stastack endscode segmentassumecs:code,ds:data,es:data,s s:stackstart: m ov ax,datamov ds,axmov es,axmov ax,stackmov ss,axmov sp,topmov ah,09hmov dx,offset mess3int 21hmov ah,0ahmov dx,offset maxlen1int 21hcrlfmov ah,09hmov dx,offset mess4int 21hmov ah,0ahmov dx,offset maxlen2int 21hcrlfcldmov si,offset string1mov cl,[si-1]mov ch,00hkkk: mov di,offset string2push cxmov cl,[di-1]mov ch,00hmov al,[si]mov dx,direpnz scasb jz ggginc sipop cxloop kkkmov ah,09hmov dx,offset mess2int 21hjmp pppggg: mov ah,09hmov dx,offset mess1int 21hppp: mov ax,4c00hint 21hcode endsend start输入字符串1和字符串2, 比较, 若有相同字符则显示“match”, 没有则显示“no match”(下图有和没有两种情况)五、修改后的程序及实验现象crlf macromov dl,0dhmov ah,02hint 21hmov ah,02hmov dl,0ahint 21hendmdata segmentdata1 db 5 dup (?)mess1 db 'match',0dh,0ah,'$'mess2 db 'nomatch',0dh,0ah,'$'mess3 db 'inputstring1:',0dh,0ah,'$' mess4 db 'inputstring2:',0dh,0ah,'$' maxlen1 db 81 actlen1 db ?string1 db 81 dup(?) maxlen2 db 81 actlen2 db ?string2 db 81 dup(?) data endsstack segmentsta db 50 dup (?)top equ length sta stack endscodesegmentassumecs:code,ds:data,es:data,ss:stackstart: m ov ax,datamov ds,axmov es,axmov ax,stackmov ss,axmov sp,topmov ah,09hmov dx,offset mess3 •int 21hmov ah,0ahmov dx,offset maxlen1int 21hcrlfmov ah,09hmov dx,offset mess4int 21hmov ah,0ahmov dx,offset maxlen2int 21hcrlfcldmov si,offsetstring1mov cl,[si-1]mov ch,00h mov bh,0kkk: mov di,offsetstring2push cxmov bl,30hmov cl,[di-1]mov ch,00hmov al,[si]mov dx,dilp1: scasbjz founddec cxjnz lp1test bl,0fhjnz ggglp2: inc sipop cxloop kkktest bh,4fhjnz pppmov ah,09hmov dx,offset mess2int 21hjmp pppfound: add bl,01add bh,01dec cxjnz lp1ggg: mov ah,09h mov dx,offset mess1int 21hmov dl,[si] mov ah,02h int 21h crlfmov dl,bl • int 21h crlf jmp lp2 ppp: mov ax,4c00h int 21h code ends end start输入字符串1和字符串2, 比较, 若有相同字符则显示“match ”, 没有则显示“no match ”, 且要显示出匹配的字符和次数。
哈尔滨工业大学微处理器原理与应用实验报告
微处理器原理与应用实验报告姓名:***同组人:张绍文、马文佳、孙蓦征学号:**********班级: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作为输入口,读取开状态,并将此状态通过发光二极管显示出来。
[计算机]微处理器实验报告传送类指令
微处理器原理与应用实验日志实验题目:熟悉并使用传送类指令实验目的:1、熟悉并掌握Keil C51 的基本用法;2、掌握MCS-51 传送类指令功能与使用;实验要求:1、阅读、运行并调试已给的程序;2、模仿已给程序编写多字节数据传送程序;实验主要步骤:1、启动计算机,进入Keil C51的集成开发环境;2、根据已给程序编辑源程序;3、编辑完成以后对程序进行编译,生成目标代码;4、运行、调试目标代码和进行结果检查;5、根据要求编写多字节的数据传送程序;6、编译,生成目标代码,分别采用单步和宏单步运行程序,观察有关单元中的内容的变化;7、修改内存单元中的内容在观察;实验结果:本次实验的目的是为了让我们熟悉keil-51软件的使用,学会怎么去建立工程,创建文件,调试、编译、运行程序,最后在自己理解程序的基础上去,查看运行结果。
第一个程序是验证性的,代码为:ORG 0000HAJMP STARTORG 0100HSTART: MOV A,#00HMOV R2,#0AHMOV R1,#03HLOOP: ADD A,R1DJNZ R2,LOOPNOPSJMP $END此程序的功能为:循环累加,结束条件是R2-1=0时,累加完毕。
所得结果储存在累加器A中。
最后的运行结果为:1EH。
按照实验要求第二个程序代码为:ORG0000HAJMP STARTORG 0100HSTART: MOV R0 ,#30HMOV R1,#10HMOV R2,#0AHMOV DPTR,#0100HLOOP: MOV A,R1MOV @R0,AMOVX @DPTR,AINC R0INC R1INC DPTRDJNZ R2,LOOPNOPSJMP $END此程序的目的运用循环结构对数据进行传输,把内部RAM的30H--39H单元置为10H-19H,然后传送到外部RAM的0100H--0109H单元。
在memory的address中键入: D:0x30 看见如下结果:在memory的address中键入:X:0x0010,可以看见如下结果:心得体会:通过这次的实验课,我了解了Keil C51这个单片机应用开发集成环境。
- 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溢出中断一次。