急求:我编的c语言控制程序,如何更改触发方式(按键判断改为高低电平判断),而保持原程序执行结果。

急求:我编的c语言控制程序,如何更改触发方式(按键判断改为高低电平判断),而保持原程序执行结果。,第1张

新建工程

首先新建工程,并加以简单配置,可以参考我的分享:《IAR如何建立工程》,如下为硬件电路图:

cc2530 外部中断

查看cc2530 datasheet可以知道,2530的所有外部引脚均可以配置为中断模式,如下图所示:P0\P1\P2 中,P00-07共享一个中断地址,P10-17共享一个中断地址,P20-P23共享一个中断地址。

PxIEN

在引脚中断功能配置时,常需要设置P0IEN,主要是开启/关闭引脚的中断功能。如下图所示,为1时开启,为0时关闭中断。

开启S1按钮中断:

P0IEN |= BIT4;

PICTL

PICTL可以控制Px口中断触发信号:上升沿触发、下降沿触发。由于按键在未按下时处于高电平,按下后为低电平,松开后又为高电平,所以会产生下降沿触发信号,配置为下降沿触发即可:

PICTL |= BIT0;  //falling edge

IEN1

除了配置引脚,还需要开启端口引脚中断使能,如下所示开启PO口中断使能:

IEN1 |= BIT5; //P0 interrupt

PxIFG

在开启中断前需要先清除中断标志,以免误入中断造成系统混乱。

P0IFG &= ~BIT4;

系统中断使能

学习51都知道,在任何中断 *** 作时,都需要开启系统中断:

EA = 1; //system interrupt open

中断函数书写

#pragma vector = P0INT_VECTOR

__interrupt void P0_isr(void)

{

wg_waitUs(10);

P0IFG &= ~BIT4;

P0IF &= ~BIT4;

P1_0 = ~P1_0; //led1 trigger

}

其中wg_waitUs()是延时函数,起到按键消抖作用。

代码框架

void wg_ledInit(void)

{

P1DIR |= BIT0;

P1 |= BIT0;

}

void wg_btnInit(void)

{

P0IEN |= BIT4; // P04 button input

PICTL |= BIT0;  //falling edge

IEN1 |= BIT5; //P0 interrupt

P0IFG &= ~BIT4;

EA = 1; //system interrupt open

}

void wg_waitUs(uint16 duration)

{

while (duration--)

{

asm("NOP");

asm("NOP");

asm("NOP");

asm("NOP");

asm("NOP");

asm("NOP");

asm("NOP");

asm("NOP");

}

}

void main(void)

{

wg_ledInit();

wg_btnInit();

//loop

for(;;)

{

;//

}

}

#pragma vector = P0INT_VECTOR

__interrupt void P0_isr(void)

{

wg_waitUs(10);

P0IFG &= ~BIT4;

P0IF &= ~BIT4;

P1_0 = ~P1_0; //led1 trigger

}

1 可以通过iar软件编程控制4个灯的亮灭
2 首先需要了解每个灯的控制引脚,然后在iar软件中编写相应的控制代码,通过控制引脚的高低电平来控制灯的亮灭。
3 可以通过编写循环语句和延时语句,让4个灯依次或同时亮灭,实现不同的灯光效果。
同时,也可以通过添加传感器等外部设备,实现更多的功能。

调试状态下:
View
->
Toolbars
->
Debug可显示调试工具栏,向左的箭头就是复位。
你也可以在Tools
->
Options
->
Key
Bindings里添加Debug各项的快捷键。例如我把复位设置为Ctrl+R,非常方便。

<bean id="propertyPlaceholderConfigurer" class="orgspringframeworkbeansfactoryconfig
PropertyPlaceholderConfigurer"
p:locations-ref="locations"
p:order="1" />
<util:list id="locations">


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13387758.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-26
下一篇 2023-07-26

发表评论

登录后才能评论

评论列表(0条)

保存