PIC单片机实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一循环点亮LED灯
一、实验内容:
将RE0-RE5配置为输出,连接6个LED灯;编写程序,调试并运行,下载到实验板上,实现循环点亮。
二、实验目的:
学习PIC单片机I/O端口功能及特点,了解I/O端口引脚及连线,控制寄存器。在开发板上实现循环点亮LED灯。
三、实验要求
1.了解掌握PIC单片机的结构和功能。
2.应熟练掌握MPLAB开发环境的使用方法。
3.熟练掌握PIC单片机的程序编写方法。
4.掌握MPLAB IDE硬件调试的技巧。
四、实验准备:
1、I/O引脚及连线:
I/O端口特点:
1、所有I/O 输入端口都是施密特触发器输入,以便增强抗干扰性。
2、外设复用:所有的器件引脚(除VDD、VSS、MCLR 和OSC1/CLKI之外),均为外设与I/O
端口所共用。
3、如果外设使能,并且外设正在使用相关引脚时,该引脚将不再作为通用I/O 引脚使用。
4、优先级:I/O 与多个外设复用时I/O 引脚的名称定义了与该引脚相关的各个功能的优先
级,如:I/O 引脚与两个外设复用(“外设A”和“外设B”)外设A 对引脚的控制具有最高优先权,若外设A 和外设B 同时使能,外设A将控制I/O 引脚
5、电平变化通知引脚:电平变化通知引脚(CN)内接输入电平变化通知模块,使得dsPIC30F
器件能够向处理器发出中断请求,以响应所选输入引脚上的状态变化。
I/O端口控制寄存器:
所有的端口引脚,都有三个与端口引脚的操作直接相关的寄存器。
①TRISx:数据方向寄存器。决定各个引脚是输入引脚还是输出引脚。
–若某个I/O 引脚的TRIS 位为“1”,则该引脚是输入引脚。
–某个I/O 引脚的TRIS 位为“0”,则该引脚被配置为输出引脚。
–复位以后,所有端口引脚被定义为输入。
②PORTx:I/O端口寄存器。访问的是I/O引脚上的数据。读的是端口引脚值;写端口
引脚,写的是端口数据锁存器(LATx )。
③LATx:I/O端口锁存寄存器。读的是数据锁存器里锁存的值;写锁存值,写的是端
口数据锁存器(LATx )
五、实验过程及结果:
实验源程序:
#include "p30f4011.h”
int main(void)
{
int led=0x01;
unsigned long int i=0;
TRISE =0x100;
PORTE=led;
while(1)
{
PORTE =led;
for (i=0;i<65000;i++){}; //延时
led = led<<1; //当第6个LED灯亮后,重新从第1个LED灯点亮
if (led == 0x40)
led = 0x01;
}
return 0;
}
先编写程序,检验正确后,下载到实验板上并运行,实验板上6个LED灯开始循环点亮,通过修改程序,还可以改变延迟时间,即可控制LED灯点亮时间。
实验二实现外部中断INT0
一、实验内容:
学习PIC单片机的中断内容及其特性,了解中断请求、中断响应及中断服务原理。在实验板上实现外部中断INT0.
二、实验目的:
掌握PIC单片机的中断内容,学会编程实现外部中断。
三、实验准备:
中断概述:
1、中断的定义:
中断是指如下过程:CPU与外设同时工作,CPU执行主程序,外设做准备工作,当外设准备好时向CPU发中断请求信号,若条件满足,则CPU终止主程序的执行,转去执行中断服务程序,在中断服务程序中CPU与外设交换信息,待中断服务程序执行完后,CPU再返回刚才终止的主程序继续执行。
2、中断源:
⑴中断源的定义:中断源是指引起中断请求的来源。
⑵中断源的分类:①软中断和②硬中断
3、中断处理的全过程
中断处理的全过程分成3个阶段:中断请求、中断响应和中断服务。
4、多重中断与中断优先级
⑴当系统中有多个设备提出中断请求时,多个外设的中请信号要通过门电路送到CPU的中请输入端,使CPU能收到多个外设提出的中请。
⑵CPU在收到多个外设的请求后,按优先级原则处理中断。
中断请求:
1.CPU都有中请输入线。
中请输入线有2类:非屏蔽中请输入线和可屏蔽中请输入线;
2.CPU的开、关中断。
CPU内有1个中断请求触发器IF,当IF=1时,称CPU开中断,此时CPU可以处理收到的可屏蔽中请;当IF=0时,称CPU关中断,虽然CPU收到了可屏蔽中请,但不处理(响应)它。
3.CPU内有中断请求检测电路。
CPU每执行一条指令,其内的中断请求检测电路都要检测中断请求输入端的状态
中断服务:
中断服务子程序是由用户根据自己的需要编制的,编制时要注意如下问题:
1.保护现场:
目的是为了保护那些与主程序中有冲突的寄存器,如果中断服务子程序中所使用的寄存器与主程序中所使用的寄存器等没有冲突的话,这一步骤可以省略。
2.开/关中断:对相应中断位置1或置0实现。目的是为了能控制中断。
3.中断服务:与中断源实现信息交换。
4.恢复现场:是与保护现场对应的,但要注意数据恢复的次序,以免混乱。
5.返回:返回主程序
四、实验过程及结果:
实验源程序:
#include "p30f4011.h”
unsigned int Led =0x01;
void Initializeint0()
{
IFS0bits.INT0IF = 0; //清除INT0的中断标志
IPC0bits.INT0IP = 7; //中断优先级为7
}
void __attribute__((__interrupt__)) _INT0Interrupt(void)
{