微处理器实验报告六 64
- 格式:doc
- 大小:37.05 KB
- 文档页数:5
《微处理器实验》实验报告一、实验目的与任务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计满回零引起。
微处理器实验报告摘要:本文旨在介绍微处理器实验及其结果,内容包括实验目的、实验器材与方法、实验过程、实验结果和分析以及实验结论等。
通过本次实验,我们对微处理器的工作原理和应用有了更深刻的理解,并能够熟练地进行一些简单的微处理器操作。
1. 引言微处理器是现代计算机的核心组成部分,其作用是负责指令的执行和数据的处理。
在这个实验中,我们将通过操作微处理器,深入了解其内部构造和工作原理。
同时,我们也将学习如何正确地使用微处理器进行一些简单的计算和控制任务。
2. 实验目的本次实验的目的是:- 了解微处理器的基本工作原理;- 掌握微处理器的基本操作方法;- 理解不同指令的功能和使用方法;- 实现一些简单的计算和控制任务。
3. 实验器材与方法3.1 实验器材:- 微处理器实验箱- 示波器- PC机3.2 实验方法:首先,根据实验指导书上给出的实验电路图,按照电路图连接实验器材。
然后,将微处理器与PC机通过串口或者并口连接起来。
接下来,根据实验指导书上给出的指令,编写相应的程序代码并将其烧录到微处理器中。
最后,通过操作微处理器,观察实验结果并进行实验数据的采集和分析。
4. 实验过程4.1 硬件连接:根据实验指导书上的电路图,连接实验箱和示波器,保证电路的正常工作。
4.2 软件编程:根据实验指导书上的指令,使用相应的软件工具或编程语言编写程序代码,并将其烧录到微处理器中。
4.3 实验操作:按照实验指导书上的要求,操作微处理器进行各种指令的执行,观察实验结果并记录相关数据。
5. 实验结果与分析通过本次实验,我们成功地完成了一些简单的微处理器操作,并观察到了相应的实验结果。
在实验中,我们使用了一些常见的指令,如加法指令、乘法指令和逻辑指令等,并实现了一些简单的计算和控制任务。
同时,我们还观察到了微处理器的运行速度以及实验过程中的一些注意事项。
通过对实验数据的分析,我们发现微处理器在执行指令时的速度非常快,能够实时处理大量的数据,并及时给出相应的计算结果。
微处理器原理与应用实验日志实验题目:顺序程序设计:拆字和拼字实验目的:1、掌握顺序程序编写方法2、掌握拆字和拼字方法3、学会编写和调试程序的过程和方法4、掌握C51编程方法。
实验要求:1、阅读、运行并调试已给的程序;2、模仿已给程序分别汇编程序和C程序完成拼字程序;实验主要步骤:1、启动计算机,进入Keil C51的集成开发环境;2、根据已给程序分别编辑汇编程序和C程序;3、编辑完成以后对程序进行编译,生成目标代码;4、运行、调试目标代码和进行结果检查;5、根据要求分别编写汇编程序和C程序;6、编译,生成目标代码,分别采用单步和宏单步运行程序,观察有关单元中的内容的变化;7、修改内存单元中的内容在观察存储单元内容的变化;实验结果:汇编程序:ORG 0000HAJMP STARTORG 0100HSTART: MOV A,30HANL A,#0FHSW AP AMOV 32H,AMOV A,31HANL A,#0FHORL 32H,ASJMP $END#include""#include""void main(){DBYTE[0x30]=0x12;DBYTE[0x31]=0x34;DBYTE[0x30]<<=4; //20DBYTE[0x31]&=0x0f; //04DBYTE[0x32]=DBYTE[0x30]|DBYTE[0x31];}心得体会:在本次实验中,发现输入数据有两种方法,一种是在程序中直接赋值,另一种是直接双击0x0200这个单元,就可以对它赋值,最后运行结果一样,但后一种明显改动数据方便,这让我意识到了优化程序的重要性。
在第三个实验中,对用C语言编写的程序,不知道或语句怎么写,在请教老师之后得以解决,但是,在编译程序时没有问题,运行程序出现了错误。
一直没有找到问题,在最后重新建立工程,文件等必要步骤之后,就完成了程序的运行。
五年级心理健康教育教案一、教学目标1.让学生了解心理健康的重要性,认识到心理健康对个人成长的影响。
2.培养学生积极向上的心态,学会调整自己的情绪,增强心理素质。
3.提高学生的人际沟通能力,增进与同学、老师的良好关系。
4.培养学生独立解决问题的能力,增强自信心。
二、教学内容1.心理健康的概念及重要性2.情绪管理的方法与技巧3.人际沟通的技巧与原则4.解决问题的策略与步骤三、教学安排1.课前准备:收集心理健康教育的相关资料,制作课件。
2.课堂教学:共4课时,每课时40分钟。
3.课后实践:布置相关作业,让学生在实践中运用所学知识。
四、教学过程1.第一课时:心理健康的概念及重要性(1)导入:通过一个故事或案例,引发学生对心理健康的关注。
(2)讲解:介绍心理健康的概念,阐述心理健康对个人成长的影响。
(3)讨论:让学生分享自己对心理健康的认识,讨论如何保持心理健康。
2.第二课时:情绪管理的方法与技巧(1)导入:通过一个情景剧,让学生了解情绪管理的重要性。
(2)讲解:介绍情绪的类型,讲解情绪管理的方法与技巧。
(3)实践:让学生进行情绪管理的练习,如情绪调节、情绪表达等。
3.第三课时:人际沟通的技巧与原则(1)导入:通过一个案例,让学生认识到人际沟通的重要性。
(2)讲解:介绍人际沟通的技巧与原则,如倾听、表达、同理心等。
(3)实践:组织学生进行人际沟通的练习,如角色扮演、小组讨论等。
4.第四课时:解决问题的策略与步骤(1)导入:通过一个实际问题,让学生思考解决问题的方法。
(2)讲解:介绍解决问题的策略与步骤,如分析问题、制定方案、执行方案等。
(3)实践:让学生分组讨论,共同解决一个实际问题。
五、教学评价1.过程评价:观察学生在课堂上的参与程度、互动情况,评估学生的人际沟通能力、问题解决能力等。
2.成果评价:检查学生的课后作业,评估学生对心理健康知识的掌握程度。
3.学生自评:让学生对自己在学习过程中的表现进行评价,反思自己的优点与不足。
微处理器设计实验任务&目标利用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. 根据实验要求,进行系统设计与开发。
4. 实施系统测试与调试,确保系统正常运行。
5. 撰写实验报告,总结实验过程及结果。
实验结果
本实验按计划完成了实验步骤,并成功设计并开发了一个微处
理器和嵌入式系统。
实验分析
通过本实验,进一步加深了对微处理器和嵌入式系统设计的理解。
通过实践,我们能够更好地掌握其设计原理和应用技术,并能够运用这些知识解决实际问题。
总结
通过本次实验,我们深入研究了微处理器和嵌入式系统设计的基本概念和原理,并通过实践运用这些知识进行系统设计与开发。
通过实验的完成,我们对微处理器和嵌入式系统设计有了更深入的了解,对其应用领域和技术有了更清晰的认识。
参考文献
- [参考文献1]
- [参考文献2]。
微处理器实验报告----3d3ee4f4-715e-11ec-845a-7cb59b590d7d 实验四c语言小程序南京大学电子学院。
xx一.程序简介:中国高校的考试分数习惯用0—100的数字表达(简称为百分制),而在美国以及一些欧洲国家则习惯用a,b,c,d,e的等级表示成绩的高低(简称为等级制).此程序用来实现百分制的成绩向等级制成绩的转换.划分区间如下:90-100:a80----89:b70---79:c60----69:d60岁以下:e二.分析:程序分别要完成以下功能:1.从键盘上读取输入的百分位数分数2.对百分制成绩进行区间判断,分支转移3.获得相应的分数三.程序流程图:四、程序清单:#include/*头文件*/intscore、temp、逻辑、数字;/*定义成形变量*/chargrade;逻辑=1;while(logic)/*while循环,logic为1则继续循环*/{printf(“请输入学生信息:\n”);scanf("%d,%d",&number,&score);/*键盘输入学号,百分制成绩*/getchar();/*获取回车键*/如果(分数>=0&&scoreif(score==100)/*if实现的分支转移*/温度=9;temp=(score-score%10)/10;/*temp取值为score十位数字*/开关(温度)/*通过开关实现分支转移*/case9:grade='a';break;/*90到100分为a等级*/案例8:b级;打破case7:grade='c';break;案例6:d级;打破case5:案例4:case3:案例2:case1:案例0:e级;printf("number=%d,score=%d,grade=%c\n",number,score,grade);/*输出学号,分数,等级*/}/*60分以下为e级*/*80到89分为B级*/*70到79分为C级*/*60到69分为d级*/*定义字符变量*/*赋值*/五.结果显示:; 在这里输入105分。
微处理器实验报告实验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. 熟悉微机系统的基本组成和工作原理。
2. 掌握微处理器的指令集及其使用方法。
3. 学习如何编写和调试汇编语言程序。
4. 理解中断处理机制及其在微机系统中的应用。
实验内容:1. 实验一:微机系统组成与工作原理- 研究微机的基本硬件组成,包括中央处理器(CPU)、内存、输入输出设备等。
- 通过实验设备,观察并理解微机的启动过程和操作系统的加载过程。
2. 实验二:微处理器指令集学习- 学习x86架构的微处理器指令集,包括数据传输、算术运算、逻辑运算和控制转移指令。
- 编写简单的汇编程序,实现指定的算法或功能。
3. 实验三:汇编语言程序设计与调试- 使用汇编语言编写程序,实现数据的输入输出操作。
- 利用调试工具进行程序调试,理解程序执行过程中的寄存器状态、内存变化等。
4. 实验四:中断处理机制- 学习中断的基本概念,包括中断源、中断向量、中断服务程序等。
- 编写中断服务程序,实现对外部设备的响应和处理。
实验环境:- 实验设备:个人计算机,装配有最新的操作系统和汇编语言开发环境。
- 软件工具:汇编器、调试器、编程IDE等。
实验步骤:1. 按照实验指导书的说明,搭建实验环境。
2. 完成每个实验的预习,理解实验的理论基础。
3. 按照实验步骤,逐步进行实验操作。
4. 记录实验数据和结果,撰写实验报告。
实验结果:- 成功搭建了微机实验环境,并完成了系统的启动和操作系统加载的观察。
- 掌握了x86架构微处理器的基本指令集,并能够编写简单的汇编程序。
- 通过调试工具,成功定位并修正了程序中的错误。
- 编写了中断服务程序,并成功实现了对模拟中断信号的处理。
实验结论:通过本次实验,加深了对微机系统工作原理的理解,熟悉了微处理器的指令集和汇编语言程序的编写。
同时,通过中断处理机制的学习,理解了其在微机系统中的重要性和应用方式。
实验过程中遇到的问题和解决方法也为今后的学习和研究打下了良好的基础。
《微处理器实验》实验报告实验名称:音乐门铃设计学时安排:4学时实验类别:设计性实验要求:必做一、实验目的通过本实验,理解掌握信号频率产生和按键的应用,继续熟悉单片机应用。
二、实验设备及器件1、PC机一台(已安装Keil µVision、STC_ISP等软件);2、ZSC-1单片机实验箱一台。
三、实验内容1、编写程序,设计按键触发的分支程序。
2、编写程序,使单片机的P1.0口控制一个蜂鸣器产生音乐。
3、结合以上两部分程序,编程实现音乐门铃的程序设计。
四、实验原理1、蜂鸣器器件在不同频率信号的驱动下,会产生不同的声调,通过程序将不同的声调组合起来,就能够产生音乐。
和应用,熟悉按键分支程序的设计。
2、利用定时器可以产生不同频率的信号,用于驱动蜂鸣器。
3、可以将曲调预先编辑好,给程序查表用。
五、实验要求1、熟练掌握蜂鸣器器件的驱动和应用,熟悉按键分支程序的设计。
2、解释程序设计原理,对实验参考程序进行详细注释说明。
3、尝试对程序进行修改和改进。
六、实验参考程序SONG1 EQU 3EHSONG2 EQU 3DHKX0 EQU P3.2KX1 EQU P3.4KX2 EQU P3.5KX3 EQU P3.7L101 EQU P0.0L102 EQU P0.1L103 EQU P0.2L104 EQU P0.3ORG 0000HJMP MAINORG 000BHJMP INTT0ORG 0100HMAIN: MOV SP,#60HMOV TMOD,#01HMOV SONG1,#00HMOV SONG2,#00HLCALL DELAY2LCALL DELAY2CHKKX0: JB KX0,CHKKX1 ;KX0未按下,则检测KX1 LCALL DELAY2 ;软件延时JB KX0,CHKKX1 ;KX0未按下,则检测KX1CPL L101 ;KX0按下,则求反L101MOV DPTR,#TABLE_1JNB KX0,$ ;等待KX0松开SJMP START ;跳转到主程序开头CHKKX1: JB KX1,CHKKX2LCALL DELAY2JB KX1,CHKKX2CPL L102MOV DPTR,#TABLE_2JNB KX1,$SJMP STARTCHKKX2: JB KX2,CHKKX3LCALL DELAY2JB KX2,CHKKX3CPL L103MOV DPTR,#TABLE_3JNB KX2,$SJMP STARTCHKKX3: JB KX3,MAINLCALL DELAY2JB KX3,MAINCPL L104MOV DPTR,#TABLE_4JNB KX3,$SJMP STARTSTART: MOV SONG1,DPLMOV SONG2,DPHSETB EX1SETB ET0SETB EASTART0: MOV 30H,#00HNEXT: MOV A,30HMOV DPL,SONG1MOV DPH,SONG2MOVC A,@A+DPTRMOV R2,AJZ ENDDANL A,#0FHMOV R5,ASW AP AANL A,#0FHJNZ SINGCLR TR0JMP D1SING: DEC AMOV 22H,ARL AMOV DPTR,#TABLE1MOVC A,@A+DPTRMOV TH0,AMOV 21H,AMOV A,22HRL AINC AMOVC A,@A+DPTRMOV TL0,AMOV 20H,ASETB TR0D1: CALL DELAYINC 30HJMP NEXT ENDD: CLR TR0JMP MAININTT0: PUSH PSWPUSH ACCMOV TL0,20HMOV TH0,21HCPL P1.0POP ACCPOP PSWRETIDELAY: M OV R7,#12 DELAY0: MOV R4,#187 DELAY1:MOV R3,#248DJNZ R3,$DJNZ R4,DELAY1DJNZ R7,DELAY0DJNZ R5,DELAYRETDELAY2: MOV R7,#04 DELAY3: MOV R4,#187 DELAY4: MOV R3,#248DJNZ R4,DELAY4DJNZ R7,DELAY3RETTABLE_1:DB 02H,11H,21H,32H,32H,22H,32H,21H,11H,0A1H,91H,92H,0D1H,91H DB 0A2H,91H,81H,94H,11H,0A1H,91H,0A1HDB 11H,93H,94H,03H,81H,11H,0A1H,91H,81H,92H,0A1H,91H,94H,08HDB 03H,81H,32H,21H,11H,22H,31H,21H,21H,83HDB 01H,11H,91H,0A1H,11H,61H,51H,11H,34H,01H,31H,21H,31H,48HDB 23H,31H,32H,42H,38H,03H,11H,21H,52H,31HDB 33H,31H,31H,41H,51H,61H,23H,21H,21H,41H,31H,21H,13H,0D1HDB 21H,11H,0A1H,11H,91H,92H,91H,11H,0A1H,91HDB 0A1H,31H,31H,22H,0A1H,11H,14H,01H,11H,21H,31H,63H,31HDB 42H,51H,31H,22H,11H,21H,52H,31H,33H,31H,31H,41HDB 51H,61H,23H,21H,21H,41H,31H,21H,13H,0D1H,0D1H,21H,11HDB 0A1H,11H,91H,92H,91H,11H,0A1H,91HDB 0A2H,41H,31H,22H,31H,21H,12H,12H,11H,11H,21H,31HDB 63H,51H,32H,11H,21H,26H,11H,0A1H,18HDB 00HTABLE_2:DB 82H,01H,81H,94H,84H,0B4H,0A4H,04HDB 82H,01H,81H,94H,84H,0C4H,0B4H,04HDB 82H,01H,81H,0F4H,0D4H,0B4H,0A4H,94HDB 0E2H,01H,0E1H,0D4H,0B4H,0C4H,0B4H,04HDB 82H,01H,81H,94H,84H,0B4H,0A4H,04HDB 82H,01H,81H,94H,84H,0C4H,0B4H,04HDB 82H,01H,81H,0F4H,0D4H,0B4H,0A4H,94HDB 0E2H,01H,0E1H,0D4H,0B4H,0C4H,0B4H,04HDB 00HTABLE_3:DB 66H,52H,36H,22H,12H,12H,22H,32H,98H,84H,82H,92H,14H,12H,22H DB 32H,52H,22H,42H,38H,66H,52H,36H,22H,12H,22H,22H,32H,98HDB 24H,22H,32H,54H,52H,32H,92H,12H,92H,82H,98H,66H,52H,36H,22HDB 12H,12H,22H,32H,98H,84H,82H,92H,14H,12H,22H,32H,52H,22H,42H,38HDB 66H,52H,36H,22H,12H,22H,22H,32H,98H,24H,22H,32H,54H,52H,32HDB 22H,12H,92H,82H,98H,14H,24H,34H,44H,64H,0B4H,64H,32H,52HDB 62H,0B2H,62H,52H,38H,24H,22H,32H,54H,52H,62H,52H,32H,32H,22H,38HDB 64H,0B4H,64H,32H,52H,62H,0B2H,62H,52H,38H,22H,22H,22H,32H,52H,52HDB 52H,62H,7FH,74H,04H,58H,6FHDB 00HTABLE_4:DB 02H,82H,16H,32H,54H,02H,52H,0A6H,32H,54H,02H,52HDB 64H,74H,0B6H,64H,52H,5CH,32H,22H,16H,12H,14H,32H,22HDB 16H,12H,14H,22H,32H,26H,12H,94H,22H,32H,2CHDB 32H,52H,36H,22H,14H,54H,0ACH,92H,0A2HDB 96H,0A2H,96H,82H,3CH,54H,36H,22H,14H,54HDB 0ACH,92H,0A2H,16H,12H,14H,22H,32H,2CH,02H,82HDB 16H,32H,56H,12H,0A6H,32H,56H,52H,66H,72H,0B6H,62HDB 62H,52H,58H,32H,22H,16H,12H,14H,32H,22HDB 16H,12H,14H,22H,32H,26H,92H,0A4H,12H,22H,1CHDB 00TABLE1: DW 64260,64400,64524,64580,64684,64777,64820,64898 DW 64968,65030,65058,65110,65157,65178,65217END。