arm实验六、定时器中断实验.
arm中断实验的实验报告
arm中断实验的实验报告
《ARM中断实验的实验报告》
实验目的:
本实验旨在通过ARM中断实验,深入理解ARM处理器的中断机制,并掌握中
断处理的相关知识和技能。
实验内容:
1. 确定实验环境:选择一款ARM处理器,并搭建相应的开发环境。
2. 编写中断处理程序:编写一个简单的中断处理程序,包括中断触发条件、中
断服务程序和中断处理函数。
3. 测试中断程序:在实验环境中模拟中断触发条件,验证中断处理程序的正确
性和可靠性。
4. 分析中断处理过程:通过调试工具和相关技术手段,深入分析中断处理过程,包括中断响应时间、中断服务时间和中断处理流程。
实验结果:
经过实验,我们成功搭建了ARM中断实验环境,并编写了一个简单的中断处理程序。
在测试过程中,中断程序能够正确响应和处理中断请求,表现出良好的
稳定性和可靠性。
通过分析中断处理过程,我们深入理解了ARM处理器的中断机制,包括中断触发、中断处理和中断返回等关键环节。
实验结论:
通过本次实验,我们进一步加深了对ARM处理器中断机制的理解,掌握了中断处理的相关知识和技能。
同时,我们也意识到中断处理在实际应用中的重要性
和必要性,为今后的ARM开发和应用奠定了坚实的基础。
总结:
ARM中断实验是一次富有成效的实践活动,通过实验我们不仅学习到了理论知识,还掌握了实际操作技能。
相信在今后的学习和工作中,我们将能够更加熟
练地应用ARM中断处理技术,为ARM相关产品的开发和应用做出更大的贡献。
ARM—中断和定时器的初始化配置
}
比如:rTCNTB0 = 62500/2; //TCNTB0[15:0]=计数值
rTCMPB0 = 0;
3、rTCON的设置
TCON寄存器控制着定时器的启动(1表示启动)、是否自动装载初值(TCNTBx和TCMPBx,1表示自动装载)、PWM死区是否启动(,1表示启用死区)、TOUTx反转启动(1表示允许反转)。
(2)、对于外部中断,还要给EINTPEND寄存器相关位清零,如
rEINTPEND |= 1<< 11;这两步的目的是为了防止反复进入中断,有多个中断源时,要判断是哪个中断源,给相应的位清零。
(3)、完成中断特点的功能。如按键中断服务程序
static void __irq Key_ISR(void)
设置TCON启动定时器x(x表示0-4,2440有5个16位的定时器,定时器0-3有PWM功能,有输出引脚,定时器4没有输出引脚),这时TCNTBx→TCNTx,TCMPBx→TCMPx,在定时器的工作频率下,TCNTx开始减1,其值可以读取TCNTOx获取。当TCNTx=TCMPx时,定时器x的输出管脚TOUTx反转,TCNTx继续减1计数,当TCNTx=0时,其输出管脚TOUTx再次反转,并触发定时器x的中断。所以作为中断用的计时值由rTCNTBx确定,用作PWM功能时,PWM的频率由rTCNTBx确定,占空比由rTCMPBx确定,占空比等于rTCMPBx / rTCNTBx。TOUTx(x=0~3)外接蜂鸣器控制蜂鸣器的频率或者外接LED灯控制LED灯的亮度,占空比越大,蜂鸣器频率越大,LED灯越亮。如果不作为PWM用途时,一般将rTCMPB0设置为0。
另外也要使用ClearPending(BIT_EINT1|BIT_EINT2|BIT_EINT8_23)清中断挂起寄存器,注意,刚才EINTPEND是清次中断,EXTINT 8-23都递属于IRQ的中断号5,所以这里清的是主IRQ中断。
ARM的中断实验
嵌入式实验报告课程名称嵌入式成绩实验项目ARM的中断实验指导教师曲培树学生姓名张健秀学号 201000803026 班级专业 10电子本实验地点综合楼226 实验日期 2012年 12 月 7日一、实验目的1.掌握ARM9的中断原理,能够对S3C2410的中断资源及其相关中断寄存器的进行合理配置2. 掌握对S3C2410的中断的编程的方法二、实验内容1. 学习响应外部中断请求的配置方法,并通过响应定时器中断,执行中断服务子程序使CPU板上的LED指示灯LED1、LED2闪烁。
三、实验设备1. EL-ARM-830教学实验箱,PentiumII以上的PC机,仿真调试电缆。
2. PC操作系统WIN98或WIN2000或WINXP,ADS1.2集成开发环境,仿真调试驱动程序四、ARM的中断原理在ARM中,有两类中断,一类是IRQ,一类是FIQ,IRQ是普通中断,FIQ是快速中断,在进行大批量的复制、数据转移等工作时,常使用此类中断。
FIQ的优先级高于IRQ。
同时,它们都属于ARM的异常模式,当一旦有中断发生,不管是外部中断,还是内部中断,正在执行的程序都会停下,PC指针进而跳入异常向量的地址处,若是IRQ中断,则PC指针跳到0x18处,若是FIQ中断,则跳到0x1C处。
异常向量地址处,一般存有中断服务子程序的地址,所以,接下来PC指针跳入中断服务子程序中。
当完成中断服务子程序后,PC指针会返回到被打断的程序的下一条地址处,继续执行程序。
这就是ARM中断操作的基本原理。
但是,通常由于生产ARM处理器的各厂家都集成了很多中断请求源,比如,串口中断、AD中断、外部中断、定时器中断、DMA中断等等,所以,很多中断可能同时请求中断,因此,为区分它们,更准确的完成任务,这些中断都有相应的优先级别,以及当发生中断时,它们都有相应的中断标志位,通过在发生中断是判断中断优先级,和访问中断标志位的状态来识别到底哪一个中断发生了。
中断原理实验报告总结(3篇)
第1篇一、实验目的本次实验旨在通过实际操作,加深对中断原理的理解,掌握单片机中断系统的工作机制,学会外部中断和定时/计数器的使用,以及串口数据发送和接收的方法。
二、实验内容1. 外部中断原理及使用(1)实验原理:通过实验,了解外部中断的工作原理,掌握外部中断的使用方法,包括中断源的设置、中断服务程序的编写和中断请求的处理。
(2)实验步骤:设置外部中断源,编写中断服务程序,实现按键控制LED灯亮灭。
2. 定时/计数器的使用(1)实验原理:通过实验,了解定时/计数器的工作原理,掌握定时/计数器的使用方法,包括定时/计数器的初始化、定时/计数器的启动和停止、定时/计数器的中断处理。
(2)实验步骤:设置定时/计数器,实现LED灯的闪烁。
3. 串口数据发送和接收(1)实验原理:通过实验,了解串口通信的工作原理,掌握串口数据发送和接收的方法,包括串口初始化、发送和接收数据的流程。
(2)实验步骤:实现单片机与计算机之间的串口通信,发送和接收数据。
三、实验结果及分析1. 外部中断实验结果及分析实验中,通过按键控制LED灯亮灭,实现了外部中断的基本功能。
实验结果表明,当按键被按下时,外部中断请求信号被触发,中断服务程序被执行,LED灯状态发生改变。
2. 定时/计数器实验结果及分析实验中,通过定时/计数器实现LED灯的闪烁,实现了定时功能。
实验结果表明,定时/计数器能够按照设定的周期产生中断,中断服务程序能够按照要求执行。
3. 串口数据发送和接收实验结果及分析实验中,通过串口通信实现单片机与计算机之间的数据传输。
实验结果表明,单片机能够按照设定的波特率发送和接收数据,计算机端能够正确接收并显示数据。
四、实验总结1. 通过本次实验,加深了对中断原理的理解,掌握了单片机中断系统的工作机制。
2. 掌握了外部中断、定时/计数器和串口通信的使用方法,为后续学习和实践打下了基础。
3. 在实验过程中,培养了动手实践能力,提高了解决问题的能力。
嵌入式系统 实验报告
使能 IRQ 中断。
4 装载并使能外中断;
5 选用 DebugInExram 生成目标,然后编译连接工程。
6 选择【Project】->【Debug】,启动 AXD 进行 JTAG 仿真调试。
7 全速运行程序,LED 闪烁;
8 每一次按键 Key,蜂鸣器就会转换静音或鸣响状态。
四.测试数据及运行结果
1
五.总结
1.实验过程中遇到的问题及解决办法;
由于本次实验较简单,且我们之前学习的微机原理课程也进行了流水灯的设
计实验,所以对于本次实验,我完成地很顺利,在实验中没有遇到问题。
2.对设计及调试过程的心得体会。
本次实验是本学期该课程我们进行的第一次实验,总的来说,实验不是很难,
设计过程也相对简单,其主要目的是让我们熟悉一下实验环境,并且能在实验环
6
五.总结 1.实验过程中遇到的问题及解决办法;
实验第一次运行时,蜂鸣器一直处于鸣响状态,及时按了按键,蜂鸣器还是 一直鸣叫,不产生外中断。后来仔细检查了程序,发现原来是忘记使能 EINT0 中 断了,加上 VICIntEnable = 1<<0x0e 代码,程序就能正常运行了。 2. 对设计及调试过程的心得体会。
境下进行简单的实验操作,为之后的实验打下坚实的基础。
六.附录:源代码(电子版)
#include "config.h"
const uint32 LEDS8 = 0xFF << 18;//P1[25:18]控制 LED1~LED8,低电平点亮
const uint32 KEY = 1 << 16;
//P0.16 连接 KEY1
三.方案设计
① 启动 ADS1.2IDE 集成开发环境,选择 ARM Executable Image for lpc2131
ARM实验报告定时器
for(i=time;i>0;i--)for(j=2000000;j>0;j--);}河南工业大学嵌入式系统实验报告void led_init(){实验步骤:班级姓名学号专业rGPKCON0|=(0x1111<<16);数据记录及结果处理:完成日期成绩评定}同组者姓名void led_run()问题讨论:实验题目:{LrGPKDAT&=(~0xf0);delay(10);rGPKDAT|=0xf0;实验目的:delay(10);}( 1)熟悉 ARM芯片的 GPIOvoid Led_Display(int data)( 2)掌握 GPIO的常用寄存器{rGPKDAT = (rGPKDAT & ~(0xf<<4)) | ((data & 0xf)<<4);( 3)初步了解 GPIO的简单编程}实验原理:int _main(){GPIO 是 ARM 的通用输入输出端口,同时他也控制着外部中断led_init();while(1)GPIO 有多种工作模式,如 alive 和 off,alive 部分的电源有睡{led_run();眠模式提供, off部分与他不同,}S3C6410 有 127个外部中断, 187 个多功能输入输出端口。
}1实验环境:实验步骤:1 、 GPIO 寄存器简介以端口 A 为例:GPADAT 是数据寄存器,GPADAT 【 0~7 】对应相应的管脚。
GPAPUD 为上拉寄存器,控制相应引脚是使用上拉电阻还是使用下拉端口 A 控制寄存器包括五个控制寄存器,分别是GPACON 、GPADAT 、 GPAPUD、GPACONSLP、GPAPUDSLP。
2 GPACON控制端口 A 的 8 个 IO 口的工作状态,GPACON 总共 32 位,每四位控制一个IO 口,例如: GPACON 【 0~3 】控制 GPA0.电阻或者禁止上拉。
arm实验六、定时器中断实验.
实验六:定时器中断实验一、实验目的熟悉 LPC2000 系列 ARM7 微控制器的定时器 0/1 的基本设置及应用。
二、实验设备硬件:PC 机一台、 EasyARM2013 开发板一套软件:Windows98/XP/2000 系统, ADS 1.2 集成开发环境三、实验内容使用定时器 0 实现 1 秒定时,控制 LED 灯闪烁。
采用软件查询方式等待定时时间到达。
四、实验预习要求仔细阅读教材关于定时器 0 和定时器 1 的说明。
五、实验步骤1. 启动 ADS 1.2,使用 ARM Executable Image for lpc2103 工程模板建立一个工程 TIMEBEEP_C。
2. 在工程的 user 中的 main 文件中编写实验程序。
3. 选用 DebugInRAM 生成目标,然后编译连接工程。
4. 将 EasyARM2103 开发板上的 JP4 跳线 P0.17短接。
5. 选择【 Project 】 ->【 Debug 】 ,启动 AXD 进行 JTAG 仿真调试。
6. 可以全速运行程序, LED 亮一秒,熄一秒,然后再亮一秒……依次循环。
六、实验参考程序定时器实验的参考程序见程序清单 3.9。
程序清单 4.11 定时器 0 定时中断#include "config.h"#define LED (1 << 17/******************************************************************* *********** ** 函数名称:Timer0_ISR** 函数功能:定时器 0 中断主程序** 输入参数:无** 输出参数:无******************************************************************** **********/ void __irq Timer0ISR (void{if ((IO0PIN & LED == 0 {IO0SET = LED; /* 点亮发光二极管 */ }else IO0CLR = LED; /* 熄灭发光二极管 */ T0IR = 0x01; /* 清除中断标志 */ VICVectAddr = 0x00; /* 中断向量结束 */ }/******************************************************************* *********** ** 函数名称:Timer0Init** 函数功能:定时器 0 初始化** 输入参数:无** 输出参数:无******************************************************************** **********/ void Timer0Init(void{T0TCR = 0x02; /* 定时器 0 复位 */ T0PR = 0; /* 不设时钟分频 */ T0MCR =0x03; /* 匹配后复位 TC ,并产生中断 */ T0MR0 = Fpclk / 2; /* 设置 0.5 秒匹配值 */ T0IR = 0x01; /* 清除中断标志 */ T0TCR = 0x01; /* 启动定时器 0 */ }/******************************************************************* *********** ** 函数名称:main** 函数功能:定时器 0 匹配产生中断** 输入函数:无** 输出参数:无******************************************************************** **********/ int main (void{PINSEL1 = PINSEL1 & 0xFFFFFFF3; /* 选择 P0.17 的 GPIO 功能 */ IO0DIR = LED; /* 设置 P0.17 为输出 */ IO0SET = LED; /* 设置输出高电平 */ Timer0Init(; /* 定时器 0 初始化 */ IRQEnable(; /* IRQ 中断使能 */ /* 设置向量中断控制器 */VICIntSelect = VICIntSelect & (~(1 << 4; /* 定时器 0 分配为 IRQ 中断 */ VICVectCntl0 = 0x20 | 4; /* 定时器 0 分配为向量 IRQ 通道 0 */ VICVectAddr0 =(uint32 Timer0ISR; /* 分配中断服务程序地址 */ VICIntEnable = 1 << 4; /* 定时器 0 中断使能 */ while(1;return 0;}七、思考1、若需要 LED 会响 2 秒,停 2 秒,在实验参考程序中应修改什么地方?2、若实验参考程序中设置 T0PR=0,请使用 Fpclk 宏来设置 T0MR0 寄存器,实现 1 秒或 0.5 秒定时。
实验报告四中断系统实验
实验报告四中断系统实验实验报告四:中断系统实验一、实验目的本次中断系统实验的主要目的是深入理解计算机中断系统的工作原理和机制,掌握中断的处理过程,以及学会如何在实际编程中有效地运用中断来提高系统的性能和响应能力。
二、实验原理中断是指计算机在执行程序的过程中,当出现某种随机事件或异常情况时,暂停现行程序的执行,转而执行相应的中断处理程序,处理完后再返回原程序继续执行的过程。
中断系统主要由中断源、中断控制器和中断处理程序组成。
中断源可以是外部设备(如键盘、鼠标、打印机等)发送的信号,也可以是内部事件(如定时器溢出、算术运算错误等)产生的条件。
中断控制器负责对多个中断源进行优先级管理和分配,确定哪个中断请求能够被响应。
中断处理程序则是用于处理具体中断事件的一段代码。
在中断处理过程中,计算机需要保存当前程序的上下文(包括程序计数器、寄存器等),以便在中断处理完成后能够正确地恢复原程序的执行。
同时,中断处理程序需要尽快完成处理任务,以减少对系统性能的影响。
三、实验设备与环境本次实验使用的设备包括一台计算机、开发板以及相应的编程软件。
开发板上集成了中断控制器和相关的外部设备接口,以便进行中断实验的操作和观察。
编程软件采用了常见的集成开发环境(IDE),如 Keil、IAR 等,用于编写和调试中断处理程序。
四、实验步骤1、硬件连接首先,将开发板与计算机通过数据线连接,并确保连接稳定。
然后,根据实验要求,将外部设备(如按键、传感器等)正确连接到开发板的相应接口上。
2、软件开发(1)在编程软件中创建一个新的项目,并选择适合开发板的芯片型号。
(2)配置中断控制器的相关参数,如中断优先级、触发方式等。
(3)编写中断处理程序,在程序中实现对中断事件的具体处理逻辑。
例如,当按键被按下时,控制 LED 灯的亮灭;当传感器检测到特定值时,进行数据采集和处理。
(4)编写主程序,在主程序中初始化系统,并开启中断功能。
3、编译与下载完成程序编写后,对代码进行编译,确保没有语法错误和逻辑错误。
实验六:外部中断实验
微控制器综合设计与实训实验名称:实验六外部中断实验实验六:外部中断实验1 实训任务(1) 编写外部中断服务函数;(2) 初始化外部中断,配置触发条件,配置中断分组;(3) 控制LED灯亮灭状态或闪烁状态。
1.1 实验说明(1)STM32外部IO口有中断功能,通过中断的功能,达到实验4的效果,即:通过板载的3个按键,控制板载的三个LED的亮灭。
本实验的代码主要分布在固件库的stm32f10x_exti.h和stm32f10x_exti.c文件中。
(2)使用IO口外部中断的一般步骤1)初始化IO口为输入;2)开启AFIO时钟;3)设置IO口与中断线的映射关系;4)初始化线上中断,设置触发条件等;5)配置中断分组(NVIC),并使能中断;6)编写中断服务函数。
通过以上几个步骤的设置,就可以正常使用外部中断。
1.2 实验步骤(1) 实训平台上PA9和PA10已经与TXD、RXD连接,串口硬件配置完成;(2) 将LED端口与对应IO口用导线连接;(3) 用数据线将串口与电脑的USB接口连接;(4) 复制上一个实验工程修改名称并保存为USART实验,并将工程文件名称修改为USART. uvprojx;(5) 编写main()函数,程序编译成功后下载程序到实训平台;(6) 打开串口调试助手XCOM V2.0,改变延时时间观察LED灯的变化。
2 程序设计3 硬件原理图设计4 总结实验结果:实验心得:通过本次实验,我了解了如何利用外部中断实现对按键的扫描。
和定时器中断有点类似,不同的是,外部中断是靠外部硬件改变相应检测引脚的电平变化,进而产生的中断。
而定时器中断则是通过系统时钟,到达指定时间周期即进入中断响应函数一次。
从此可以看出外部中断是被动的中断,而定时器的中断则是主动进行的。
当然,两个中断源相互独立,互不干预,执行顺序取决于所配置的优先级。
一般而言,硬件的响应速度要优于软件的响应速度。
提出的问题:边沿触发和电平触发两种方式中断响应的原理与区别?解释:边沿触发:当从高至低电平或从低至高电平转变时,触发产生;电平保持多久都只产生一次。
实现中断功能_实验报告(3篇)
第1篇一、实验目的1. 理解中断的概念和作用。
2. 掌握单片机中断系统的基本原理和配置方法。
3. 学会编写中断服务程序,实现外部中断和定时器中断的应用。
4. 通过实验加深对中断系统在实际应用中的理解。
二、实验原理中断是计算机系统中一种重要的机制,它允许CPU在执行程序过程中,响应某些外部或内部事件,从而暂停当前程序的执行,转而处理这些事件。
单片机的中断系统主要包括外部中断和定时器中断两种类型。
三、实验环境1. 单片机:80C512. 开发环境:Keil for 80513. 仿真软件:Proteus4. 实验电路:外部按钮电路、LED灯电路、定时器电路四、实验内容1. 外部中断实验(1)实验目的:学习外部中断的工作原理,掌握外部中断的配置和编程方法。
(2)实验步骤:a. 创建80C51固件项目,并在Keil中编写程序。
b. 配置外部中断源,设置中断优先级。
c. 编写外部中断服务程序,实现LED灯的闪烁。
d. 在Proteus中搭建实验电路,并进行仿真测试。
(3)实验结果:当按下按钮时,LED灯闪烁,松开按钮后LED灯熄灭。
2. 定时器中断实验(1)实验目的:学习定时器中断的工作原理,掌握定时器中断的配置和编程方法。
(2)实验步骤:a. 创建80C51固件项目,并在Keil中编写程序。
b. 配置定时器工作模式,设置定时时间。
c. 编写定时器中断服务程序,实现LED灯的闪烁。
d. 在Proteus中搭建实验电路,并进行仿真测试。
(3)实验结果:定时器中断触发后,LED灯闪烁,达到设定时间后停止闪烁。
五、实验分析1. 外部中断实验分析通过外部中断实验,我们了解了外部中断的工作原理和配置方法。
在实验中,我们设置了外部中断源,并编写了中断服务程序,实现了LED灯的闪烁。
这表明外部中断可以有效地响应外部事件,并执行相应的操作。
2. 定时器中断实验分析通过定时器中断实验,我们掌握了定时器中断的配置和编程方法。
微机原理_中断实验报告(3篇)
第1篇一、实验目的1. 理解中断系统的基本概念和工作原理。
2. 掌握中断源、中断向量、中断服务程序等基本概念。
3. 学习使用Keil软件进行中断程序的编写和调试。
4. 熟悉中断在微机系统中的应用。
二、实验原理中断系统是微机系统中重要的组成部分,它允许CPU在执行程序的过程中,响应外部事件或内部事件,从而实现多任务处理。
中断系统主要包括以下几个部分:1. 中断源:产生中断请求的设备或事件,如外部设备、定时器、软件中断等。
2. 中断向量:中断服务程序的入口地址,用于CPU在响应中断时找到相应的服务程序。
3. 中断服务程序:处理中断请求的程序,完成中断处理任务。
4. 中断优先级:不同中断源的优先级不同,用于确定中断响应的顺序。
三、实验设备与软件1. 实验设备:单片机实验板、计算机、Keil软件、Proteus仿真软件。
2. 实验软件:Keil uVision4、Proteus 8.0。
四、实验内容1. 外部中断实验(1)使用外部中断0(INT0)实现按键控制LED灯的亮灭。
(2)使用外部中断1(INT1)实现按键控制LED灯的闪烁。
2. 定时器中断实验(1)使用定时器0产生1秒的定时中断,实现LED灯的闪烁。
(2)使用定时器1产生1秒的定时中断,实现按键输入的计数。
3. 软件中断实验(1)使用软件中断实现按键输入的字符显示。
(2)使用软件中断实现按键输入的字符加密显示。
五、实验步骤1. 在Keil软件中创建一个新项目,选择合适的单片机型号。
2. 根据实验要求,编写中断服务程序,设置中断向量。
3. 在Proteus软件中搭建实验电路,包括单片机、按键、LED灯等。
4. 将Keil软件编译后的程序下载到单片机中。
5. 在Proteus软件中运行仿真,观察实验结果。
六、实验结果与分析1. 外部中断实验(1)按键按下时,LED灯亮;按键松开时,LED灯灭。
(2)按键按下时,LED灯闪烁;按键松开时,LED灯停止闪烁。
单片机 中断实验 实验报告
实验三中断实验一、实验内容1.当单片机的INT0端出现负脉冲时,进入相应的中断服务程序,P1口做输出口,接8只发光二极管,通过程序控制发光二极管依次点亮。
2.选择外部中断0(P3.2)接按键INTO到地,按下出现负脉冲时,进入相应的中断服务程序,在中断服务程序中,数码管显示加1,在0-9之间循环。
二、实验目的1、学习外部中断技术的基本使用方法。
2、学习中断处理程序的编程方法。
三、实验原理(中断原理部分参考教材填写)本实验中断处理程序的应用,最主要的地方是如何保护进入中断前的状态,使得中断程序执行完毕后能回到交通灯中断前的状态。
要保护的地方,除了累加器ACC、标志寄存器PSW外,还要注意。
一是主程序中的延时程序和中断处理程序中的延时程序不能混用,本实验中,主程序延时用的寄存器和中断延时用的寄存器应不相同。
四、实验电路(参考学习板说明书Page11)五、接线方式(参考学习板说明书Page11)P1口接发光二极管的L1—L8;单脉冲输出端“”接INI0,即接89C51的P3.2管脚。
六、参考程序程序一、ORG 0030Htmpdate: DB 01H,02H,04H,08H,10H,20H,40H,80H /*定义常量做为输出*/ORG 0000HLJMP MAINORG 0003HLJMP INTMAIN: SETB EA /*首先开启总中断*/SETB EX0 /*开启外部中断0 */SETB IT0 /* 设置成下降沿触发方式*/MOV R7,#8MOV DPTR,#TMPDATEL0: SJMP L0 //等待中断INT: DJNZ R7,L1 /*外部中断0 每按一次主板上的"INT0"键,中断响应,调用该函数,我们从P1口输出点亮发光二极管*/MOV R7,#8L1: MOV A,R7MOVC A,@A+DPTRCPL AMOV P1,ARETIEND程序二、/***************************************************************功能:按下按键,数码管加1,用中断的方法作者:txl时间:2009-04版本:V1.0***************************************************************/#include<reg52.h>#define uint unsigned int#define uchar unsigned charsbit wei1=P2^0;sbit key1=P3^2;uchar code table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};//共阳数码管码表//全局变量uchar num;//函数声明void delay(uint z);void led_show(uchar temp);void main(){num=0;// IT0=1; //中断以下降沿方式触发IT0=0; //中断以低电平方式触发EX0=1; //允许外部中断0中断EA=1; //总中断开wei1=0;while(1){led_show(num); //显示}}/*************************************************************** 功能:外部中断0入口***************************************************************/ void EX0_Int() interrupt 0{EX0 = 0; //关中断num++;if(num==10)num=0;while(!key1);//消除抖动delay(5);while(!key1);// for(;!key1;); //等待放开EX0 = 1; //开中断}void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}void led_show(uchar temp){P0=table[temp];delay(5);}扩展程序三、#include <AT89X52.H> //包含头文件sbit led=P1^0;#define shuma P0 //数码管数据口sbit LED_0=P2^0; //定义数码管4个控制位sbit LED_1=P2^1;sbit LED_2=P2^2;sbit LED_3=P2^3;unsigned char m;unsigned int code ton[7];void display(unsigned char d1,unsigned char d2,unsigned char d3,unsigned char d4);/*=====0-9=====A-G=====*/unsigned char a[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//共阳极数码管的段码0 1 2 3 4 5 6 7 8 9 A B C D E F//定时初值计算方法:以5ms为例,5ms=5000us,0xffff-5000/1.085即为TH和TL的值void int1() interrupt 3 //T1中断,时间是5ms{TR1=0; //关中断TH1=0xed; //装定时器初值实现5ms定时TL1=0xff;ET1=1; //开中断TR1=1;display(1,2,3,4); //在中断里显示数字}void main( void ){m=1;TMOD=0x10; //设置为T1定时器TH1=0xed; //装定时器初值TL1=0xff;TR1=1; //开中断ET1=1;EA=1;while(1){}}void display(unsigned char d1,unsigned char d2,unsigned char d3,unsigned char d4) {if(m==1) //每进入一次中断显示1位,用变量m作为显示位标识{LED_0=0; //使能该数码管控制位LED_1=LED_2=LED_3=1; //其他控制位无效shuma=a[d1]; //按照数据点亮该数码管}if(m==2) //第二次中断显示第二位{LED_1=0;LED_0=LED_2=LED_3=1;shuma=a[d2];}if(m==3) //第三次中断显示第三位{LED_2=0;LED_1=LED_0=LED_3=1;shuma=a[d3];}if(m==4) //第四次中断显示第四位{LED_3=0;LED_1=LED_2=LED_0=1;shuma=a[d4];}m++; //数码管位循环扫描if(m>=5) //如果4次中断显示完成,则回到第一重新显示m=1;}。
arm实验3 定时器实验
实验3 定时器实验一、实验目的:1、掌握定时器初始化的步骤;2、掌握定时器控制寄存器(TCR)的含义和使用;3、掌握定时器工作原理,学习定时器中断的设计方法,掌握1S间隔的定时器的处理。
4、熟悉ARM的中断原理,并产生中断。
二、实验设备:1.硬件PC机2.软件ADS1.2、PROTUES三、实验内容及原理:实验内容:本实验要求编写一个简单的定时器中断程序,设置一定的周期控制(1S)与某一个引脚(P0.0)相连的LED指示灯。
当定时器中断产生时可以观察到LED周期性闪烁。
实验原理:定时器控制(中断方式)。
采用11.0592MHz晶振,使用PLL部件,cclk=Fosc*4=11.0592MHz*4=442368MHz,外围时钟使用复位默认的Fpclk=fcclk/4=44.2368MHz/4=11.0592MHz,定时器0进行100分频(即PR=99,MR0=110592),实现1S定时控制LED点亮或熄灭。
另外,使用VIC的向量IRQ功能。
首先设置定时器为向量IRQ中断,分配优先级并使能向量,然后设置相关向量地址寄存器VICVectAddr0及中断使能,在中断服务程序里完成LED的亮灭,在处理完毕后写向量地址寄存器为0,通知VIC中断处理结束。
四、实验步骤1、在PROTUES里搭建好硬件电路平台,处理器采用LPC2106,如下图所示。
2、打开ADS1.2的CodeWarrior编译环境,新建一个工程(ARM Executable Image)工程,工程名为Time0。
在新建一个文件Time0.c,添加到工程里。
3、在工程空白处右击,添加工程所需的文件(config.h, target.h, LPC2106.h, Startup.s, IRQ.s, target.c)。
如下图所示。
4、编写Time0.c,实现定时器1s定时,LED灯闪烁。
5、配置DebugRel Seteings , 打开Target Settings ,设置如下图所示。
嵌入式系统实验报告
嵌入式系统设计实验报告班级: 20110612学号: ***********名:***成绩:指导教师:武俊鹏、刘书勇1. 实验一1.1 实验名称博创UP-3000实验台基本结构使用方法1.2 实验目的1.熟悉嵌入式系统开发式流程概述。
2.熟悉UP-net3000实验平台的核心硬件电路和外设。
3.熟悉ARM JTAG的安装与使用。
1.3 实验环境硬件:ARM 嵌入式开发平台、用于ARM7TDMI的JTAG仿真器、PC 机Pentium100以上、串口线。
软件:PC机操作系统win98、Win2000或WinXP、ARM SDT 2.51或ADS1.2集成开发环境、仿真器驱动程序、超级终端通讯程序。
1.4 实验内容及要求1.熟悉嵌入式系统开发式流程概述。
2.熟悉UP-net3000实验平台的核心硬件电路和外设。
3.熟悉ARM JTAG的安装与使用。
1.5 实验设计与实验步骤1.新建超级终端2.选择ARM 开发实验台串口。
完成新建超级终端的设置以后,可以选择超级终端文件菜单中的保存,将当前设置3.保存为一个特定超级终端到桌面上,以备后用。
用串口线将PC机串口和平台UART0 正确连接后,就可以在超级终端上看到程序输出的信息了。
4.启动开发板,按住任意键,使开发板进入BIOS设置状态。
5.在超级终端的界面上,显示BIOS版本信息,以及相应的测试指令。
操作时,要在PC机上输入小写的字母快捷键,进入到相应的功能中去。
6.按照超级终端上的提示信息,进行功能的测试。
1.6 实验过程与分析本次实验操作起来并不困难,因为此次实验属于验证型实验,按照实验资料所给的提示信息,以上面的步骤,即可得到实验的结果。
进入到BIOS界面后,按照超级终端上的提示信息来进行功能1.7 实验结果总结在实验过程中,我们进行的很顺利,没有遇到什么问题,在超级终端界面,按提示的快捷键来测试对应的功能。
如e:测试由ZLG7289 驱动的LED 显示,共分3 步,请看超级终端提示按任意键继续,同时观察LED 的变化,最后返回主菜单。
6定时器中断
定时器中断实验一、实验要求:1、通过定时器,使用实验一跑马灯连线方式,RD端口接8个LED,得到一个二进制计数显示(00000000----11111111)。
2、使用实验二数码显示连线方式,完成一个0-9的计时显示,正计时或倒计时都可以,参考时间间隔1S。
二、实验代码:1、二进制计数定时器测试代码:#include <p18F452.h>//----------------------------------------------------------------------------void main (void);void InterruptHandlerHigh (void);unsigned int Timeout;//----------------------------------------------------------------------------// Main routinevoidmain (){Timeout = 0;INTCON = 0x20; //disable global and enable TMR0 interruptINTCON2 = 0x84; //TMR0 high priorityRCONbits.IPEN = 1; //enable priority levelsTMR0H = 0; //clear timerTMR0L = 0; //clear timerT0CON = 0x82; //set up timer0 - prescaler 1:8INTCONbits.GIEH = 1; //enable interruptsTRISD = 0; // configure PORTD for outputPORTD=0X00;while (1){if (Timeout == 1){ //timeoutTimeout = 0; //clear timeout indicorPORTD++;}}}//----------------------------------------------------------------------------// High priority interrupt vector//PIC 中断标准服务程序#pragma code InterruptVectorHigh = 0x08 //中断向量voidInterruptVectorHigh (void){_asmgoto InterruptHandlerHigh //jump to interrupt routine_endasm}//----------------------------------------------------------------------------// High priority interrupt routine//中断服务程序#pragma code#pragma interrupt InterruptHandlerHighvoidInterruptHandlerHigh (){if (INTCONbits.TMR0IF){ //check for TMR0 overflowINTCONbits.TMR0IF = 0; //clear interrupt flagTimeout = 1; //indicate timeout}}实验结果:如果将测试代码,使用实验一跑马灯连线方式,RD端口接8个LED,则会看到一个二进制计数显示(00000000至11111111)。
实验六 外部中断方式控制参考答案LED
实验六外部中断方式控制L E D姓名:学号:班级:实验时间:实验地点:指导教师:一、实验目的1、掌握DVCC仿真系统的使用方法2、I/O口的使用方法3、掌握外部中断的方法4、掌握定时器的使用方法二、实验设备DVCC仿真系统一套、计算机一台三、实验内容1、用K0~K3控制LED0~LED32、当中断没发生时,8个LED按间隔发光。
当P3.3 (INT1)为低电平(合上K0)时,8个LED整体闪烁16次。
3. 在P3.3 (INT1)发生中断后,8个LED整体闪烁16次;P3.2(INT0)中断,4个LED循环发光16次。
设P3.3(INT1)优先中断,观察两个中断顺序不同的结果有什么不同。
四、实验线路五、程序清单(含注释)和操作步骤1、实验1ORG 0000H LOOP: MOV P1, #0FHMOV A, P1ANL A, #0FHS W A P AMOV P1, ASJMP LOOPEND拨动K0~K3观察LED0~LED3在MOV P1, #0FH 前面加“;”化 ,这条指令的功能 定义P1的低四位为输入口 ,若使某I/O 端口为输入口,必须将该端口先 写1 ,所以称P1为 准双向I/O 口。
2. 实验2将P1.0~P1.3改接LED4~LED7。
P3.2接开关K0. O R G 0000H A J M P M A I N O R G 0003H S J M P Z D 0 O R G 0020H M A I N :C L R I T 0 S E T B E A S E T B P X 0 S E T B E X 0 M O V A , #0A A H H A 1S 1:M O V P 1, A A J M P H A 1S 1 D E L A Y :M O V R 5, #0F F H D E L A Y 1:M O V R 4, #0F F H D J N Z R 4, $ D J N Z R 5, D E L A Y 1 R E T1) 开关置0不动观察到的现象是 八个LED 不停地整体亮灭 ;开关置0立即置1,观察到的现象是八个LED 整体亮灭16次后返回亮灭相间 。
ARM中断编程实验
数字信息技术实验学校学院专业实验题目 ARM 中断实验编程小组成员二Ο一七年三月一.实验目的通过本次实验了解中断是什么以及学会如何进行中断编程。
二.实验要求基础实验:利用Exynos4412 的K1、K2 这2 个I/O 引脚的中断模式,分别点亮LED1和LED2,扩展实验:配置K3为中断模式,点亮LED3.三.实验仪器1、计算机2、USB转9脚串口线(通过USB与计算机连接,母头与实验平台连接)3、Exynos4412处理器开发与应用实验平台4、BL-JTAG 仿真器(通过USB与计算机连接,JTAG口与实验平台连接)5、电源线(与实验平台相连接的交流电源线)四.实验原理1.电路原理K1、K2、K3 分别与GPX1_1、GPX1_2、GPX3_2相连,在没有按下按键时这些引脚上一直处于高电平,当按键按下时产生下降沿触发中断。
EXYNOS4412 中断实验电路图实验箱上按键位置2、编程流程去除GPX1_2、GPX1_2,GPX3_2 内部上下拉属性,配置为中断模式。
GPIO 控制器中关闭屏蔽、使能中断;在GIC 中断控制器中使能中断;设置中断优先级;使能GIC;选择中断发送给CPU0;等待中断产生,然后进入中断处理函数;清除中断源。
五.实验内容(1)连接好开发板与计算机之间的串口线和BL-JTAG 仿真器(2)连接好开发板的交流电源线(3)接下来利用计算机演示集成开发环境的使用,以及LED灯的控制实验软硬件仿真流程,打开Eclipse,导入工程Key_Int,进行相应代码编写,编译,配置相关debug信息,装载程序,按下KEY1,KEY2,KEY3在putty串口终上查看相应的信息输出以及可以看到LED1和LED2和LED3亮灭情况。
六.实验步骤根据实验一步骤,连接仿真器、串口线,打开Eclipse,导入工程Key_Int,进行相应代码编写,编译,配置相关debug信息,装载程序,按下KEY1,KEY2,在putty 串口终端上查看相应的信息输出以及可以看到LED1和LED1亮灭情况。
ARM异常及中断处理实验报告
实验报告实验题目ARM异常及中断处理实验姓名:学号:课程名称:所在学院:专业班级:任课教师:实验项目名称ARM异常及中断处理实验一、实验目的与要求:利用 Exynos4412 的 K2、K3这2个I/O引脚的中断模式,当被按下时进入相应的中断处理函数处理相应的事件。
二、实验设备:华清远见试验箱,PC机三、实验方法(原理,流程图)1、电路原理电路原理如图所示,K2、K3 分别与 GPX1_1、GPX1_2 相连,在没有按下按键时 GPX1_1、GPX1_2 引脚上一直处于高电平,当把这两个引脚设为中断模式并为下降沿中断,则按键被按下俩引脚就会有高电平变为低电平,因此,产生 GPIO 中断进入相应的中断函数,处理中段事件,从终端上打印出相应的按键信息。
其中K2 对应的是XEINT9 中断源,K3 对应的是 XEINT10 中断源。
2、编程流程(1)设置 GPX1_2、GPX1_2 两个管脚没有内部上下拉属性,然后配置为中断模式;(2)设置中断触发方式;(3)GPIO 控制器中关闭屏蔽、使能中断;(4)在 GIC 中断控制器中使能中断;(5)设置中断优先级;(6)使能 GIC;(7)选择中断发送给 CPU0;(8)等待中断产生,然后进入中断处理器函数;(9)清楚中断源的挂起状态。
四、实验过程、步骤及内容1、寄存器设置为了实现进入中断目的,需要通过配置 GPX1CON 寄存器将 GPX1_1、GPX1_2 设置为中断模式。
设置中断方式、中断处理函数、使能中断。
2、编写相关代码如下:(1)设置异常向量表:.text.global _start_start:b resetldr pc,_undefined_instructionldr pc,_software_interruptldr pc,_prefetch_abortldr pc,_data_abortldr pc,_not_usedldr pc,_irqldr pc,_fiq_undefined_instruction: .word _undefined_instruction_software_interrupt:.word _software_interrupt_prefetch_abort:.word _prefetch_abort_data_abort:.word _data_abort_not_used:.word _not_used_irq:.word irq_handler_fiq:.word _fiqreset:ldr r0,=0x40008000mcr p15,0,r0,c12,c0,0 @ Vector Base Address Registermrs r0,cpsrbic r0,r0,#0x1forr r0,r0,#0xd3msr cpsr,r0 @ Enable svc mode of cpu.text.global _start_start:b resetldr pc,_undefined_instructionldr pc,_software_interruptldr pc,_prefetch_abortldr pc,_data_abortldr pc,_not_usedldr pc,_irqldr pc,_fiq_undefined_instruction: .word _undefined_instruction_software_interrupt:.word _software_interrupt_prefetch_abort:.word _prefetch_abort_data_abort:.word _data_abort_not_used:.word _not_used_irq:.word irq_handler_fiq:.word _fiqreset:ldr r0,=0x40008000mcr p15,0,r0,c12,c0,0 @ Vector Base Address Registermrs r0,cpsrbic r0,r0,#0x1forr r0,r0,#0xd3msr cpsr,r0 @ Enable svc mode of cpuinit_stack:ldr r0,stacktop /*get stack top pointer*//********svc mode stack********/mov sp,r0sub r0,#128*4 /*512 byte for irq mode of stack*/ /****irq mode stack**/msr cpsr,#0xd2mov sp,r0sub r0,#128*4 /*512 byte for irq mode of stack*/ /***fiq mode stack***/msr cpsr,#0xd1mov sp,r0sub r0,#0/***abort mode stack***/msr cpsr,#0xd7mov sp,r0sub r0,#0/***undefine mode stack***/msr cpsr,#0xdbmov sp,r0sub r0,#0/*** sys mode and usr mode stack ***/msr cpsr,#0x10mov sp,r0 /*1024 byte for user mode of stack*/b main.align 4/**** swi_interrupt handler ****//**** irq_handler ****/irq_handler:sub lr,lr,#4stmfd sp!,{r0-r12,lr}bl do_irq //跳转到do_irq 处理器函数ldmfd sp!,{r0-r12,pc}^stacktop: .word stack+4*512.datastack: .space 4*512(2)编写中断处理函数,汇编中的处理/**** irq_handler ****/irq_handler:sub lr,lr,#4stmfd sp!,{r0-r12,lr}bl do_irq //跳转到do_irq 处理器函数ldmfd sp!,{r0-r12,pc}^(3)主程序的初始化:int main(void){//LED2 GPX2_7GPX2.GPX2CON |= 0x1 << 28;//LED3 GPX1_0GPX1.GPX1CON |= 0x1;//Led4 GPF3_4GPF3.GPF3CON |= 0x1 << 16;//Key_2 Interrupt GPX1_1GPX1.GPX1PUD = GPX1.GPX1PUD & ~(0x3 << 2); // Disables Pull-up/Pull-downGPX1.GPX1CON = (GPX1.GPX1CON & ~(0xF << 4)) | (0xF << 4); //GPX1_1:WAKEUP_INT1[1](EXT_INT41[1])EXT_INT41_CON = (EXT_INT41_CON & ~(0x7 << 4)) | 0x2 << 4;EXT_INT41_MASK = (EXT_INT41_MASK & ~(0x1 << 1)); // Bit: 1 = Enables interrupt//Key_3 Interrupt GPX1_2GPX1.GPX1PUD = GPX1.GPX1PUD & ~(0x3 << 4); // Disables Pull-up/Pull-downGPX1.GPX1CON = (GPX1.GPX1CON & ~(0xF << 8)) | (0xF << 8); //GPX1_2:WAKEUP_INT1[2] (EXT_INT41[2])EXT_INT41_CON = (EXT_INT41_CON & ~(0x7 << 8)) | 0x2 << 8;EXT_INT41_MASK = (EXT_INT41_MASK & ~(0x1 << 2)); // Bit: 1 = Enables interrupt/** GIC interrupt controller:* */// Enables the corresponding interrupt SPI25, SPI26 -- Key_2, Key_3ICDISER.ICDISER1 |= (0x1 << 25) | (0x1 << 26);CPU0.ICCICR |= 0x1; //Global enable for signaling of interruptsCPU0.ICCPMR = 0xFF; //The priority mask level.Priority filter. thresholdICDDCR = 1; //Bit1: GIC monitors the peripheral interrupt signals and// forwards pending interrupts to the CPU interfaces2ICDIPTR.ICDIPTR14 = 0x01010101; //SPI25 SPI26 interrupts are sent to processor 0printf("\n ********* GIC test ********\n");while (1){GPF3.GPF3DAT |= 0x1 << 4;mydelay_ms(500);GPF3.GPF3DAT &= ~(0x1 << 4);mydelay_ms(500);}return 0;}(4)中断处理函数:void do_irq(void ){int irq_num;irq_num = (CPU0.ICCIAR & 0x3FF);switch (irq_num) {case 58: //turn on LED2; turn off LED3GPX2.GPX2DAT = 0x1 << 7;GPX1.GPX1DAT &= ~0x1;printf("IRQ interrupt !! turn on LED2; turn off LED3\n");//Clear PendEXT_INT41_PEND |= 0x1 << 2;ICDICPR.ICDICPR1 |= 0x1 << 26;break;case 57: //Turn on Led3; Turn off Led2GPX2.GPX2DAT &= ~(0x1 << 7);GPX1.GPX1DAT |= 0x1;printf("IRQ interrupt !! Turn on LED3; Turn off LED2\n");//Clear PendEXT_INT41_PEND |= 0x1 << 1;ICDICPR.ICDICPR1 |= 0x1 << 26;break;}// End of interruptCPU0.ICCEOIR = (CPU0.ICCEOIR & ~(0x1FF)) | irq_num;}(5)时延函数:void mydelay_ms(int ms){int i, j;while(ms--){for (i = 0; i < 5; i++)for (j = 0; j < 514; j++);}3、实验步骤:(1)导入工程源码。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验六:定时器中断实验
一、实验目的
熟悉 LPC2000 系列 ARM7 微控制器的定时器 0/1 的基本设置及应用。
二、实验设备
硬件:PC 机一台、 EasyARM2013 开发板一套
软件:Windows98/XP/2000 系统, ADS 1.2 集成开发环境
三、实验内容
使用定时器 0 实现 1 秒定时,控制 LED 灯闪烁。
采用软件查询方式等待定时时间到达。
四、实验预习要求
仔细阅读教材关于定时器 0 和定时器 1 的说明。
五、实验步骤
1. 启动 ADS 1.2,使用 ARM Executable Image for lpc2103 工程模板建立一个工程 TIMEBEEP_C。
2. 在工程的 user 中的 main 文件中编写实验程序。
3. 选用 DebugInRAM 生成目标,然后编译连接工程。
4. 将 EasyARM2103 开发板上的 JP4 跳线 P0.17短接。
5. 选择【 Project 】 ->【 Debug 】 ,启动 AXD 进行 JTAG 仿真调试。
6. 可以全速运行程序, LED 亮一秒,熄一秒,然后再亮一秒……依次循环。
六、实验参考程序
定时器实验的参考程序见程序清单 3.9。
程序清单 4.11 定时器 0 定时中断
#include "config.h"
#define LED (1 << 17
/******************************************************************* *********** ** 函数名称:Timer0_ISR
** 函数功能:定时器 0 中断主程序
** 输入参数:无
** 输出参数:无
******************************************************************** **********/ void __irq Timer0ISR (void
{
if ((IO0PIN & LED == 0 {
IO0SET = LED; /* 点亮发光二极管 */ }
else IO0CLR = LED; /* 熄灭发光二极管 */ T0IR = 0x01; /* 清除中断标志 */ VICVectAddr = 0x00; /* 中断向量结束 */ }
/******************************************************************* *********** ** 函数名称:Timer0Init
** 函数功能:定时器 0 初始化
** 输入参数:无
** 输出参数:无
******************************************************************** **********/ void Timer0Init(void
{
T0TCR = 0x02; /* 定时器 0 复位 */ T0PR = 0; /* 不设时钟分频 */ T0MCR =
0x03; /* 匹配后复位 TC ,并产生中断 */ T0MR0 = Fpclk / 2; /* 设置 0.5 秒匹配值 */ T0IR = 0x01; /* 清除中断标志 */ T0TCR = 0x01; /* 启动定时器 0 */ }
/******************************************************************* *********** ** 函数名称:main
** 函数功能:定时器 0 匹配产生中断
** 输入函数:无
** 输出参数:无
******************************************************************** **********/ int main (void
{
PINSEL1 = PINSEL1 & 0xFFFFFFF3; /* 选择 P0.17 的 GPIO 功能 */ IO0DIR = LED; /* 设置 P0.17 为输出 */ IO0SET = LED; /* 设置输出高电平 */ Timer0Init(; /* 定时器 0 初始化 */ IRQEnable(; /* IRQ 中断使能 */ /* 设置向量中断控制器 */
VICIntSelect = VICIntSelect & (~(1 << 4; /* 定时器 0 分配为 IRQ 中断 */ VICVectCntl0 = 0x20 | 4; /* 定时器 0 分配为向量 IRQ 通道 0 */ VICVectAddr0 =
(uint32 Timer0ISR; /* 分配中断服务程序地址 */ VICIntEnable = 1 << 4; /* 定时器 0 中断使能 */ while(1;
return 0;
}
七、思考
1、若需要 LED 会响 2 秒,停 2 秒,在实验参考程序中应修改什么地方?
2、若实验参考程序中设置 T0PR=0,请使用 Fpclk 宏来设置 T0MR0 寄存器,实现 1 秒或 0.5 秒定时。
(提示:Fpclk 宏在项目的 config.h 文件中定义。