单片机实验报告
单片机定时器实验报告

一、实验目的1. 理解单片机定时器的工作原理和功能。
2. 掌握单片机定时器的编程方法,包括初始化、设置定时时间、启动定时器等。
3. 学会使用定时器实现定时功能,并通过实验验证其效果。
二、实验器材1. 单片机实验板2. 连接线3. 51单片机4. 计时器5. 示波器6. 电脑7. Keil软件三、实验原理定时器是单片机的一种重要外设,用于实现定时功能。
51单片机内部有两个定时器,分别为定时器0和定时器1。
定时器的工作原理是通过定时器计数器对机器周期进行计数,当计数器达到设定值时,定时器溢出,并产生中断请求。
定时器0和定时器1都具有四种工作模式,分别为:1. 模式0:13位定时器/计数器2. 模式1:16位定时器/计数器3. 模式2:8位自动重装模式4. 模式3:两个8位计数器本实验采用定时器0工作在模式1,实现50ms的定时功能。
四、实验步骤1. 将单片机实验板连接到电脑,并启动Keil软件。
2. 创建一个新的项目,并添加51单片机头文件(reg51.h)。
3. 编写定时器初始化函数,设置定时器0工作在模式1,并设置定时时间为50ms。
4. 编写定时器中断服务函数,用于处理定时器溢出事件。
5. 编写主函数,设置定时器中断,并启动定时器。
6. 编译并下载程序到单片机实验板。
7. 使用示波器观察定时器0的溢出信号。
五、实验代码```c#include <reg51.h>#define TIMER0_MODE1 0x01// 定时器0初始化函数void Timer0_Init() {TMOD &= 0xF0; // 清除定时器0模式位TMOD |= TIMER0_MODE1; // 设置定时器0工作在模式1TH0 = 0xFC; // 设置定时器0高8位初值TL0 = 0x18; // 设置定时器0低8位初值ET0 = 1; // 开启定时器0中断EA = 1; // 开启总中断TR0 = 1; // 启动定时器0}// 定时器0中断服务函数void Timer0_ISR() interrupt 1 {TH0 = 0xFC; // 重新加载定时器0高8位初值TL0 = 0x18; // 重新加载定时器0低8位初值// ... (其他处理)}void main() {Timer0_Init(); // 初始化定时器0while(1) {// ... (其他处理)}}```六、实验结果与分析1. 编译并下载程序到单片机实验板,使用示波器观察定时器0的溢出信号,可以看到定时器0每隔50ms产生一个溢出信号。
单片机实验一-加法器实验报告

单片机实验一-加法器实验报告南昌大学实验报告学生姓名:学号:专业班级:实验类型:□验证□综合■设计□创新实验日期:实验成绩:实验一单片机软件实验—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 ;结束。
单片机实训报告总结

单片机实训报告总结篇一:51单片机实训报告“51单片机”精简开发板的组装及调试实训报告为期一周的单片机实习已经结束了。
通过此次实训,让我们掌握了单片机基本原理的基础、单片机的编程知识以及初步掌握单片机应用系统开发实用技术,了解“51”单片机精简开发板的焊接方法。
同时培养我们理论与实践相结合的能力,提高分析问题和解决问题的能力,增强学生独立工作能力;培养了我们团结合作、共同探讨、共同前进的精神与严谨的科学作风。
此次实训主要有以下几个方面:一、实训目的1.了解“51”精简开发板的工作原理及其结构。
2.了解复杂电子产品生产制造的全过程。
3.熟练掌握电子元器件的焊接方法及技巧,训练动手能力,培养工程实践概念。
4.能运用51单片机进行简单的单片机应用系统的硬件设计。
5.掌握单片机应用系统的硬件、软件调试方法二、实验原理流水灯实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的硬件组成的单个单片机。
它的电气性能指标:输入电压:~6V,典型值为5V。
可用干电池组供电,也可用直流稳压电源供电。
如图所示:本流水灯实际上就是一个带有八个发光二极管的单片机最小应用系统,即为由发光二极管、晶振、复位、电源等电路和必要的硬件组成的单个单片机。
三、硬件组成1、晶振电路部分单片机系统正常工作的保证,如果振荡器不起振,系统将会不能工作;假如振荡器运行不规律,系统执行程序的时候就会出现时间上的误差,这在通信中会体现的很明显:电路将无法通信。
他是由一个晶振和两个瓷片电容组成的,x1和x2分别接单片机的x1和x2,晶振的瓷片电容是没有正负的,注意两个瓷片电容相连的那端一定要接地。
2、复位端、复位电路给单片机一个复位信号(一个一定时间的低电平)使程序从头开始执行;一般有两中复位方式:上电复位,在系统一上电时利用电容两端电压不能突变的原理给系统一个短时的低电平;手动复位,同过按钮接通低电平给系统复位,时如果手按着一直不放,系统将一直复位,不能正常。
stm32 实验报告

stm32 实验报告STM32 实验报告一、引言STM32是一款由STMicroelectronics公司推出的32位单片机系列,具有高性能、低功耗和丰富的外设资源等特点。
本篇实验报告将介绍我在学习和实践STM32过程中的一些经验和成果。
二、实验目的本次实验的目的是通过使用STM32单片机,实现一个简单的温度监测系统。
通过该实验,我希望能够熟悉STM32的开发环境,掌握基本的硬件连接和编程方法,并能够成功运行一个简单的应用程序。
三、实验步骤1. 硬件连接:将STM32单片机与温度传感器、LCD显示屏等硬件设备连接起来。
确保连接正确,避免短路或接触不良的情况。
2. 开发环境搭建:下载并安装STM32CubeIDE,配置开发环境。
这是一个集成开发环境,支持STM32系列的开发和调试。
3. 编写代码:使用C语言编写一个简单的程序,实现温度传感器数据的读取和显示。
在编写代码过程中,需要熟悉STM32的寄存器和外设配置,以及相关的函数库。
4. 编译和烧录:将编写好的代码进行编译,生成可执行文件。
然后使用JTAG或SWD接口将可执行文件烧录到STM32单片机中。
5. 测试和调试:将STM32单片机连接到电源,观察LCD显示屏上是否正确显示当前的温度数值。
如果有错误或异常情况,需要进行调试和排查。
四、实验结果经过以上的实验步骤,我成功地实现了一个简单的温度监测系统。
在LCD显示屏上,我可以清晰地看到当前的温度数值,并且该数值能够实时更新。
通过与实际温度计的对比,我发现该系统的测量结果相当准确。
五、实验总结通过这次实验,我对STM32单片机的开发和应用有了更深入的了解。
我学会了如何搭建开发环境、编写代码、编译和烧录程序,并且成功实现了一个简单的应用。
在实验过程中,我也遇到了一些问题,但通过查阅资料和与同学的交流,我能够及时解决这些问题。
在今后的学习和实践中,我将进一步探索STM32单片机的功能和应用领域。
我希望能够深入研究更复杂的项目,并挖掘出更多的潜力。
单片机无线通信实验报告

单片机无线通信实验报告一、实验目的本实验旨在利用单片机实现无线通信,理解无线通信的基本原理和过程,并掌握相关的基本技能。
二、实验器材1. 单片机:采用XX型号单片机作为实验对象。
2. 无线模块:选用XX型号无线模块进行无线通信。
3. 电脑:用于编写代码和与单片机进行通信。
4. 连接线和面包板:用于搭建电路连接和测试。
三、实验原理在实验中,我们将利用单片机和无线模块进行通信。
单片机通过串口与电脑相连,接收电脑发送的数据,并将数据通过无线模块发送出去。
另一块单片机通过无线模块接收数据,再通过串口将数据发送给电脑。
实现了无线通信的过程。
四、实验步骤1. 搭建电路:根据电路图连接单片机和无线模块,并将单片机与电脑串口相连。
2. 编写发送端代码:利用XX软件编写代码,实现单片机接收电脑数据,并通过无线模块发送出去的功能。
3. 编写接收端代码:同样利用XX软件编写代码,实现接收端单片机接收无线模块发送的数据,并通过串口发送给电脑的功能。
4. 烧录程序:将编写好的代码烧录到单片机中。
5. 测试:启动发送端和接收端单片机,通过电脑发送数据,观察接收端是否能够正常接收并传输给电脑。
五、实验结果经过多次实验,我们成功实现了单片机之间的无线通信。
发送端通过串口接收电脑发送的数据,并将数据通过无线模块发送出去。
接收端接收到数据后,再通过串口将数据传输给电脑。
整个通信过程稳定可靠,传输速度较快。
六、实验总结通过本次实验,我们深入了解了单片机无线通信的原理和步骤。
掌握了如何利用单片机和无线模块实现无线通信的技术要点。
同时,我们也加深了对单片机及其编程的理解和应用能力。
通过本次实验的实践,我们充分认识到了无线通信在现代社会中的重要性和广泛应用。
随着科技的不断进步,无线通信技术将得到更广泛的应用和发展。
在今后的学习和实践中,我们将继续深入探索无线通信领域,学习更多相关知识和技术,为现代社会的通信发展贡献自己的力量。
七、参考资料无线通信技术原理与实践,XXX出版社,20XX。
单片机闪烁实验报告

单片机闪烁实验报告单片机闪烁实验报告引言:单片机是一种集成电路,具有微处理器核心、存储器和输入输出设备等功能。
在现代电子技术中,单片机应用广泛,其灵活性和可编程性使其成为各种电子设备的重要组成部分。
本实验旨在通过使用单片机控制LED灯的闪烁,探索单片机的基本原理和应用。
一、实验目的:通过本实验,我们的目的是熟悉单片机的工作原理和编程方法,理解单片机控制LED灯闪烁的过程。
同时,通过实际操作,培养我们的动手能力和团队合作精神。
二、实验器材:1. 单片机开发板2. LED灯3. 连接线4. 电源三、实验步骤:1. 将单片机开发板与电源连接,确保电源正常工作。
2. 将LED灯连接到开发板上的GPIO引脚。
3. 打开开发板上的编程软件,编写控制LED闪烁的程序。
4. 将编写好的程序下载到单片机开发板上。
5. 打开开发板上的电源,观察LED灯是否按照程序闪烁。
四、实验结果:经过实验,我们成功地控制了LED灯的闪烁。
在程序中,我们通过设置GPIO引脚的高低电平来控制LED灯的亮灭。
通过调整程序中的延时时间,我们还可以控制LED灯的闪烁频率和亮度。
这进一步验证了单片机的可编程性和灵活性。
五、实验总结:通过本次实验,我们深入理解了单片机的工作原理和应用。
单片机作为一种集成电路,不仅具有微处理器的功能,还可以通过编程实现各种功能。
在实验中,我们通过控制LED灯的闪烁,体会到了单片机的实际应用价值。
同时,实验过程中我们也发现了一些问题和挑战,例如程序编写的复杂性和调试的难度。
这些问题提醒我们要不断学习和提升自己的技能,以更好地应对未来的挑战。
六、实验展望:本次实验只是单片机应用的一个简单示例,单片机的应用领域非常广泛,包括家电、汽车、工业自动化等。
未来,我们可以进一步研究单片机的高级应用,例如通过单片机控制温度、湿度等传感器,实现智能家居系统。
这将有助于我们更好地理解和应用单片机技术,为未来的科技发展做出贡献。
结语:通过本次实验,我们不仅学习了单片机的基本原理和应用,还培养了动手能力和团队合作精神。
单片机中断实验报告

通过单片机的下载接口,将可执行的二进制文件 下载到单片机中。
实验测试
通过按键触发外部中断,观察LED灯的状态变化, 验证程序的正确性。
04
实验结果与分析
中断响应时间测试
总结词
响应时间快
详细描述
在测试中,我们发现单片机的中断响应时间非常快,能够在极短的时间内对外 部事件做出响应。这主要得益于单片机的硬件架构和中断处理机制,使得单片 机能够迅速识别并处理外部事件。
提高编程能力
通过本次实验,我们认识到自己的编程能力还有很大的提升空间。在未来的学习中,我们将注重提高自 己的编程能力,包括代码的优化、调试技巧等方面。
THANKS
感谢观看
实验中的问题与解决方案
在实验过程中,我们遇到了一些问题,如中断触发条件不 稳定等,通过调整相关参数和优化代码,最终解决了这些 问题。
对实验的反思与建议
01
实验操作流程的不足
在实验过程中,我们发现操作流程仍存在一些不足之处,如某些步骤的
描述不够清晰,导致实验过程中出现了一些不必要的困惑。建议在后续
的实验指导书中对操作流程进行更加详细的描述。
深入学习单片机中断机制
通过本次实验,我们对单片机的中断机制有了初步的了解。在未来的学习中,我们计划深入学习单片机的中断机制, 了解更多关于中断的细节和应用技巧。
探索更多中断应用场景
除了本次实验中实现的按键中断和定时器中断外,我们还计划探索更多的中断应用场景,如串口中断、ADC中断等 ,以拓宽我们的知识面和应用能力。
05
结论与建议
实验结论
实验目标达成情况
实验目标是通过单片机实现外部中断和定时器中断,实验 过程中成功实现了外部按键中断和定时器中断,验证了单 片机的中断处理机制。
单片机流水灯实验报告

单片机流水灯实验报告引言单片机是一种集成电路,可以通过编程来控制不同的功能。
其中,流水灯是一个最简单的单片机实验项目,也是学习单片机的第一步。
本篇实验报告将详细介绍如何通过使用 AVR 单片机来实现一个流水灯的控制器。
实验原理流水灯的原理很简单,就是通过一个方向控制信号,以及一定的时间延时控制来逐步点亮和熄灭多个 LED 灯。
在本次实验中,我们将使用 AVR ATmega328P 单片机,它可以通过编程来实现流水灯的控制功能。
实验步骤1. 硬件准备将 ATmega328P 单片机插入到开发板中,并使用杜邦线将单片机的引脚连接到各个 LED 灯。
我们需要将一个引脚连接到方向控制信号,用于控制灯的点亮方向。
同时,我们还需要连接一个电位器,用于调节流水灯的速度。
2. 程序设计使用 Arduino 开发环境来编写 AVR 单片机的程序。
首先需要包含头文件 avr/io.h 和 util/delay.h,并定义输入输出引脚。
然后,我们需要定义一个名为“led” 的一个数组,来存储各个 LED 灯的输出状态。
同时,还需要定义一个变量“dir”,来表示流水灯的方向。
在程序主循环中,我们使用 for 循环来遍历各个 LED 灯。
同时,根据“dir”变量的不同,我们可以实现流水灯的正向和反向控制。
另外,我们还需要使用“_delay_ms()”函数来延时一定的时间,实现流水灯的闪烁效果。
3. 程序烧录使用 AVR ISP 编程器将编写好的程序烧录到单片机中。
在烧录过程中需要设置正确的程序和芯片类型,并选择正确的口线连接方式。
实验结果经过实际测试,我们成功地实现了一个流水灯控制器。
在调节电位器之后,灯的闪烁速度可以得到不同的调整。
同时,也可以通过改变方向控制信号来改变流水灯的运动方向。
结论通过本次实验可以学习到如何使用 AVR 单片机来实现一个简单的流水灯控制器。
通过编写程序、烧录编译等过程,可以加深对单片机的基础知识和理解。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
汇编语言程序设计1)编译后,系统提示:目标越界,改为AJMP后编译通过,将ORG 07FFH 改为0800H, 系统提示:目标越界,这说明AJMP可以在2KB 范围内无条件转移。
2.改为LJMP编译通过,这说明LJMP可以在64KB 范围内无条件转移。
3.将LJMP LP1改为SJMP LP0,机器码为80FC,其中FC为偏移量,它是一个补码,01H~7FH说明向PC(增大√、减小)方向跳,80H~FFH说明向PC(增大、减小√)方向跳,这说明SJMP可以在当前PC值-128B~+127B范围内无条件转移。
1、X、Y以补码的形式存放在20H、21H中,编写程序实现如下函数:实验程序:MOV A,20HJZ ZREOJB ACC.7,NEGMOV 21H,#01HSJMP PENDZREO:MOV 21H,ASJMP PENDNEG:MOV 21H,#0FFHPEND:SJMP$END结果记录:1.将数89H存放于20H中,运行程序,观察到21H单元中的内容为FF;2.将数05H存放于20H中,运行程序,观察到21H单元中的内容为01;3.将数00H存放于20H中,运行程序,观察到21H单元中的内容为00;2、将20H~27H中的压缩BCD码拆为两个单字节BCD码,存放在以2000H为首地址的外部RAM 中。
实验程序:MOV R0,#20HMOV R7,#08HMOV DPTR,#2000HLOOP:ACALL CZINC R0INC DPTRDJNZ R7,LOOPSJMP $CZ:MOV A,@R0SWAP AANL A,#0FHMOVX @DPTR,AINC DPTRMOV A,@R0ANL A,#0FHMOVX @DPTR,ARETEND结果记录:20H 21H 22H 23H 24H 25H 26H 27H87H 54H 36H 23 19H 43H 77H 69H 2000H 2002H2004H2006H2008H200AH200CH200EH07H 04H 06H 03H 09H 03H 07H 09H 2001H 2003H2005H2007H2009H200BH200DH200FH08H 05H 03H 02H 01H 04H 07H 06H1、数在计算机中是以补码形式存放的,因此,判断数据的正负,往往采用判断第7 位,是0 则为正数,是1 则为正数2、实验内容2中JZ ZREO 的机器码为600DH ,其中0DH 为偏移量,当前PC值0004 加上这个偏移量等于0011H ,这正是即将执行的程序的首地址,即标号为ZREO 语句。
程序计算器PC的功能是指向下一条指令,因此,跳转语句是依靠偏移量来改变程序计数器PC的值,从而改变程序的流向。
3、分支程序一定要注意分支的语句标号的正确性,每一分支之间必须用跳转(如SJMP)指令分隔,并跳转到相应标号。
4、子程序往往用间址寄存器传递数据,内部RAM用@Ri ,外部RAM用@DPTR ,绝对不能用直接地址。
最后以RET 结尾。
5、循环程序往往用寄存器传递数据,用R7控制循环次数,用调用作为循环体,用指令INC 修改地址指针,用指令DJNZ 判断循环结束。
6、执行ACALL前(SP)= 07H ,执行ACALL时,(SP)= 09H ,(08H)= 09H ,(09H)= 00H ,(PC)= 000FH ,PC的值正是子程序的入口地址,而堆栈中这两个单元存放的是断点处PC的值;执行到RET后,(SP)= 07H , 原08H的值弹给(PC)7~0 ,原09H的值弹给(PC)15~8 ,因此,返回断点继续执行主程序。
结论:掌握顺序结构程序设计。
掌握分支结构程序设计。
掌握控制转移类指令。
掌握子程序设计。
基本指令实验程序执行结果MOV R0, #30H (R0)=30HMOV A , @R0 (A)=07HMOV A , R0 (A)=30HMOV 31H, 30H (31H)=07HMOV 32H, #30H (32H)=30HINC @R0 (30H)=08HMOV 31H, @R0 (31H)=08HMOV DPTR, #0010H (DPTR)=0010HMOVX A, @DPTR (A)=01HMOVC A, @A+DPTR (A)=93HSWAP A (A)=39HXCHD A, @R0 (A)=38H(30H)=09HPUSH ACC (SP)=08H ((SP))=38HPUSH 07H (SP)=09H ((SP))=15HPOP ACC (A)=15H (SP)=08HPOP 07H (R7)=38H (SP)=07HMOV A,R7 (A)=15HEND内部RAM之间数据传送用指令MOV ,内部RAM与外部RAM之间数据传送只能使用MOVX指令,且必须通过累加器A传送;内部RAM与外部ROM之间数据传送只能使用指令MOVC ,且必须通过累加器A传送;但只能由外部ROM向内部RAM单向传送。
PUSH 和POP 是 堆栈 操作指令,若SP=07H ,执行PUSH ACC 指令时,操作顺序是先 先将SP 内容+1 ,然后 将A 内容送给SP 所指向单元中 ,执行POP ACC 指令时,操作顺序是先 将SP 所指向单元中的内容送给A ,然后 将SP 内容-1 。
2.算术运算类指令及PSW 状态的变化规律程序 ABCY AC OV P ORG 0000H 00H 00H 0 0 0 0 SETB C 00H 00H 1 0 0 0 MOV A,#49H49H 00H1 0 0 1 ADDC A,#27H 71H 00H 0 1 0 0 DA A77H 00H0 1 0 0 SUBB A,#0A5H D2H 00H 1 0 1 0 ADD A,#2DH FFH 00H0 0 0 0 INC A00H 00H0 0 0 0 ADDC A,#95H 95H 00H 0 0 0 0 DIV AB95H 00H0 0 1 0 MOV B,#08H 95H 08H 0 0 1 0 MUL AB A8H 04H 011END3.设计程序:查表求0~9的平方。
(以6为例)1)用指令MOVC A,@A+DPTR 查表ORG 0000H反汇编代码LJMP 1FFFH 0000:02 1F FF TAB:DB 00H,01H,04H 0003:00 01 04 DB 09H,10H,19H,24H 0006:09 10 19 24 DB 31H,40H,51H 000A:31 40 51 ORG 1FFFHMOV A,#06H 1FFFH:74 06 MOV DPTR,#TAB2001:900003 MOVC A,@A+DPTR 2004:93 SJMP $ 2005:80 FE ENDORG 0000H 反汇编代码 MOV A,#06HADD A,#02H MOVC A,@A+PC SJMP $ TAB:DB 00H,01H,04H DB 09H,10H,19H,24H DB 31H,40H,51H END3.拆字程序,设(20H)=35H,要求拆为03H、05H存放在外部RAM0020H、0021H 单元中。
ORG 0000H 反汇编代码执行结果MOV R0, #20HMOV DPTR, #0020HMOV A,@R0ANL A, #0FHMOVX @DPTR, AINC DPTRMOV A,@R0SWAP AANL A, #0F0HMOVX @DPTR, ASJMP $END结论:1.掌握Medwin(万利)软件运用方法。
2.熟悉基本指令及寻址方式。
3.掌握PSW标志位的变化规律。
4.掌握拆字程序与查表程序的设计。
实验三外部中断方式控制L E D1、当中断没发生时,8个LED按间隔依次发光。
当P3.2 (INT1)为负跳变时,8个LED 依次左移循环点亮。
实验程序:O R G0000HS J M P S T A R TO R G0013HA J M P Z D1O R G0030HS T A R T:S E T B E X1S E T B E AS E T B I T1M O V A,#55HL O O P:M O V P1,AS J M P L O O PO R G0060HZ D1:C L R E AP U S H A C CS E T B E AM O V A,#0F E HM O V R7,#08HL O O P1:M O V P1,AA C A L L D E L A YA C A L L D E L A YR L AD J N Z R7,L O O P1C L R E AP O P A C CS E T B E AR E T ID E L A Y:M O V R6,#00HD E L Y1:M O V R5,#00HD J N Z R5,$D J N Z R6,DE L Y1R E TE N D结果记录:2. 在P3.2 (INT1)发生中断后,8个LED依次循环点亮;P3.3(INT0)中断,8个LED 全部熄灭。
实验程序:实验四定时器/计数器中断五、程序1、用定时器T0用工作方式1实现P1.0所控制的LED每秒钟闪烁1次。
实验程序:1.确定工作方式字(T0方式1):TMOD=0000 0001B=01H2.计算初值:Fosc=6MHzTcy=12/6=2us假定定时时间为10ms,中断100次就得到1s。
X=216-10000/2=60536TH0=60=3ECTL0=176=078H3.程序设计ORG 0000HSJMP STARTORG 000BHAJMP ZDT0ORG 0030HSTART: MOV TH0,#3ECMOV TL0,#078HMOV TMOD,#01HSETB ET0SETB EAMOV R7,#0AHSETB TR0SJMP $ORG 0100HZDT0: MOV TH0,#3ECMOV TL0,#078HDJNZ R7,ZDT0_1CPL P1.0MOV R7,#64HZDT0_1:RETIEND实验结果:P1.0所控制的LED每秒钟闪烁1次。
2、当P3.5接收5个单脉冲,P1.0所控制的LED亮;当P3.5接收5个单脉冲,P1.0所控制的LED灭;如此循环。
实验程序:1.确定工作方式字(T1方式2):TMOD=0110 0000B=60H2.计算初值:X=28-5=251TH1=251=0FBHTL1=251=0FBH3.程序设计ORG 0000HSJMP STARTORG 001BHCPL P1.0RETIORG 0030HSTART: MOV TH1,#0FBHMOV TL1,# 0FB HMOV TMOD,#60HSETB ET1SETB EASETB TR1SJMP $END六、实验结果当P3.5接收5个单脉冲,P1.0所控制的LED亮;当P3.5再接收5个单脉冲,P1.0所控制的LED灭;如此循环。