×
单片机 > 单片机程序设计 > 详情

ARM 学习笔记之二 LED点亮程序设计

发布时间:2020-05-28 发布时间:
|

第一步,先聊聊单片机 LED 点亮:

        单片机可操作单个位:sbit    led1    =    P1    ^    2;

        通过控制 变量 led1 来控制灯 的 亮 与 灭;

#include

sbit led1 = P1 ^ 2;

void delay(unsigned int xx)//延时

{

    int i = 0;

    while(xx--)

    {

        for(i = 0; i < 400; i++);

    }

}

int main()

{

    while(1)

    {

        led1 = 1//灭

        delay(100);

        led1 = 0;//亮

        delay(100);

    }

}

        这是单片机的点灯实验,下面我们将它引入到 ARM 上:

        ARM 中不能像单片机那样进行单个的位操作,必须是整体,但也很简单...

        有这么几个步骤:

        (1)分析电路(需要操作哪个灯,这是你要做的)

        (2)分析驱动方式(查询寄存器的工作方式: 输入 / 输出 / ...)

        (3)控制对应引脚(查询哪个引脚和该引脚是否拉高拉低)


        不说了,直接上代码

#include

#define LED_A_ON(i)  GPADAT &= ~(0x1 << i)  //A口i灯亮

#define LED_B_ON(i)  GPBDAT &= ~(0x1 << i)  //B口i灯亮

#define LED_A_OFF(i) GPADAT |= (0x1 << i)   //A口i灯亮

#define LED_B_OFF(i) GPBDAT |= (0x1 << i)   //B口i灯亮

void LED_INIT(void);//初始化控制灯

void delay(unsigned int xx);//延时

int main()

{

    LED_INIT();

    while(1)//流水灯实验

    {

        LED_B_ON(5);

   LED_B_OFF(6);

   LED_A_OFF(25);

   LED_A_OFF(26);

   delay(100);

   LED_B_ON(6);

   LED_B_OFF(5);

   LED_A_OFF(25);

   LED_A_OFF(26);

   delay(100);

   LED_A_ON(25);

   LED_B_OFF(5);

   LED_B_OFF(6);

   LED_A_OFF(26);

   delay(100);

   LED_A_ON(26);

   LED_B_OFF(5);

   LED_B_OFF(6);

   LED_A_OFF(25);

   delay(100);

    }

}

void LED_INIT()//初始化控制灯

{

GPBCON &= ~(0x03 << 10);//GPB5清零

    GPBCON |= (0x01 << 10); //置1

GPACON &= ~(0x3 << 25); 

GPADAT |= (0x3 << 25);

    GPBDAT |= (0x3 << 5);

delay(10000);

}

        自己比较吧,是不是也不太难呢。




『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
STM32中断向量表的位置.重定向