单片机实验报告

合集下载

单片机定时器实验报告

单片机定时器实验报告

一、实验目的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、复位端、复位电路给单片机一个复位信号(一个一定时间的低电平)使程序从头开始执行;一般有两中复位方式:上电复位,在系统一上电时利用电容两端电压不能突变的原理给系统一个短时的低电平;手动复位,同过按钮接通低电平给系统复位,时如果手按着一直不放,系统将一直复位,不能正常。

单片机无线通信实验报告

单片机无线通信实验报告

单片机无线通信实验报告一、实验目的本实验旨在利用单片机实现无线通信,理解无线通信的基本原理和过程,并掌握相关的基本技能。

二、实验器材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
结论与建议
实验结论
实验目标达成情况
实验目标是通过单片机实现外部中断和定时器中断,实验 过程中成功实现了外部按键中断和定时器中断,验证了单 片机的中断处理机制。

单片机双机串行实验报告

单片机双机串行实验报告

单片机双机串行实验报告实验目的:通过单片机实现双机串行通信功能,掌握串行通信的原理、方法和程序设计技巧。

实验原理:双机串行通信是指通过串行口将两台单片机连接起来,实现数据的传输和互动。

常用的串行通信方式有同步串行通信和异步串行通信。

异步串行通信是指通过发送和接收数据时的起始位、停止位和校验位进行数据的传输。

而同步串行通信是指通过外部时钟信号进行数据的同步传输。

实验器材:1.两台单片机开发板(MCU7516)2.两个串口线3.两台计算机实验步骤:1.将两台单片机开发板连接起来,通过串口线连接它们的串行口。

2.在两台计算机上分别打开串口调试助手软件,将波特率设置为相同的数值(例如9600)。

3.在编程软件中,编写两个程序分别用于发送数据和接收数据。

4.在发送数据的程序中,首先要设置串口的波特率、数据位、停止位和校验位,并将数据存储在缓冲区中。

然后利用串口发送数据的指令将数据发送出去。

5.在接收数据的程序中,同样要设置串口的参数。

然后使用串口接收数据的指令将接收到的数据存储在缓冲区中,并将其打印出来。

实验结果与分析:经过实验,我们成功地实现了单片机之间的双机串行通信。

发送数据的单片机将数据发送出去后,接收数据的单片机能够正确地接收到数据,并将其打印出来。

实验中需要注意的是,串口的波特率、数据位、停止位和校验位必须设置为相同的数值。

否则,发送数据的单片机和接收数据的单片机无法正常进行通信。

同时,在实验之前,需要了解单片机开发板支持的串口通信相关的指令和函数。

实验总结:通过本次实验,我们深入了解了单片机之间的双机串行通信原理和方法。

掌握了串口的设置和使用方法,以及相关的指令和函数。

在实验中,我们学会了如何通过串行口实现数据的传输和互动,为今后的单片机应用和开发打下了基础。

同时,我们还发现,双机串行通信在实际应用中有着广泛的用途。

例如,可以通过串行通信实现两台计算机之间的数据传输,或者实现单片机与计算机之间的数据收发。

单片机流水灯实验报告

单片机流水灯实验报告

单片机流水灯实验报告引言单片机是一种集成电路,可以通过编程来控制不同的功能。

其中,流水灯是一个最简单的单片机实验项目,也是学习单片机的第一步。

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

单片机原理及接口技术学院:光电信息科学与技术学院班级:——实验报告册083-1实验一系统认识实验1.1 实验目的1. 学习keil c51集成开发环境的操作。

2. 熟悉td-51系统板的结构和使用。

1.2实验仪器pc 机一台,td-nmc+教学实验系统。

1.3实验内容1. 编写实验程序,将00h—0fh共16个数写入单片机内部 ram 的30h—3fh空间。

2.编写实验程序,将00h到0fh共16个数写入单片机外部ram的1000h到100fh空间。

1.4 源程序 0000hmov r1,#30h mov r2, #10h mov a, #00h mov @r1, a inc r1 inc a djnz r2,loop sjmp $ end2. org 0000hmov dptr, #1000h mov r2, #10h mov a, #00h movx @dptr, a inc dptr inc a djnz r2,loop sjmp $ endloop:loop:1.5 实验步骤1.创建 keil c51 应用程序(1)运行 keil c51 软件,进入 keil c51 集成开发环境。

- 3 -(2)选择工具栏的 project 选项,弹出下拉菜单,选择 newproject 命令,建立一个新的μvision2 工程。

选择工程目录并输入文件名 asm1 后,单击保存。

(3)工程建立完毕后,弹出器件选择窗口,选择 sst 公司的 sst89e554rc。

(4)为工程添加程序文件。

选择工具栏的 file 选项,在弹出的下拉菜单中选择 new 目录。

(5)输入程序,将 text1 保存成asm1.asm。

(6)将asm1.asm源程序添加到 asm1.uv2 工程中,构成一个完整的工程项目。

2.编译、链接程序文件(1)设置编译、链接环境(2)点击编译、链接程序命令,此时会在 output window 信息输出窗口输出相关信息。

3.调试仿真程序(1)将光标移到 sjmp $语句行,在此行设置断点。

(2)运行实验程序,当程序遇到断点后,停止运行,观察存储器中的内容,验证程序功能。

1.6 实验结果.2.4实验二查表程序设计实验2.1实验目的学习查表程序的设计方法,熟悉 51 的指令系统。

2.2实验设备pc 机一台,td-nmc+教学实验系统 2.3实验内容1.通过查表的方法将 16 进制数转换为 ascii 码;2.通过查表的方法实现y=x2,其中x为0—9的十进制数,以bcd码表示,结果仍以bcd 码形式输出。

52.4实验步骤1.采用查表的方法将16 进制数转换为 ascii 码。

(1)编写实验程序,编译、链接无误后联机调试;(2)将待转换的数存放在 r7 中,如令 r7 中的值为 0x86;(3)在语句行 sjmp main 设置断点,运行程序;(4)程序停止后查看寄存器 r6、r5 中的值,r6 中为高 4 位转换结果 0x38,r5 中为低 4位转换结果 0x36;(5)反复修改 r7 的值,运行程序,验证程序功能。

2.通过查表实现y=x2,x 为 0—9 的十进制数,存放与 r7 中,以 bcd 码的形式保存,结果 y 以 bcd 码的形式存放于寄存器 r6 中。

(1)编写实验程序,经编译、链接无误后,进入调试状态;(2)改变 r7 的值,如 0x07;(3)在语句行 sjmp main 处设置断点,运行程序;(4)程序停止后,查看寄存器 r6 中的值,应为 0x49;(5)反复修改 r7 中的值,运行程序,验证程序功能。

2.5源程序及实验结果1. org 0000hljmp main org 0100hmain: mov dptr, #asctabmov a, r7 anl a, #0fh movc a, @a+dptr mov r5, a mov a, r7 anl a, #0f0h movc a, @a+dptr mov r6, a sjmp main6asctab: db 30h, 31h, 32h, 33h, 34h,5h, 36h, 37h, 38h, 39hdb 41h, 42h, 43h, 44h, 45h, 46hend当令(r7)=86h时,高四位转换结果(r6)=38h,低四位转换结果(r5)=36h,当令(r7)=37h时,结果如下图:当令(r7)=09h时,高四位转换结果(r6)=30h,低四位转换结果(r5)=39h,结果如下图:2. org 0000hljmp mainmain: org 0100h mov dptr, #sqrmov a, r7movc a, @a+dptrmov r6, asjmp main sqr: db 00h, 01h, 04h, 09h, 16hdb 25h, 36h, 49h, 64h, 81hend当令(r7)=07h时, (r6)=49h。

结果如下图:实验三数据排序实验3.1 实验目的熟悉51的指令系统,掌握数据排序程序的设计方法。

3.2 实验设备pc机一台,td-nmc+教学实验系统3.3 实验内容在单片机片内ram的30h—39h写入10个数,编写实验程序,将这10个数按照由小到大的顺序排列,仍写入ram的30h—39h单元中。

3.4 实验步骤(1)编写实验程序,编译、链接无误后联机调试;(2)为30h—39h赋初值,如:在命令行中键入 e char d:30h=9,11h,5,31h,20h, 16h,1,1ah,3fh,8后回车,可将这10个数写入30h—39h中;(3)将光标移到语句行sjmp $处,点击命令,将程序运行到该行;(4)查看存储器窗口中30h—39h中的内容,验证程序功能;(5)重新为30h—39h单元赋值,反复运行实验程序,验证程序的正确性3.5 源程序org 0000hljmp mainorg 0100hmain: mov r0, #30hmov r7, #0ahlp1: mov a, r7mov r6, amov a, r0mov r1, ainc r1lp2: mov a, @r0clr csubb a, @r1jc lp3mov a, @r03.6 实验结果实验四数字量输入输出实验4.1 实验目的了解p1口作为输入输出方式使用时,cpu对p1口的操作方式。

4.2 实验设备pc机一台,td-nmc+教学实验系统。

4.3 实验内容编写实验程序,将p1口的低4位定义为输出,高4位定义为输入,数字量从p1口的高4位输入,从p1口的低4位输出控制发光二极管的亮灭。

4.4 实验步骤1.按图3-1-1所示,连接实验电路图,图中“圆圈”表示需要通过排线连接;2.编写实验程序,编译链接无误后进入调试状态;3.运行实验程序,观察实验现象,验证程序正确性;4.按复位按键,结束程序运行,退出调试状态;5.自行设计实验,验证单片机其它io口的使用。

4.5 源程序汇编:org 0000hljmp start org 0100h start: orl p1,#0f0h mov a,p1 swap amov p1,a sjmp start endc程序:#include sst89x5x4.h void main(void) {}unsigned char data i; while(1) { }p1 = p1 | 0xf0; i = p1;p1 = (i&gt;&gt;4)&amp;0x0f;实验五中断系统实验5.1 实验目的了解mcs-51单片机的中断原理,掌握中断程序的设计方法。

5.2 实验设备pc机一台,td-nmc+教学实验系统。

5.3 实验内容1.单片机集成的定时器可以产生定时中断,利用定时器0和定时器1,编写实验程序在p1.0及p1.1引脚上输出方波信号。

122.手动扩展外部中断int0、int1,当int0产生中断时,使led 8亮8灭闪烁4次;当int1产生中断时,使led由右向左流水显示,一次亮两个,循环4次。

5.4 实验步骤 1.定时器中断实验(1)编写实验程序,经编译、链接无误后,启动调试功能;(2)运行实验程序,使用示波器观察p1.0及p1.1引脚上的波形;(3)使用示波器测量波形周期,改变计数值,重新运行程序,反复验证程序功能;(4)按复位键退出调试状态。

2.外部中断实验(1)按下图连接实验电路;(2)编写实验程序,编译、链接无误后启动调试;(3)运行实验程序,先按kk1-,观察实验现象,然后按kk2-,观察实验现象;(4)验证程序功能,实验结束按复位按键退出调试。

外中断实验接线图5.5 源程序 1.定时器中断实验汇编:org 0000hljmp start org 000bh ljmp timer0 org 001bh ljmp timer1 org 0100hmov tmod, #11h mov tcon, #50h mov ie, #8ah sjmp $timer0:cpl p1.0mov th0, #0f8h mov tl0, #00h retistart: mov p1, #0ffhmov th0, #0f8h mov tl0, #00h mov th1, #0f8h mov tl1, #00htimer1:cpl p1.1mov th1, #0f8h mov tl1, #00h reti endc程序:#include sst89x5x4.h sbit wave1 = p1^0; sbit wave2 = p1^1;void int_timer0() interrupt 1 { wave1 = ~wave1; }void int_timer1() interrupt 3 {}th1 = 0xf8; tl1 = 0x00;void main() {th0 = 0xf8; tl0 = 0x00; th1 = 0xf8; tl1 = 0x00; tmod = 0x11; tcon = 0x50; th0 = 0xf8; tl0 = 0x00;wave2 = ~wave2;14ie = 0x8a; while(1);}2.外中断实验汇编:org 0000hljmp start org 0003h ljmp eint0 org 0013h ljmp eint1acall delay djnz r7, elp0 retieint1: mov a, #03hilp1:mov r7, #10h mov p1, a rl a rl a acall delay djnz r7, ilp1 retistart: mov p1, #00hsetb it0 setb ex0 setb it1 setb ex1 setb ea sjmp $delay: mov r6, #0ffh dlp1: dlp2:mov r5, #0ffh djnz r5, dlp2 djnz r6, dlp1 ret endeint0: mov r7, #04h elp0:mov p1, #0ffh acall delay mov p1, #00hc程序#include sst89x5x4.h #include intrins.h void delay(void)15{ }unsigned int x;for(x=0; x&lt;0xffff; x++);void int0_isr() interrupt 0 { }void int2_isr() interrupt 2 {unsigned char i=0x03, j; for(j=0; j&lt;16; j++) {p1 = i;unsigned char j; for(j=0; j&lt;4; j++) { }p1 = 0xff; delay(); p1 = 0x00; delay();}}p1 = 0x00;void main() {p1 = 0x00;it0 = 1; ex0 = 1; it1 = 1; ex1 = 1; ea = 1; while(1);}i = _crol_(i, 2); delay();5.6思考题设定int1为中断高优先级,在程序初始化中加一句:setb px1,则当按kk1-时,即int0产生中断时,led灯亮灭闪烁,在期间即使按动kk2_时,led就会由右向左流水显示,一次亮两个,循环4次,结束后会按照按动kk2-之前没有完成的次数继续直到4次。

相关文档
最新文档