程序:#include ""
#define key2 0x00004000 //p0.14控制led2con
#define led2con 0x00000800 //p0.11低电平时点亮led2con
#define time0 fpclk/10 //初始状态下一周期低电平时间0.1s
#define time1 fpclk //方波周期2s
/函数声明。
void __irq irq_timer0(void);
void __irq irq_eint1(void);
/全局变量定义。
uint32 i=0key2每按下一次,此变量加0.1s
int main(void)
//管脚功能选择初始化化。
pinsel0=0x20000000; /p0.14设置为eint1
iodir = led2conp0.11设置为输出。
ioclr = led2conp0.11输出清零,led2con点亮。
//中断选择初始化化。
vicintenable=0x00008010; /中断使能timer0和eint1
vicintselect=0x00000000; /设置中断类型为irq
vicvectcntl0=0x24timer0分配为通道0
vicvectaddr0=(uint32)irq_timer0;
vicvectcntl1=0x2feint1分配为通道1
vicvectaddr1=(int)irq_eint1;
//外部中断输入初始化化。
extmode =0x00000002; /设置外部中断的输入极性为下降沿。
extpolar=0x00000000;
extint = 0x02清除eint1的中断标志。
//定时器初始化。
t0tc=0定时器清零。
t0pr=0不分频。
t0mcr=0x19mr0匹配时产生中断,mr1匹配时定时器清零并产生中断。
t0mr0=time0mr0定时初值0.1s
t0mr1=time1mr1定时初值2s
t0ir = 0x03清除mr0、mr1的中断标志。
t0tcr=0x01启动定时器。
while(1等待timer0中断或eint1中断。
return(0);
名称: irq_timer0()
功能: 定时器timer0服务函数,取反led2con
void __irq irq_timer0(void)
if((iopin&led2con)==0读取ledcon2状态并取反。
elsewhile((t0ir&0x01)!=0等待tomr0中断信号恢复为高电平。
while((t0ir&0x02)!=0等待tomr1中断信号恢复为高电平。
vicvectaddr=0x00向量中断结束*/
名称: irq_eint1()
功能: 外部中断eint1服务函数,当低电平<1.9s时,加0.1s;超过1.9s后复位(低电平0.1s)
void __irq irq_eint1(void)
if(t0mr0<(time1-time0))
elsewhile((extint&0x02)!=0等待外部中断信号恢复为高电平。
vicvectaddr=0x00; /返回。
电路图:流程图:
主函数流程图。
定时器中断服务函数流程图。
ARM作业
arm实验。专业年级 10级通信工程 学号。姓名。指导教师 郑汉麟。2013年6月8日。华中科技大学文华学院信息学部。一 编译前工作 1.先新建新空间。2.新建程序窗口new file,程序写完后,将文件保存为文件,然后点击源文件菜单,增加文件,将。s文件打开。3.编译 project settin...
ARM作业
院系 班级 姓名 学号 单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了 i o 设备。概括的讲 一块芯片就成了一台计算机。它的体积小 质量轻 便宜 为学习 应用和开发提供了便利条件。同时,学习使用单片...
ARM作业
程序 file 功能 键盘输入。当检测到有按键输入时,对发光二极管进行取反控制。使用i o口输入方式对按键进行扫描。include define key1 0x00010000 p0.16控制led1con define key2 0x00004000 p0.14控制led2con define l...