单片机实验程序

合集下载

单片机实验指导书(6个实验)

单片机实验指导书(6个实验)

单片机原理和接口技术实验指导书襄樊学院物理和电子信息技术系实验要求1.进入实验室前完成的部分1)认真阅读实验指导书,弄懂实验原理和实验内容。

2)编写实验所要用到的程序,将其放在U盘上。

3)写出预习报告。

2. 进入实验室后完成的部分1)建立工程,加入已准备好的程序文件。

2)对程序进行调试,修改错误,获得要求的结果。

3)保存调试后的程序。

3.实验结束后的部分对实验结果进行分析、总结,写出实验报告。

实验报告内容及格式1.实验目的2.实验设备3.实验原理及环境4.实验内容只做文字叙述,程序部分放在程序清单中。

流程图也可不画。

5.程序清单本实验使用的完整程序。

如果使用了本实验或前面实验中完全相同的子程序,可不列写,只做注明即可。

6.实验步骤7.实验总结主要包括对实验结果、调试过程、错误及产生的原因的分析,以及本次实验的重要收获等。

此项为实验成绩评定的重要依据。

实验1 Keil C51的使用(汇编语言)实验目的:初步掌握Keil C51(汇编语言)和ZY15MCU12BD型综合单片机实验箱的操作和使用,能够输入和运行简单的程序。

实验设备:ZY15MCU12BD型综合单片机实验箱一台、具有一个RS232串行口并安装Keil C51的计算机一台。

实验原理及环境:在计算机上已安装Keil C51软件。

这个软件既可以和硬件(ZY15MCU12BD型综合单片机实验箱)连接,在硬件(单片机)上运行程序;也可以不和硬件连接,仅在计算机上以虚拟仿真的方法运行程序。

如果程序有对硬件的驱动,就需要和硬件连接;如果没有硬件动作,仅有软件操作,就可以使用虚拟仿真。

实验内容:1.掌握软件的开发过程:1)建立一个工程项目选择芯片确定选项。

2)加入C 源文件或汇编源文件。

3)用项目管理器生成各种使用文件。

4)检查并修改源文件中的错误。

5)编译连接通过后进行软件模拟仿真。

6)编译连接通过后进行硬件仿真。

7)I A P 编程操作2.按以上步骤实现在P1.0输出一个频率为1Hz的方波。

单片机程序流程图及源代码

单片机程序流程图及源代码

单片机上机实验报告【实验一】端口实验,掌握通过端口编程实现数据输出和输入的方法,并观察结果。

实验内容:1)输出实验:假定4个端口全部连接发光二极管,编程实现所有发光二极管同时亮,延迟一定时间(自定)后,又同时灭,如此循环。

2)输入:从P0口输入某个数据到累加器A,打开观察窗口观察数据是否进入累加器A。

实现方式:通过peripherals实现端口数据观察实验。

程序流程图:将P0到P3端口先赋值为0,调用延迟后,再赋1,然后循环执行。

源代码:ORG 0000H ;程序入口地址LJMP MAIN ;跳转到主程序ORG 0300H ;主程序地址MAIN:MOV P0,#00H;MOV P1 ,#00H;MOV P2 ,#00H;MOV P3 ,#00H ;P0~P3均赋值为0ACALL DEL;调用延迟MOV P0 ,#0FFH;MOV P1 ,#0FFH;MOV P2 ,#0FFH;MOV P3 ,#0FFH;P0~P3均设为1MOV A,P0;将P0口值赋给累加器ACALL DEL;AJMP MAIN;跳转到主程序入口ORG 0200H;延迟程序入口地址DEL:MOV R5,#04H;寄存器实现延迟,F3:MOV R6,#0FFH;若主频为12MHZ则F2:MOV R7,#0FFH;延时为256*256*4F1:DJNZ R7,F1;0.26S,人眼可分辨DJNZ R6,F2;DJNZ R5,F3;RET;从延迟程序返回END;结束3.假设P0口外接一个数码管(共阴),如图,请在数码管上轮流显示数字0~9(采用软件延时)。

程序流程图:将数码管的真值编码0~9依次赋给P0并调用延迟,然后循环运行程序即可。

源代码:ORG 0000H; 程序入口SJMP MAIN; 跳转到主程序ORG 0300H; 主程序入口地址MAIN:MOV P0,#0FCH; 将数码管0的编码赋给P0口ACALL DELAY; 调用延迟,使数码管亮0持续0.33SMOV P0,#60H; show 1ACALL DELAY;MOV P0,#0DAH; show 2ACALL DELAY;MOV P0,#0F2H; show 3ACALL DELAY;MOV P0,#66H; show 4ACALL DELAY;MOV P0,#0B6H; show 5ACALL DELAY;MOVP0,#0BEH; show 6ACALL DELAY;MOV P0,#0E0H; show 7ACALL DELAY;MOV P0,#0FEH; show 8ACALL DELAY;MOV P0,#0F6H; show 9ACALL DELAY;AJMP LOOP; 跳转到主程序入口ORG 0200H; 延迟程序入口DEL:MOV R5,#05H; 采用软件延迟,若主频为12MHz,则DEL1:MOV R6,#0FFH; 定时时间为256*256*5*1uS=0.33S,DEL2:MOV R7,#0FFH; 人眼可分辨。

单片机实验一-加法器实验报告

单片机实验一-加法器实验报告

单片机实验一-加法器实验报告南昌大学实验报告学生姓名:学号:专业班级:实验类型:□验证□综合■设计□创新实验日期:实验成绩:实验一单片机软件实验—1至100求和(一)实验目的1.掌握51单片机Keil软件集成开发环境。

2.学习使用汇编语言编写应用程序。

(二)设计要求熟悉51单片机的Keil软件集成开发环境,使用汇编语言编写“1+2+3+…+100”的程序。

(三)实验原理类似C语言里的循环语句,从1开始加,利用CJNE判断是否已加到100,从而进行循环计数。

(四)实验设备装有Keil4的电脑一台(五)实验结果计算结果高8位r3为0x13,低8位r4为0xba,即0x13ba,十进制数5050。

(六)结果讨论与心得体会实验结果和预期结果一致。

以前就用过Keil编程C51,所以使用起来没有什么障碍。

第一次自己编汇编程序,感觉汇编和C还是有很多相通之处,有很多思想和方法可以借鉴。

(七)附录:实验源代码ORG 0000H ;程序运行入口LJMP M AIN ;跳向主程序MAINORG 0030H ;主程序入口MAIN: MOV R2,#01H ;给R2赋初值1,从1开始加MOV R3,#00H ;R3用于存放最终结果的高8位MOV R4,#00H ;R4用于存放最终结果的低8位START: CLR C;Cy位清零CJNE R2,#65H,LOOP ;判断R2是否等于101,如果不相等,就跳到LOOPSJMP RESULT ;R2等于101时,表示已经完成1加到100的运算,跳转到RESULT LOOP: MOV A,R2 ;将R2的值移入累加器ADD A,R4 ;将R4的值加到累加器里MOV R4,A ;将累加器的值移入R4,作为相加后结果的低8位MOV A,R3 ;将R3的值移入累加器ADDC A,#00H ;累加器加0,并且带进位相加,这样做就把低8位进位加上去了MOV R3,A ;将累加器的值移入R3,作为相加后结果的高8位INC R2 ;R2的值加1,递增,作为下一个加数SJMP START ;跳转到START,继续相加RESULT: SJMP RESULT ;显示结果END ;结束。

单片机所有实验程序

单片机所有实验程序

单片机实验程序-------- 1.定时器及中断实验#include<reg51.h>#define uchar unsigned char#define uint unsigned intvoid delay(){uint x,y;for(x=100;x>0;x--)for(y=110;y>0;y--);}uchar m,flag;main(){uchar a,b;TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EX0=1;EX1=1;PX1=1;ET0=1;TR0=1;EA=1;m=0;P1=0;while(1){while(flag==0);flag=0;if(m==100)m=0;m++;a=m/10;b=m+a*6;P1=b;}}void timer0() interrupt 1 using 0{uchar t;TH0=(65536-50000)/256;TL0=(65536-50000)%256;if(t<20)t++;else {flag=1;t=0; }}void exter0() interrupt 0 using 1{if(INT0==0)delay();if(INT0==0)flag=1;}void exter1() interrupt 2 using 2{if(INT1==0)delay();if(INT1==0)m=0;}2.定时器控制二极管#include<reg51.h>#define uchar unsigned char#define uint unsigned intuchar code table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; uchar num;uint a;main(){TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;num=0;a=0;P1=table[num];while(1){}}void exter0() interrupt 1{ TH0=(65536-50000)/256;TL0=(65536-50000)%256;a++;if(a==20){ a=0;num++;if(num==8) num=0;P1=table[num];}}3.时钟综合实验#include <reg51.h>unsigned char tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; unsigned char m,sec,min;void delay(){ unsigned char x,y;for(x=100;x>0;x--)for(y=50;y>0;y--);}void main(){TMOD=0x01;TH0=15536/256;TL0=15536%256;ET0=1;TR0=1;IT0=1;EX1=1;EX0=1;EA=1;while(1){P2=0x80;P0=tab[sec%10];delay();P0=0xff;P2=0x40;P0=tab[sec/10];delay();P0=0xff;P2=0x20;P0=tab[min%10];delay();P0=0xff;P2=0x10;P0=tab[min/10];delay();P0=0xff;}}void timer() interrupt 1 using 1 {TH0=15536/256;TL0=15536%256;m++;if(m==3){m=0;sec++;}if(sec==60){sec=0;min++;}if(min==60)min=0;}void srv0() interrupt 0 using 0 {if(INT0==0)min++;if(min==60)min=0;}void srv1() interrupt 2 using 2 {if(INT1==0){ sec=0;min=0;}}4.PC发送到单片机#include <reg51.h> unsigned char a;void main(){ SCON=0x50;TMOD=0x20;TH1=TL1=0xfd;TR1=1;ET1=0;ES=1;EA=1;while(1);/* {/* while(!RI);a=SBUF;RI=0;if(a==0x55){SBUF=0x41;while(!TI);TI=0;}*/// }}void srv() interrupt 4{ if(RI){a=SBUF;RI=0;}if(a==0x55){SBUF=0x41;while(!TI);TI=0;}}发送#include <reg51.h>void main(){ SCON=0x40;TMOD=0x20;TH1=TL1=0xfd;TR1=1;while(1){SBUF=0x55;while(!TI);TI=0;}}AD#include <reg51.h>#include <intrins.h>#include <absacc.h>#define PIN0 XBYTE[0x7ff8]#define PIN1 XBYTE[0x7ff9] typedef unsigned char byte; typedef unsigned int word;void main(void){float resuit0,result1;float resuit0_reg,result1_reg;byte i,j,k;while(1){for(i=0;i<2;i++){if(!i)PIN0=0;else PIN1=0;for(k=0;k<255;k++);if(!i)resuit0_reg=PIN0;else result1_reg=PIN1;}resuit0=resuit0_reg*5/255;result1=result1_reg*5/255;}}。

[整理]单片机6个必做实验

[整理]单片机6个必做实验

第一部分软件实验实验一二进制到BCD码转换一、实验目的1、掌握简单的数值转换算法2、基本了解数值的各种表达方法二、实验说明单片机中的数值有各种表达方式,这是单片机的基础。

掌握各种数制之间的转换是一种基本功。

我们将给定的一个二进制数,转换成二十进制(BCD)码。

将累加器A的值拆为三个BCD码,并存入RESULT开始的三个单元,例程A赋值#123。

三、实验内容及步骤1、启动计算机,打开伟福仿真软件,进入仿真环境。

首先进行仿真器的设置,选择使用伟福软件模拟器。

2、打开TH2.ASM源程序进行编译,编译无误后,全速运行程序,打开数据窗口(DATA),点击暂停按钮,观察地址30H、31H、32H的数据变化,30H更新为01,31H更新为02,32H更新为03。

用键盘输入改变地址30H、31H、32H的值,点击复位按钮后,可再次运行程序,观察其实验效果。

修改源程序中给累加器A的赋值,重复实验,观察实验效果。

3、打开CPU窗口,选择单步或跟踪执行方式运行程序,观察CPU窗口各寄存器的变化,可以看到程序执行的过程,加深对实验的了解。

四、流程图及源程序1.源程序RESULT EQU 30HORG 0000HLJMP STARTBINTOBCD:MOV B,#100DIV ABMOV RESULT,A ;除以100得百位数MOV A,BMOV B,#10DIV ABMOV RESULT+1,A ;余数除以10得十位数MOV RESULT+2,B ;余数为个位数RETSTART:MOV SP,#40HMOV A,#123CALL BINTOBCDLJMP $END2.流程图实验四程序跳转表一、实验目的1、了解程序的多分支结构2、掌握多分支结构程序的编程方法二、实验说明多分支结构是程序中常见的结构,在多分支结构的程序中,能够按调用号执行相应的功能,完成指定操作。

若给出调用号来调用子程序,一般用查表方法,查到子程序的地址,转到相应子程序。

单片机整套实验及程序(交通灯_跑马灯等)

单片机整套实验及程序(交通灯_跑马灯等)

实验1 跑马灯实验一、实验目的●初步学会Proteus ISIS和uVision2单片机集成开发环境的使用;●初步掌握采用汇编语言与C语言开发单片机系统的程序结构;●掌握80C51单片机通用I/O口的使用;●掌握单片机内部定时/计数器的使用及编程方法以及中断处理程序的编写方法。

二、实验设备及器件●硬件:PC机,HNIST-1型单片机实验系统●软件:Proteus ISIS单片机仿真环境,uVision2单片机集成开发环境三、实验内容●编写一段程序,采用P1口作为控制端口,使与P1口相接的四个发光二极管〔D1、D2、D3、D4〕按照一定的方式点亮。

如点亮方式为:先点亮D1,延时一段时间,再顺序点亮D2……D4,然后又是D4……D1,同时只能有一个灯亮;然后每隔一段时间一次使相邻两个灯亮,三个灯亮,四个灯亮,最后闪烁三次,接着循环变化。

●基于Proteus ISIS仿真环境完成上述功能的仿真。

●基于uVision2单片机集成开发环境与硬件平台完成程序的脱机运行。

四、实验原理图图3.1 跑马灯实验电路原理图电路原理图如上图3.1所示,AT89S52的P1.0~P1.3控制4个发光二极管,发光二极管按照一定次序发光,相邻发光二极管的发光时间间隔可以通过定时器控制,还可以通过软件延时实现。

五、软件流程图与参考程序●主程序流程图如下:●参考程序#include<reg52.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intuchar aa,num,speed,flag;uchar code table[]={0x0e,0x0d,0x0b,0x07};uchar code table1[]={0x0a,0x05,0x09,0x06};uchar codetable2[]={0x0c,0x09,0x03,0x08,0x01,0x0e,0x0c,0x08,0x00};void delay(uint z)//延时函数{uint x;uchar y;for(x=z;x>0;x--)for(y=200;y>0;y--);}void init()//条件初始化函数{ flag=0;speed=10;//控制跑马灯流水速度TMOD=0x01;//中断方式TH0=(65535-50000)/256;TL0=(65536-50000)%256;//初值EA=1;//翻开总中断ET0=1;//翻开外中断0TR0=1;}void main(){init();//调用初始化函数while(1){if(flag){delay(2000);//调用延时函数for(num=0;num<4;num++)//从左至右间隔一个依次闪烁{P1=table[num];delay(2000);}for(num=3;num>0;num--)//从左至右间隔一个依次闪烁{P1=table[num];delay(2000);}for(num=0;num<4;num++)//从左至右间隔两个依次闪烁{P1=table1[num];delay(2000);}for(num=3;num>0;num--)//从左至右间隔两个依次闪烁{P1=table1[num];delay(2000);}for(num=0;num<6;num++)//两个,三个,四个跑马灯依次闪烁{P1=table2[num];delay(2000);}for(num=0;num<5;num++)//闪烁5次{P1=0xff;//全暗delay(2000);P1=0X00;//全亮delay(2000);}speed=speed-3;//变速if(speed==4){speed=10;}}}}void timer0() interrupt 1//中断函数{TH0=(65535-50000)/256;TL0=(65536-50000)%256;aa++;if(aa==speed){aa=0;flag=1;}}六、实验思考题●请用汇编指令完本钱实验内容,深刻理解汇编语言程序设计结构。

单片机汇编实验报告

单片机汇编实验报告

单片机汇编实验报告1. 实验目的本实验旨在通过编写单片机汇编程序,掌握单片机的基本操作,理解汇编语言和单片机的工作原理。

2. 实验器材•STC89C52单片机开发板•串口线•电脑3. 实验原理单片机是一种集成了处理器、存储器、输入输出设备等功能的微型计算机系统。

通过编写汇编语言程序,可以利用单片机的内部寄存器和外部接口,实现各种功能。

4. 实验步骤步骤一:准备工作1.将STC89C52单片机开发板与电脑通过串口线连接。

2.打开开发板电源,确保电源工作正常。

步骤二:编写汇编程序1.打开汇编语言编辑器,例如Keil C51。

2.创建一个新的汇编语言项目,命名为“experiment.asm”。

3.编写汇编程序,实现所需的功能。

例如,可以编写一个简单的程序,使LED灯闪烁。

步骤三:编译和烧录程序1.选择适当的编译选项,将汇编程序编译为二进制文件。

2.将生成的二进制文件烧录到单片机中。

可以使用烧录软件或者编程器完成这一步骤。

步骤四:连接外部电路1.根据需要,连接外部电路到单片机的GPIO引脚。

例如,如果需要控制LED灯,可以将LED的阳极连接到单片机的某个输出引脚,将LED的阴极连接到单片机的地。

步骤五:运行实验1.将开发板连接到电源,确保电源正常工作。

2.按下开发板上的复位按钮,使单片机开始执行程序。

3.观察实验现象,并记录下实验结果。

5. 实验结果与分析通过以上步骤,我们成功编写并烧录了一个简单的汇编程序到单片机中。

在运行实验时,LED灯按照程序的要求进行闪烁。

这表明我们的实验设计和编程是正确的。

6. 实验总结在本次实验中,我们通过编写汇编程序,学习了单片机的基本操作和工作原理。

通过实际操作,我们更好地理解了汇编语言的编写和单片机的工作方式。

同时,我们还学会了使用烧录软件将程序烧录到单片机中,并通过外部电路观察实验结果。

7. 实验改进在以后的实验中,我们可以尝试更复杂的功能,例如通过单片机控制电机或者LCD显示屏等。

单片机闪烁实验报告

单片机闪烁实验报告

单片机闪烁实验报告单片机闪烁实验报告引言:单片机是一种集成电路,具有微处理器核心、存储器和输入输出设备等功能。

在现代电子技术中,单片机应用广泛,其灵活性和可编程性使其成为各种电子设备的重要组成部分。

本实验旨在通过使用单片机控制LED灯的闪烁,探索单片机的基本原理和应用。

一、实验目的:通过本实验,我们的目的是熟悉单片机的工作原理和编程方法,理解单片机控制LED灯闪烁的过程。

同时,通过实际操作,培养我们的动手能力和团队合作精神。

二、实验器材:1. 单片机开发板2. LED灯3. 连接线4. 电源三、实验步骤:1. 将单片机开发板与电源连接,确保电源正常工作。

2. 将LED灯连接到开发板上的GPIO引脚。

3. 打开开发板上的编程软件,编写控制LED闪烁的程序。

4. 将编写好的程序下载到单片机开发板上。

5. 打开开发板上的电源,观察LED灯是否按照程序闪烁。

四、实验结果:经过实验,我们成功地控制了LED灯的闪烁。

在程序中,我们通过设置GPIO引脚的高低电平来控制LED灯的亮灭。

通过调整程序中的延时时间,我们还可以控制LED灯的闪烁频率和亮度。

这进一步验证了单片机的可编程性和灵活性。

五、实验总结:通过本次实验,我们深入理解了单片机的工作原理和应用。

单片机作为一种集成电路,不仅具有微处理器的功能,还可以通过编程实现各种功能。

在实验中,我们通过控制LED灯的闪烁,体会到了单片机的实际应用价值。

同时,实验过程中我们也发现了一些问题和挑战,例如程序编写的复杂性和调试的难度。

这些问题提醒我们要不断学习和提升自己的技能,以更好地应对未来的挑战。

六、实验展望:本次实验只是单片机应用的一个简单示例,单片机的应用领域非常广泛,包括家电、汽车、工业自动化等。

未来,我们可以进一步研究单片机的高级应用,例如通过单片机控制温度、湿度等传感器,实现智能家居系统。

这将有助于我们更好地理解和应用单片机技术,为未来的科技发展做出贡献。

结语:通过本次实验,我们不仅学习了单片机的基本原理和应用,还培养了动手能力和团队合作精神。

单片机实验程序及流程图

单片机实验程序及流程图

《单片机技术》实验多媒体讲义《单片机技术》实验多媒体讲义《单片机技术》实验多媒体讲义三.程序清单及程序流程框图ORG 0000H Array LJMP MAINMAIN: MOV R0,#30HMOV R2,#10HCLR AA1: MOV @R0,AINC R0INC ADJNZ R2,A1MOV R0,#30HMOV R1,#40HMOV R2,#10HA2: MOV A, @R0MOV @R1,AINC R0INC R1DJNZ R2, A2MOV R1,#40HMOV DPTR ,#4800HMOV R2, #10HA3: MOV A,@R1MOVX @DPTR ,AINC R1INC DPTRDJNZ R2,A3MOV SP,#60HMOV R2,#10HMOV DPTR ,#4800HPUSH DPLPUSH DPHMOV DPTR,#5800HMOV R3,DPLMOV R4,DPHA4: POP DPHPOP DPLMOVX A,@DPTRINC DPTRPUSH DPLPUSH DPHMOV DPL,R3MOV DPH,R4 MOVX @DPTR,A INC DPTRMOV R3,DPLMOV R4,DPHDJNZ R2,A4MOV R0,#50HMOV DPTR,#5800H MOV R2,#10HA5: MOVX A,@DPTR MOV @R0,AINC R0 INC DPTR DJNZ R2,A5POP DPH POP DPL HERE: LJMP HEREEND《单片机技术》实验多媒体讲义《单片机技术》实验多媒体讲义《单片机技术》实验多媒体讲义三.实验电路四.程序清单及流程图程序一ORG 0000HLJMP MAIN ORG 000BH LJMP IPTO MAIN: MOV SP, #30H MOV TMOD, #01HCLR 00H SETB EA SETB ET0 MOV TH0, #3CH MOV TL0, #0B0H MOV R1, #14H SETB TR0 MOV A, #0feH MOV P1, A NT: JNB 00H, NT RL A MOV P1, ACLR 00H LJMP NT IPTO: MOV TH0,#3CH MOV TL0,#0B0HDJNZ R1, TIOMOV R1, #14HSETB 00HTIO: RETIEND程序二只需将程序一中“RL A”改为“RR A”即可实现其功能。

单片机实验指导书

单片机实验指导书

单片机实验指导书第一章实验概述本实验指导书旨在帮助学生掌握单片机基本原理和应用技巧。

通过实验的学习,学生将了解单片机的内部结构,学习单片机的编程方法,并能够用单片机实现简单的控制功能。

第二章实验准备2.1 实验器材准备本实验需要准备以下器材:- 单片机开发板- USB线- 电脑2.2 软件安装在开始实验之前,需要安装以下软件:- Keil C51开发环境- STC单片机系列驱动程序第三章实验步骤3.1 硬件连接将单片机开发板通过USB线连接到电脑上,并确保连接正常。

3.2 软件设置打开Keil C51开发环境,点击菜单栏中的“文件”选项,选择“新建”创建新的工程。

设置工程的名称和保存位置,确定后点击“保存”。

3.3 编写程序在Keil C51开发环境中,编写单片机程序。

首先需要包含相应的头文件,然后编写具体的程序逻辑,实现所需的功能。

3.4 编译和烧录程序在编写完程序后,点击菜单栏中的“编译”选项进行编译。

编译成功后,点击菜单栏中的“下载”选项将程序烧录到单片机开发板中。

3.5 实验验证将程序烧录完毕后,将开发板与外部模块连接,观察实验现象是否符合预期。

第四章实验注意事项4.1 安全注意事项在实验过程中,要注意使用安全电压和电流,避免短路和电击风险。

4.2 实验环境实验需要在安静、整洁的环境中进行,以避免干扰和误操作。

4.3 调试和故障排除如果遇到实验效果不理想或者出现故障的情况,可以参考开发板的说明书进行故障排查和调试。

第五章实验总结通过本次实验,我深入了解了单片机的基本原理和应用技巧。

通过编写程序并实际观察实验现象,我成功掌握了单片机编程的方法和技巧,并能够用单片机实现简单的控制功能。

本次实验还让我意识到了实验中的安全注意事项和环境要求的重要性。

在实验过程中,我严格遵守了安全规定,并在安静整洁的环境中进行操作,确保实验顺利进行。

通过反复实践和调试,我不断提高了自己的实验技巧和问题排查能力。

在遇到故障时,我能够通过检查并参考说明书,准确地找到并解决问题。

单片机程序大全

单片机程序大全

单片机程序大全(以下是一个以“单片机程序大全”为题目的文章范例,依据题目性质并非一个合同或作文的格式。

请注意,这个范例只是为了明示写作格式的变化,并非提供一个实际的单片机程序大全。

)单片机程序大全本文将为大家提供一个全面的单片机程序大全,涵盖了各种常见的单片机应用。

希望本文能够对单片机程序的学习和实践有所帮助。

一、LED灯程序LED灯是一个常见的单片机实验项目。

以下是一个基本的LED灯闪烁程序的代码,使用C语言编写:```c#include <reg51.h>#define LED P0void delay(int time) {int i, j;for (i = 0; i < time; i++) {for (j = 0; j < 10000; j++) {; // 空循环,用于延时}}}void main() {while (1) {LED = 0xFF; // 所有LED灯亮delay(1000); // 延时1秒LED = 0x00; // 所有LED灯灭delay(1000); // 延时1秒}}```二、温度监测程序单片机可以用于温度监测,以下是一个简单的温度监测程序的代码示例,使用C语言编写:```c#include <reg51.h>#define TEMP P1void delay(int time) {int i, j;for (i = 0; i < time; i++) {for (j = 0; j < 10000; j++) {; // 空循环,用于延时}}}void main() {while (1) {if (TEMP > 30) {P0 = 0x01; // 温度过高,亮起警示灯 } else {P0 = 0x00; // 温度正常,灭掉警示灯 }delay(100); // 延时0.1秒}}```三、电机控制程序单片机常用于电机控制,以下是一个电机正反转控制程序的代码示例,使用C语言编写:```c#include <reg51.h>#define MOTOR P2void delay(int time) {int i, j;for (i = 0; i < time; i++) {for (j = 0; j < 10000; j++) {; // 空循环,用于延时}}}void main() {while (1) {MOTOR = 0x01; // 电机正转delay(1000); // 延时1秒MOTOR = 0x02; // 电机反转delay(1000); // 延时1秒}}```以上仅是三个简单的单片机程序示例,单片机的应用非常广泛,包括但不限于LED灯闪烁、温度监测、电机控制等。

单片机c语言程序设计---单片机实验报告

单片机c语言程序设计---单片机实验报告

单片机c语言程序设计---单片机实验报告实验目的:1.掌握单片机的中断的原理、中断的设置,掌握中断的处理及应用2.掌握单片机的定时器/计数器的工作原理和工作方式,学会使用定时器/计数器实验内容:一.定时器/计数器应用程序设计实验1.计数功能:用定时器1方式2计数,每计数满100次,将P1.0取反。

(在仿真时,为方便观察现象,将TL1和TH1赋初值为0xfd,每按下按键一次计数器加1,这样3次就能看到仿真结果。

)分析:外部计数信号由T1(P3.5)引脚输入,每跳变一次计数器加1,由程序查询TF1。

方式2有自动重装初值的功能,初始化后不必再置初值。

将T1设为定时方式2,GATE=0,C/T=1,M1M0=10,T0不使用,可为任意方式,只要不使其进入方式3即可,一般取0。

TMOD=60H。

定时器初值为X=82-100=156=9CH,TH1=TL1=9CH。

程序:#include<REGX51.H>void main(){P1_0=0;TMOD=0x60;TH1=0xFD;TL1=0xFD;ET1=1;EA=1;TR1=1;while(1){}}void timer1_Routine()interrupt3{P1_0=~P1_0;}实验2.中断定时使用定时器定时,每隔10s使与P0、P1、P2和P3端口连接的发光二极管闪烁10次,设P0、P1、P2和P3端口低电平灯亮,反之灯灭。

分析:中断源T0入口地址000BH;当T0溢出时,TF0为1发出中断申请,条件满足CPU响应,进入中断处理程序。

主程序中要进行中断设置和定时器初始化,中断服务程序中安排灯闪烁;TL0的初值为0xB0,TH0的初值为0x3C,执行200次,则完成10s定时。

实验要求:完成计数实验和中断计数实验。

具体包括绘制仿真电路图、编写c源程序、进行仿真并观察仿真结果,需要保存原理图截图,保存c源程序,对仿真结果进行总结。

程序:#include<REGX51.H>#include"Delay.h"int i;int j=0;void main(){ P1=0; P2=0;P3=0; P0=0; TMOD=0x01;TH0=0x3C;TL0=0xB0;ET0=1;EA=1;TR0=1;while(1) {}}void timer0_Routine()interrupt1 {TH0=0x3C;TL0=0xB0;j++;if(j>=150){ j=0; for(i=0;i<20;i++){P1=~P1;P2=~P2;P3=~P3;P0=~P0;Delay(200); } }}实验分析:心得体会:。

单片机综合实验课程设计

单片机综合实验课程设计

单片机综合实验课程设计一、课程目标知识目标:1. 学生能理解单片机的基本原理,掌握其内部结构及相关功能模块的使用方法。

2. 学生能掌握单片机编程的基本语法和技巧,能独立完成简单的程序设计。

3. 学生能了解单片机在现实生活中的应用,并学会分析实际案例。

技能目标:1. 学生能运用所学知识,完成单片机的基本操作和程序编写。

2. 学生能通过实验,学会使用相关开发工具和调试技巧,具备一定的故障排查能力。

3. 学生能运用单片机技术解决实际问题,提高创新实践能力。

情感态度价值观目标:1. 学生通过单片机综合实验课程,培养对电子信息科学的兴趣和热情。

2. 学生在团队协作中,学会沟通、分享和合作,提高解决问题的能力。

3. 学生能认识到单片机技术对社会发展的作用,树立正确的价值观和责任感。

课程性质:本课程为实践性课程,侧重于培养学生的动手能力和创新能力。

学生特点:学生已具备一定的单片机基础知识,对实际操作感兴趣,但编程能力和问题解决能力有待提高。

教学要求:结合学生特点,注重理论与实践相结合,强调动手实践和团队协作,提高学生的综合能力。

通过课程目标分解,使学生在知识、技能和情感态度价值观方面取得具体的学习成果,为后续教学设计和评估提供依据。

二、教学内容本课程教学内容主要包括以下几部分:1. 单片机基础理论:回顾单片机的基本原理、内部结构、工作原理等,重点讲解中断系统、定时器/计数器、串行通信等模块的功能和应用。

2. 单片机编程语言:以C语言为基础,介绍单片机编程的基本语法、数据类型、运算符、控制语句等,并通过实例进行讲解。

3. 单片机实验操作:结合教材章节,进行以下实验:- 基本输入输出实验:学习单片机I/O口控制,实现LED灯、蜂鸣器等设备的控制。

- 中断控制实验:掌握中断系统的使用,实现外部中断控制。

- 定时器/计数器实验:学习定时器/计数器的配置,完成定时控制等功能。

- 串行通信实验:了解串行通信原理,实现单片机之间的数据传输。

单片机c语言程序设计实训100例——基于arduino+proteus仿真

单片机c语言程序设计实训100例——基于arduino+proteus仿真

单片机c语言程序设计实训100例——基于arduino+proteus仿真单片机C语言程序设计是电子信息类专业中的一门重要课程,通过学习这门课程可以掌握基本的嵌入式系统开发技术。

为了提高学生对于单片机编程能力和实践操作能力的培养,通常会进行相关实训。

在这篇文章中,我将介绍一个基于Arduino+Proteus仿真环境下的100个例题来帮助大家更好地理解和掌握单片机C语言程序设计。

每个例题都包含详细说明、代码示例以及相应功能模块在Proteus上面运行效果图等内容。

1. 闪烁LED灯:使用延时函数使得连接到Arduino引脚13上面的LED灯周期性地闪烁。

2. 控制舵机角度:根据输入信号改变舵机转动角度,并且利用串口监视器显示当前角度值。

3. 温湿度传感器读取数据并显示:通过DHT11温湿度传感器获取周围环境温湿度数值,并将其显示出来。

4. 数码管计数器: 使用74HC595芯片驱动四位共阳极数字管,在7段数码管上循环从0-9递增或者递减展示数字5. 蜂鸣器播放音调: 通过PWM信号控制蜂鸣器发出不同频率的声音。

6. 红外遥控LED灯: 使用红外接收模块读取来自红外遥控器发送的指令,并根据指令点亮或者熄灭连接到Arduino引脚上面的LED灯。

这些例题涵盖了单片机C语言程序设计中常见且基础性较强的内容,可以帮助学生逐步提高编程能力和实践操作技巧。

在Proteus仿真环境下进行实验也有以下几个优点:1. 安全可靠:在环境下进行实验,不存在电路元件损坏、线路错误等问题,保证了安全性和稳定性。

2. 节约成本:无需购买昂贵而易损耗品(如传感器、舵机等),只需要使用软件即可完成相关功能测试。

3. 方便快速:Proteus具备图形化界面以及大量现成组建库文件, 只要简单地将所需元素放入画布并连好线就可以开始调试代码4.多样化场景设置: Proteus支持各种设备与芯片之间相互联动关系搭配总结起来说,“100例——基于arduino+proteus仿真”这个实训项目是一个非常有价值的单片机C语言程序设计学习资源。

单片机的原理及应用实验报告

单片机的原理及应用实验报告

单片机的原理及应用实验报告一、引言单片机(Microcontroller Unit,简称MCU)是集成了微处理器核心、存储器、输入输出接口及其他外围设备的一种特殊集成电路芯片。

它具有存储能力、运算能力和控制能力,广泛应用于各种电子设备和系统中。

本实验旨在探究单片机的工作原理,并通过实际应用实验来进一步理解其使用技术与方法。

二、实验目的1.了解单片机的基本结构和工作原理;2.学习如何使用单片机进行控制和数据处理;3.掌握单片机的简单编程技巧;4.探索和实现基本的单片机应用。

三、实验仪器和材料•单片机开发板•USB数据线•LED灯•电阻、电容等基本电子元件四、实验步骤1.硬件连接步骤:–将单片机开发板连接到电脑上,通过USB数据线进行供电和通信。

–将LED灯接入单片机的IO引脚。

–连接其他所需的电子元件,如电阻、电容等。

2.单片机编程步骤:–打开开发环境,使用C语言编写所需的程序。

–确定需要使用的IO引脚和控制方式。

–编译并下载程序到单片机开发板上。

3.实验运行步骤:–按照程序设计的要求,进行相应的操作和观察。

–通过观察LED灯的亮灭、闪烁等情况,验证单片机的控制和运算能力。

五、实验结果与分析在实验过程中,我们成功地编程控制了单片机开发板上的LED灯。

通过修改程序代码中的控制参数,我们可以实现LED灯的不同状态,例如常亮、闪烁、呼吸灯等效果。

这验证了单片机的控制和运算能力。

六、实验总结通过本实验,我们对单片机的原理和应用有了初步的了解。

单片机作为一种功能强大的集成电路芯片,在各种电子设备和系统中都有广泛的应用。

掌握单片机的编程技巧和使用方法对于电子领域的学习和研究都是至关重要的。

七、参考文献无以上是本次实验的实验报告,通过本次实验,我们深入理解了单片机的原理和应用,并成功完成了LED灯的控制实验。

希望通过这次实验的学习,能够对单片机的应用有更深入的认识,并为未来的学习和研究打下基础。

单片机实验报告范文

单片机实验报告范文

单片机实验报告范文单片机(Microcontroller)是指一种封装了微处理器(Microprocessor)、存储器和各种输入输出接口电路功能的集成电路。

单片机在电子设计与开发中有广泛应用,可以用于控制和监测各种系统和设备。

本实验报告将介绍在实验中使用单片机所进行的实验步骤和实验结果。

实验目的:1.理解单片机的基本工作原理和功能。

2.掌握单片机的编程和调试方法。

3.应用单片机实现简单的控制功能。

实验仪器和材料:1.单片机开发板2.计算机B数据线4.电源适配器5.LED灯6.麦克风模块7.温度传感器实验步骤:1.准备工作:将单片机开发板与计算机连接,接通电源适配器。

2.熟悉开发工具:安装单片机开发软件,并了解软件的基本功能。

3.学习编程语言:了解单片机的编程语言,例如C语言或汇编语言,并编写简单的程序。

4.硬件连接:将LED灯、麦克风模块和温度传感器连接至开发板的相应引脚。

5.编程实现:根据实验要求,编写相应的程序,控制LED灯、获取麦克风模块的声音信号或获取温度传感器的温度值。

7.实验结果:根据实验要求,记录LED灯的亮灭状态、麦克风模块的声音信号强度或温度传感器的温度数值。

实验结果:通过实验,我们成功地控制了LED灯的亮灭状态,获取了麦克风模块的声音信号强度和温度传感器的温度数值。

在编程实现过程中,我们学会了使用单片机编程语言,了解了一些常用的语法和函数。

在调试测试中,我们可以通过相关的输出或显示结果来判断程序的正确性,及时发现和修复错误。

实验总结:本实验通过单片机开发板和相应的硬件以及编程实现了简单的控制和监测功能。

通过实验,我们深入了解了单片机的基本工作原理和功能,并掌握了一些基本的编程和调试方法。

实验结果表明,我们成功实现了实验要求,并对单片机的应用有了更加深入的理解。

通过这次实验,我们不仅提高了动手实践能力,也增加了对科技发展的看法。

《单片机C语言程序设计》实验报告

《单片机C语言程序设计》实验报告

《单片机C语言程序设计》实验报告
一、实验目的和要求
1、掌握protues7.10的安装及操作,掌握电路搭建方法,掌握仿真方法。

2、掌握keil uvision5的安装及操作,掌握新建工程项目,调试运行方法。

二、实验内容和原理
1、运行文件名为歌曲的实例,打开“歌曲.DSN”,运行给出的例子。

详细
操作过程参考《单片机实验一参考文档》P1和P2的描述。

2、参考《单片机实验一参考文档》中的P2-P4关于“三、protues软件
的界面与操作介绍”中的描述,了解protues软件的界面与操作。

3、使用protues软件绘制“流水灯”的原理图,并通过调试。

详细过程
参考《单片机实验一参考文档》的P4-P11,熟悉protues的使用。

4、使用Keil uVision5完成上述“流水灯”的程序设计。

步骤如下:
①新建工程项目,并选择好芯片
②建立c源程序文件
③编写流水灯程序文件,添加文件到当前项目组中及编译文件
④检查并修改源程序中的错误
三、主要仪器设备
Protues硬件仿真调试软件
Keil编程软件
四、操作方法与实验步骤
1、根据实验一新建工程操作,新建工程。

2、根据实验原理图链接Protues仿真电路图。

3、根据实验要求编写C程序。

4、通过Protues仿真调试,修改程序。

五、实验结果与分析。

单片机实验报告范文

单片机实验报告范文

单片机实验报告范文
一、实验目的
通过本次实验,掌握单片机的基本原理与编程方法,熟悉单片机的开发环境,技能,了解单片机的必要电路原理。

二、实验器材和软件
器材:STC89C52单片机板、开发环境、PC机、线路板、电源、按钮开关、LED灯、蜂鸣器等。

软件:Keil uVision4编译器。

三、实验内容
1.点亮一个LED灯
将LED灯连接到单片机的1号引脚,通过编写程序点亮LED灯。

2.使用按钮开关控制LED灯
将按钮开关连接到单片机的2号引脚,编写程序使按钮开关控制LED 灯的亮灭。

3.通过串口将数据发送给PC机
设置单片机与PC机进行串口通信,通过编写程序将单片机中的数据发送给PC机。

四、实验步骤
1.按照实验器材和软件的要求搭建实验电路。

五、实验结果与分析
实验中点亮一个LED灯、使用按钮开关控制LED灯、通过串口将数据发送给PC机的实验均取得了预期的结果,显示出了单片机的基本原理与编程方法。

六、实验总结
通过这次实验,我深入了解了单片机的工作原理和编程方法,掌握了单片机的开发环境和技能,学会了使用单片机将数据发送到PC机,并能通过编程控制LED灯的亮灭。

实验过程中也遇到了一些问题,如电路连接不正确、程序代码错误等,但通过仔细排查和调试,最终解决了问题。

这次实验使我对单片机的实际应用有了更深的认识,也为今后进一步学习和应用提供了基础。

参考资料:
无。

单片机综合设计实验

单片机综合设计实验

单片机综合设计实验一、实验目的通过单片机的综合设计实验,加深对单片机原理和应用的理解,练习使用单片机进行控制和数据处理的能力。

二、实验内容设计一个模拟温度控制系统,要求能够通过单片机读取温度传感器的温度值,并根据设定的目标温度进行判断和控制,使得温度值稳定在目标温度附近。

即实现一个简单的闭环温度控制系统。

三、实验器材1.单片机:使用8051单片机2.温度传感器:使用LM35温度传感器3.显示器:使用数码管显示器4.控制器:使用电热器作为温度控制的对象,通过控制电热器的加热时间和加热功率来控制温度四、实验步骤1.连接电路将LM35温度传感器与单片机相连接,使得单片机能够读取到温度传感器的模拟信号。

将单片机与数码管显示器以及电热器相连接,使得单片机能够通过数码管显示温度值,并能够控制电热器的加热时间和加热功率。

2.编写程序根据实验要求,设计一个闭环温度控制系统的程序。

通过单片机读取温度传感器的温度值,并与设定的目标温度进行比较,根据比较结果控制电热器的加热时间和加热功率。

同时,将温度值通过数码管进行显示,使得操作人员能够实时监控温度的变化。

3.调试验证五、实验结果经过调试验证,实验结果表明设计的温度控制系统能够达到预期的效果。

单片机能够准确读取温度传感器的温度值,并根据设定的目标温度进行判断和控制,使得温度能够稳定在目标温度附近。

六、实验总结通过这次单片机综合设计实验,我对单片机的原理和应用有了更深入的理解。

通过实际操作和编程,我学会了如何连接温度传感器和数码管显示器,以及如何通过单片机对温度进行控制和显示。

同时,我还锻炼了解决问题和调试的能力,提高了实际应用技能。

这次实验不仅提供了实践的机会,也巩固了我对单片机的相关知识,为今后的学习和应用打下了坚实的基础。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

单片机实验程序软件实验一1、分别编程实现两个16位无符号数相加,结果存放在40H41H中;两个16位的无符号数相减,结果存放在30H31H中。

; 两个16位无符号数相加,结果存放在30H31H中ORG 0000HLJMP MAINORG 0030HMAIN :MOV R3,#01H ;输入加数高八位MOV R4,#23H ;输入加数低八位MOV R5,#45H ;输入被加数高八位MOV R6,#67H ;输入被加数低八位MOV A,R4 ;将R4存入寄存器AADD A,R6 ;A与R6相加,结果存入AMOV 31H,A ;将低八位的和数存入31HMOV A,R3 ;将R3存入寄存器AADDC A,R5 ;A与R5相加,结果存入AMOV 30H,A ;将高八位的和数存入30HSJMP $END; 两个16位的无符号数相减,结果存放在30H31H中。

ORG 0000HLJMP MAINORG 0030HMAIN :MOV R3,#12H ;输入减数高八位MOV R4,#34H ;输入减数低八位MOV R5,#56H ;输入被减数高八位MOV R6,#78H ;输入被减数低八位MOV A,R4 ;将R4存入寄存器ACLR C ;C位清"0"SUBB A,R6 ;A与R6相减,结果存入AMOV 31H,A ;将低八位的差数存入31HMOV A,R3 ;将R3存入寄存器ASUBB A,R5 ;A与R5相减,结果存入A MOV 30H,A ;将高八位的差数存入30HSJMP $END2、编程实现X (X ≥40)Y= 2X (20<X<40)0(X≤20);实现X>=40时,Y=X;20<X<40时,Y=2X;X<20时,Y=0 X的值存放于R2中,Y的值存放于R3中ORG 0000HLJMP MAINORG 0030HMAIN:CMP40: CJNE R2,#40,NEXT0 ;X与40比较,结果由CY读出NEXT0: JNC BIGGER40 ;判断C的值,C为0时则X大于或者等于40,跳到BIGGER40 JC CMP20 ;判断C的值,C不为0时则X小于40,跳到CMP20CMP20: CJNE R2,#21,NEXT1 ;X与21比较,结果由CY读出NEXT1: JNC BIGGER20 ;判断C的值,C为0时则X大于或者等于21(即X大于20),跳到BIGGER20JC SMALLER20 ;判断C的值,C不为0时则X小于20,跳到SMALLER20BIGGER40: MOV A,R2 ;X>=40时,将X的值赋给存放Y的值的R3MOV R3,ASJMP $BIGGER20: MOV A,R2 ;20<X<40时,将X的值乘以2再赋给存放Y的R3MOV B,#02MUL ABMOV R3,ASJMP $SMALLER20: CLR A ;X<20时,将0赋给YMOV R3,ASJMP $3、学生实验:编写80个数相加,结果存放在30H31H中。

;编写80个数相加,结果存放在30H31H中ORG 0000HLJMP MAINORG 0030HMAIN: MOV R2,#80 ;输入累加的个数N存放到R2中MOV R0,#32H ;输入参与累加数据的首个数据的地址ADDER: MOV A,@R0 ;将参与累加的数据的值赋给AADD A,31H ;将A与当前累加数的和的低位(31H)相加结果存放在A中 MOV 31H,A ;将求得的和数的低位放入31H中CLR A ;对A清"0"ADDC A,30H ;计算已得累加数高位与当前进位相加,结果存放在A中 MOV 30H,A ;将求得的和数的高位放入30H中INC R0 ;R0中的数据加1LOOP: DJNZ R2,ADDER ;循环判断SJMP $END软件实验二1、编写R1×R2R3=R4R5R6,R1R2×R3R4=R4R5R6R7。

; R1×R2R3=R4R5R6ORG 0000HLJMP MAINORG 0030HMAIN: MOV A,R3 ; R1乘以低位数R3 R3xR1=R5R6MOV B,R1MUL ABMOV R6,AMOV R5,BMOV A,R2 ; R1乘以高位数R2 ;R2xR1=R4AMOV B,R1MUL ABMOV R4,BADD A,R5 ; 高。

低乘数结果相加 R5+A=R5MOV R5,A ;R4+CY=R4MOV A,R4ADDC A,#00HMOV R4,ASJMP $END;R1R2×R3R4=R4R5R6R7ORG 0000H LJMP MAINORG 0030H;————R2乘以R3R4存放于R5R6R7MAIN: LCALL MULLMOV R5,30HMOV R6,31HMOV R7,32H ;调用子程序MULL;————R1先赋给R2,再乘以R3R4MOV A,R1MOV R2,ALCALL MULL ;调用子程序MULLCLR C ;进位清"0"MOV A,32H ;R6加上32H中的值,存放于R6ADD A,R6MOV R6,AMOV A,R5 ;R5加上31H中的值,存放于R5ADDC A,31HMOV R5,AMOV A,#00H ;30H加上进位C,存放于R4ADDC A,30HMOV R4,ASJMP $;————子程序MULL:实现R2乘以R3R4R结果存放于30H31H32H MULL: MOV A,R4 ; R2乘以低位数R4 R3xR1=31H32HMOV B,R2MUL ABMOV 32H,AMOV 31H,BMOV A,R3 ; R2乘以高位数R3 ;R2xR1=30HMOV B,R2MUL ABMOV 30H,BADD A,31H ; 高。

低乘数结果相加 31H+A=31HMOV 31H,A ;30H+CY=30HMOV A,30HADDC A,#00HMOV 30H,ARETEND2、找出内RAM中从30H到50H中在最小值。

;找出内RAM中从30H到50H中在最小值,并将最小值存放于60H中ORG 0000HLJMP MAINORG 0030HADDRMAX EQU 50H ;定义ADDRMAX为所查找范围的上限值ADDRMIN EQU 30H ;定义ADDRMIN为所查找范围的下限值MAIN: MOV R0,#ADDRMIN ;将地址指针存放于R0中,并赋初值LOOP1: MOV 60H,@R0LOOP2: CJNE R0,#ADDRMAX,NEXT1;判断R0是否达到所查找范围的上限NEXT1: JNC OUT ;是就跳出循环INC R0 ;否则RO加1MOV A,@R0CJNE A,60H,NEXT2 ;将相邻两个数((R0))和(60H)进行比较NEXT2: JNC LOOP2 ;若((R0))大于(60H)则直接跳到LOOP2JC LOOP1 ;若((R0))小于或者等于(60H)则 OUT: SJMP $ ;跳到LOOP1END3、用查表方式编写y=x3(x为0~9的整数),要求分别用@A+DPTR和@A+PC的方法。

;用@A+DPTR的方法,X存放于R4中,Y存放于R2R3中ORG 0000HLJMP MAINORG 0030HMAIN: MOV A,R4ADD A,R4 ;将累加器A翻倍MOV DPTR,#TABMOVC A,@A+DPTRMOV R2,AMOV A,R4 ;重新将X的值存入AADD A,R4 ;A翻倍INC A ;A加1MOVC A,@A+DPTRMOV R3,ASJMP $ TAB: DW 0000H,0001H,0008H,0019H,0040H ;0~9立方表DW 007DH,00C4H,0157H,0200H,02D9HEND;用@A+PC的方法。

X存放于R4中,Y存放于R2R3中ORG 0000HLJMP MAINORG 0030HMAIN: MOV A,R4ADD A,R4 ;存放X的R4加倍 ADD A,#09H ;累加器加上偏移量 MOVC A,@A+PCMOV R2,AMOV A,R4ADD A,R4ADD A,#04H ;累加器加上偏移量 MOVC A,@A+PCMOV R3,ASJMP $TAB: DW 0000H,0001H,0008H,0019H,0040H ;0~9立方表DW 007DH,00C4H,0157H,0200H,02D9HEND4.编程实现:时钟频率6MHZ,延时2MS;时钟频率12MHZ,延时10S;延时2MS,时钟频率6MHZORG 0000HLJMP MAINORG 0030HMAIN: LCALL DELSJMP $DEL: MOV R7,#5 ;外循环DEL1: MOV R6,#100 ;内循环DEL2: DJNZ R6,DEL2 ;先执行内循环,后执行外循环DJNZ R7,DEL1RETEND;延时10S,时钟频率12MHZORG 0000HLJMP MAINORG 0030HMAIN: LCALL DELSJMP $DEL: MOV R7,#5 ;外二循环DEL1: MOV R6,#50 ;外一循环DEL2: MOV R5,#200 ;内循环DEL3: DJNZ R5,DEL3 ;先执行内循环,后执行外一循环DJNZ R6,DEL2 ;最后执行外二循环DJNZ R7,DEL1RETEND软件实验三1、用查表方式编写y=x13+x23+x33。

(x为0~9的整数)#include <reg51.h>void main(){int a[10]={0,1,8,27,64,125,216,343,512,729}; //0~9的立方表int x1,x2,x3,y;x1=0;x2=6;x3=6;y=a[x1]+a[x2]+a[x3]; //X1,X2,X3的立方和while(1);}2、有10个8位二进制数据,要求对这些数据进行奇偶校验,凡是满足偶校验的数据(1的个数为偶数)都要存到内RAM50H开始的数据区中。

试编写有关程序。

#include <reg51.h>void main(){unsigned char data a[10]={0,1,8,19,40,75,88,57,2,9}; //二进制数据存入数组a中 char i;char *d=0x50; //定义d为指向内RAM50H的指针//对a[i]进行奇偶校验,偶数存入内RAM50H开始的数据中for(i==0;i<10;i++){ACC=a[i]; //a[i]存入累加器ACC中 if (P==0) //对a[i]进行奇偶校验{*d=a[i]; //偶数存入内RAM50H开始的数据区中d++; //d指针加1}}while(1);}3、有10个8位带符号二进制数,请将10个数按从小到大的顺序排列,并存到内RAM50H开始的单元中。

相关文档
最新文档