概述
近期任务是看一些基本代码,熟悉语法,然后自己运用
- 套路
#include <ioCC2530.h>
typedef unsigned char uchar;
typedef unsigned int uint;
2 . 常用的延时函数
void DelayMS(uint msec)
{
uint i,j;
for (i=0; i<msec; i++)
for (j=0; j<530; j++);
}
因为LED常用的有四个,而这四个定义
3 . 四个常用LED定义
void DelayMS(uint msec)
{
uint i,j;
for (i=0; i<msec; i++)
for (j=0; j<530; j++);
}
定义进中断的开关
#define KEY1 P0_5 //定义P0.5口为S2控制端
uchar KeyValue=0;
四个灯是亮还是灭
void LedOnOrOff(uchar mode)
{
LED1 = mode;
LED2 = mode;
LED3 = mode;
LED4 = mode;
}
设置灯相应的IO口
void InitLed(void)
{
P1DIR |= 0x13; //P1.0、P1.1、P1.4定义为输出
P0DIR |= 0x02; //P0.1定义为输出
LedOnOrOff(0); //使所有LED灯默认为熄灭状态
}
我发现我看的资料上面这些东西设置全是分开的,这样子很方便诶,满满的都是套路
设置开关相应的IO口 采用中断方式
void InitKey()
{
P0IEN |= 0x20; // P0.5 设置为中断方式 1:中断使能
PICTL |= 0x20; //下降沿触发
IEN1 |= 0x20; //允许P0口中断;
P0IFG = 0x00; //初始化中断标志位
EA = 1; //打开中断
}
中断处理函数
/****************************************************************************
* 名 称: P0_ISR(void) 中断处理函数
* 描 述: #pragma vector = 中断向量,紧接着是中断处理程序
****************************************************************************/
#pragma vector = P0INT_VECTOR
__interrupt void P0_ISR(void)
{
if(P0IFG > 0) //按键中断
{
DelayMS(10); //延时去抖
if(P0IFG > 0) //按键中断
{
KeyValue = 1; //产生中断保存中断状态
}
}
P0IFG = 0; //清中断标志
P0IF = 0; //清端口0中断标志
}
最后就是主函数
void main(void)
{
InitLed(); //设置LED灯相应的IO口
InitKey(); //设置KEY相应的IO口
while(1)
{
if(KeyValue == 1) //如果按键按下LED3、LED2、LED1将倒序流水灯闪烁
{
LED4 = !LED4;
DelayMS(200);
LED3 = !LED3;
DelayMS(200);
LED2 = !LED2;
DelayMS(200);
LED1 = !LED1;
DelayMS(200);
KeyValue = 0;
}
}
}
其实就是将基本的代码看一遍,然后自己运行,进行修改
我觉得这样子对我整体思路比较有帮助
今天看这些学到了
-四个灯一般定义在哪个口
-延时函数与之前学的没啥区别
-定义IO口的时候尽量分开写,清晰明白
-中断函数跟着#pragma vector = P0INT_VECTOR
最后
以上就是饱满电源为你收集整理的初学cc2530的全部内容,希望文章能够帮你解决初学cc2530所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复