中断是MCU实时处理内部或外部事件的内部机制。当内部或外部事件发生时,单片机的中断系统会强制CPU暂停正在执行的程序,转而处理中断事件。处理完中断后,它将返回被中断的程序并继续执行。
CC2430有18个中断源,包括外部中断和内部中断。
开发板电路图:
S1键已连接到开发板上的P0.1。这个实验的效果是通过按下S1键来触发P0.1的中断,然后在中断服务子程序中控制LED1的开/关。
实验原理和流程图
实验流程图如下:
我们需要为单字节SFR中的一个位赋值(0或1 ),以精确控制硬件设备。
有些SFR支持位寻址,如TCON、P0等。这时候bit的赋值就很简单了,只需要查询ioCC2430.h头文件中SFR bit Access的Bit定义:
P0 _ 0=0//将0赋给P0的第一位
P0 _ 0=1;//将1赋给P0的第一位
但是,有些sfr不支持位寻址,如本实验中的PICTL。这时,如果你想给一个位赋值,语法如下:
PICTL=~0x01//将0分配给第1位
PICTL |=0x01//将1分配给第1位
中断在程序中的使用一般包括两个部分:中断服务子程序的编写和中断使能的开启。上面已经介绍了中断使能,下面简单介绍中断服务子程序的准备:
首先,指定中断向量,可以在ioCC2430.h头文件的中断向量部分查询。语法如下:
#pragma向量=中断向量
然后用下面的结构写一个中断处理程序:
_ _中断void函数名(void)
{
//打开中断
//中断处理
//中断标志被清除。
//关闭中断
}hfy
标签:实验原理程序