上篇专题中描述的是采用查询的方式完成定时器Timer1模模式程序的设计,本篇则介绍采用中断的方式完成定时器Timer1模模式程序的设计。查询的方式,上篇已经介绍过就是在主程序中不断的查询中断标志是否被置位,置位后则进行相应处理。中断的方式则为,当中断产生时,CC2530在硬件的作用下将程序跳转到中断中断服务程序去执行。先贴出中断方式的程序:
#include #define uint8 unsigned char #define uint16 unsigned int #define BIT(x) (1 << x) #define LED1 P1_0 /****************************/ //函数声明 /****************************/ void initial(void); /**************************************/ //主函数 /**************************************/ void main(void) { initial(); while(1) { } } /****************************/ //初始化函数 /****************************/ void initial(void) { /*设置P1.0为输出模式*/ P1DIR ^= BIT(0); /*关闭LED1*/ LED1 = 1; /*选择外部石英晶振*/ CLKCONCMD &= ~0x40; /*等待晶振稳定*/ while(!(SLEEPSTA & 0x40)); /*TICHSPD二分频,CLKSPD不分频*/ CLKCONCMD &= ~0x47; /*关闭RC振荡器*/ SLEEPCMD |= 0x04; /*设置定时器T1,128分频,模模式,从0计数到T1CC0*/ T1CTL |= 0x0E; /*装入定时器初值(比较值)*/ T1CC0L = 62500%256; T1CC0H = 62500/256; /*设置捕获比较通道0为比较模式,用以触发中断*/ T1CCTL0 ^=BIT(2); /*使能Timer1中断*/ T1IE = 1; /*开启总中断*/ EA = 1; } /****************************/ //定时器1中断函数 /****************************/ #pragma vector = T1_VECTOR __interrupt void T1_ISR(void) { LED1 = !LED1; }
上一篇:cc2530裸机编程系列笔记3--定时器Timer1自由模式程序
下一篇:cc2530裸机编程系列笔记4--GPIO口的使用
推荐阅读最新更新时间:2024-10-30 13:50
设计资源 培训 开发板 精华推荐
- LT1222 的典型应用 - 500MHz、3nV/rtHz、AV >=10 运算放大器
- LTC3624IDD-25 5V 输出电压、2A 同步降压稳压器、同步至 500kHz、强制连续模式的典型应用
- 使用 PIC16LF1786 MCU 系列的低成本血糖仪演示
- MCP73855EV,用于 MCP73855 4.2V、1 节锂离子/锂聚合物电池充电器的评估套件
- 使用具有 B 类 EMI 滤波(双输出)的 RP10-2412DA DC/DC 转换器的典型应用
- MAXREFDES1084:采用MAX17596的小型12W DC-DC反激转换器
- AIR32F103_PMOD 开发板
- 具有手动复位按钮的 LTC1727EMS8-2.5 三路电源电压监视器的典型应用
- AP2132 2A CMOS LDO REGULATOR固定版典型应用
- 5-LED 工业用通用 LED 驱动器