西 安 邮 电 大 学
(计算机学院)
课内实验报告
实验名称: 定时器基本功能实验
专业名称: 软件
工程
路基工程安全技术交底工程项目施工成本控制工程量增项单年度零星工程技术标正投影法基本原理
班 级:
学生姓名:
学号(8位):
指导教师: 李宥谋
实验日期: 2013年12月17日
1. 实验目的及实验环境
目的: 1、充分掌握ADS实验中定时器工具的功能。
2、能够熟练掌握定时器的分类,作用,使能方式。
3、能够利用定时器完成蜂鸣器的间歇。
4、掌握定时器输出方式与管脚设置原理。
环境: CPU:windows
操作系统:windows
软件平台:ADS1.2IDE H-JTAG Server
二. 实验
内容
财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容
1、定时器0中断服务程序,取反LED9控制口
2、使用定时器实现1秒钟定时,控制LED9闪烁
三.实验结果
1、调试程序代码无误
2、定时器实验的寄存器存储情况和代码的单步调试。
3、通过定时器的定时,灯闪烁
四.总结
1.实验过程中遇到的问题及解决办法;
问题1:
定时器本身没有中断功能,但是如何使用定时器进行中断?
解决:
通过MR0与TC的匹配比较,若相等时,则使得TC发生复位并且产生中断。
问题2:
如何使得定时器0的中断通道具有最高的优先级?
解决:
因为Cntl0的通道只有0x20和0x04,所以通过“或”的关系, VICVectCntl0 = 0x20 | 0x04;使得设置定时器0中断通道分配最高优先级
2.对
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
过程的心得体会。
通过这次的程序设计,自己充分了解仿真系统的工作方式,了解定时器工作流程,了解定时器这个程序代码的每句话的功能,同时也能够熟练地使用ADX进行代码的调试,希望以后能有更对的机会进行程序设计,把平时的学到的知识应用于实际中。
五.附录:(代码电子版)
#include "config.h"
#define BEEP 1 << 7 /* P0.7控制BEEP,低电平蜂鸣 */
/****************************************************************
** 函数名称 :IRQ_Timer0()
** 函数功能 :定时器0中断服务程序,取反LED9控制口。
** 入口参数 :无
** 出口参数 :无
******************************************************************/
void __irq IRQ_Timer0 (void)
{
if ((IO0SET & BEEP) == 0)
IO0SET = BEEP; /* 关闭BEEP */
else
IO0CLR = BEEP;
T0IR = 0x01; /* 清除中断标志 */
VICVectAddr = 0x00; /*
通知
关于发布提成方案的通知关于xx通知关于成立公司筹建组的通知关于红头文件的使用公开通知关于计发全勤奖的通知
VIC中断处理结束 */
}
/****************************************************************
** 函数名称 :main()
** 函数功能 :使用定时器实现1秒钟定时,控制LED9闪烁。中断方式。
** 调试说明 :需要将跳线JP11连接BEEP。
******************************************************************/
int main (void)
{
PINSEL1 = 0x00000000; /* 设置管脚连接GPIO */
IO0DIR = BEEP; /* 设置BEEP控制口输出 */
IRQEnable(); /* IRQ中断使能 */
/* 定时器0初始化 */
T0TC = 0; /* 定时器设置为0 */
T0PR = 0; /* 时钟不分频 */
T0MCR = 0x03; /* 设置T0MR0匹配后复位T0TC,并产生中断标志 */
T0MR0 = Fpclk; /* 1秒钟定时;系统中已定义Fpclk = 11059200 */
T0TCR = 0x01; /* 启动定时器 */
/* 设置定时器0中断IRQ */
VICIntSelect = 0x00; /* 所有中断通道设置为IRQ中断 */
VICVectCntl0 = 0x20 | 0x04; /* 设置定时器0中断通道分配最高优先级 */
VICVectAddr0 = (uint32)IRQ_Timer0; /* 设置中断服务程序地址 */
VICIntEnable = 1 << 0x04; /* 使能定时器0中断 */
while (1);
return 0;
}