收藏 分销(赏)

实验6、定时器实验.doc

上传人:xrp****65 文档编号:7422745 上传时间:2025-01-03 格式:DOC 页数:3 大小:44.50KB 下载积分:10 金币
下载 相关 举报
实验6、定时器实验.doc_第1页
第1页 / 共3页
实验6、定时器实验.doc_第2页
第2页 / 共3页


点击查看更多>>
资源描述
实验6、定时器实验 【实验目的】 1、 学习LPC系列处理器定时器的功能原理; 2、 掌握定时器的功能设置及工作模式设置; 3、 掌握中断原理。 4、 了解中断服务函数的编写方法。 【实验要求】 1、 了解LPC系列处理器定时器的的功能原理。 2、 根据硬件电路,在KEIL中编写程序; 3、 下载到试验台上成功运行 4、 附加要求:请实现2秒定时,并且控制4个LED显示不同效果 【实验原理】 1、 IR 中断定时器 TCR 定时器控制定时器 TC 定时器计数器 PR 预分频寄存器 MCR 匹配控制寄存器 PC 预分频计数器 要实现定时器的功能实际上就是对定时器寄存器的控制,所以只要懂得以上寄存器的原理就可以实现定时器功能了,实际编程时只需对IR,TCR,PR, MCR操作即可 2、实验电路 实验电路如下图,使用定时器0和定时器1的定时功能。控制LED0和LED1改变状态。 #include<lpc23xx.h> #define LEDCON0 (1<<14) /*P1.14引脚控制LED D4,高电平点亮*/ #define LEDCON1 (1<<15) /*P1.15引脚控制LED D3,高电平点亮*/ #define Fpclk 12000000 /*外设时钟*/ typedef unsigned long DWORD; typedef unsigned char uint8; void Timer0Handler (void) __irq //中断处理函数 { static uint8 m; static uint8 n; if(n==0) n=1; else n=0; if(n==1)IOCLR1=LEDCON1; //控制LED熄灭 else IOSET1=LEDCON1; //控制LED点亮 if(m==0) m=1; else m=0; if(m==1)IOSET1=LEDCON0; //控制LED点亮 else IOCLR1=LEDCON0; //控制LED熄灭 T0IR = 1; /* clear interrupt flag */ VICVectAddr = 0; /* Acknowledge Interrupt */ } void init_timer0 ( DWORD TimerInterval ) //定时器0初始化 { T0MR0 = TimerInterval - 1; T0MCR = 0X03; //产生中断,并且复位TC T0PR=0;//不分频 T0TC=0; } void init_VIC(void)//中断初始化 { /**/ VICIntSelect = 0; //中断选择 VICVectPriority4 =4; //中断优先级, VICVectAddr4=(DWORD)Timer0Handler; //中断地址赋值中断处理函数 VICIntEnable = 1 << 4; //使能中断,定时器0为4号中断源} } int main (void) { IODIR1=(LEDCON0|LEDCON1); //设置LED控制口为输出 init_timer0((Fpclk)); //定时器初始化,1s中断 init_VIC(); T0TCR = 1; //开启定时器0 while(1); }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 应用文书 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服