我是靠谱客的博主 饱满电源,最近开发中收集的这篇文章主要介绍初学cc2530,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

近期任务是看一些基本代码,熟悉语法,然后自己运用

  1. 套路
#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所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(52)

评论列表共有 0 条评论

立即
投稿
返回
顶部