实验三定时器中断_new教程分析.doc

本科实验报告 实验名称: 实验三 定时器中断实验 课程名称: 定时器中断实验 实验时间: 2015.11.25 任课教师: 梁蕻 实验地点: 4-338 实验教师: 梁蕻 实验类型: □ 原理验证 √ 综合设计 □ 自主创新 学生姓名: 学号/班级: 组 号: 学 院: 信息与电子学院 同组搭档: 专 业: 信息工程 成 绩: 实验三 定时器中断实验 一、实验目的: 1. 学习使用PIC定时器模块和中断功能 2. 学习对PIC18F452的编程 二、实验原理: TIMER2 模块工作原理:Timer2 模块定时器有以下特性: ? 8 位定时器(TMR2 寄存器) ? 8 位周期寄存器(PR2) ? 可读写(TMR2 和PR2 寄存器均可) ? 可软件编程的预分频器(1:1、1:4 和1:16) ? 可软件编程的后分频器(1:1 到1:16) ? TMR2 与PR2 匹配时中断 Timer2 模块利用8 位定时器(TMR2 寄存器)对单片机指令周期(16MHz,4us)从0开始进行计数,当计数值与预先存在PR2 寄存器中的数值相等时,TMR2 寄存器自动归0,同时产生一个中断。 若预分频器设为1:16,后分频器设为1:10,PR2设为199,则Timer2 模块的定时时间为 4/16×16×10×200= 8 ms 三、 四.实验步骤: 根据实验要求,修改程序设置RCONbits.IPEN=1; 2.Timer2设为高优先级,对应的中断向量地址地址为0x08H IPR1bits.TMR2IP=1; 3.允许高优先级中断 INTCONbits. GIEH=1; 4.预分频器设为1:16,后分频器设为1:10,PR2设为199 修改后的实验代码: //*************************************************** //* //* Exercise 4 //* MPLAB C18 WOrkshop Exercise for High-priority * //* Setting with C code. //* //*************************************************** #include p18f452.h #include timers.h #include delays.h #pragma config WDT = OFF #pragma config OSC = HS #pragma config LVP = OFF void isr_high(void); volatile unsigned char Long_Count ; volatile unsigned char Direct_LED ; volatile unsigned char Dir_Count ; void main(void) { TRISD=0x00; // Set output port for LED driver PORTD=0 // Set b0 of LED is On //******************************************** // Exercise // Enable Timer2 interrupt with high Priority // //******************************************** //(Refer 18fxx2_cn(39564b) of 84) // Enable Interrupt Priority bit // Set Timer2 for High Priority // Enable High Priority Interrupt /***********************************/ /* Interrupt Time */ /*(4/16Mhz) [16*10*(199+1)] = 8mS */ /***********************************/ //(Refer MPLAB C18函数库 of Page 50)

文档评论(0)

1亿VIP精品文档

相关文档