LED灯控制实验

来源:互联网 发布:手机淘宝上改收货地址 编辑:程序博客网 时间:2024/04/28 15:52

实验名称LED灯控制实验

实验目的:熟悉ADS使用,熟悉c编程

实验原理

由电路图可以看出LED1,LED2,LED3,LED4分别受GPB5,GPB6,GPB7,GBP8控制,当引脚输出高电平时,二极管断开,LED灯灭。输出低电平时,二极管导通,LED点亮。

实验步骤:

首先,新建一个工程ledtest,建立新文件init.s,添加到工程。生成编译类型选DebugRel,这是生成带调试信息的文件。然后在init.s开始写代码。同理,再建个main.c,设置同上。

Init.s 是一开始执行的指令,注意不要顶格写,否则当成标识符。我开始就把ENTRY定格写了,结果编译出错,说找不到入口点。

AREA DATA,CODE,READONLY

              ENTRY

             ldr r13,=0x1000  ;堆栈指针sp

             IMPORT LedMain

             b LedMain

             END

 

Main.c是程序主体,代码如下:

//头文件定义

/*端口F寄存器预定义 PORTB  GPB5,6,7,8对应LED1,2,3,4*/

#define rGPFCON         (*(volatile unsigned *)0x56000010)

#define rGPFDAT         (*(volatile unsigned *)0x56000014)

#define rGPFUP           (*(volatile unsigned *)0x56000018)    

 

#define    LED1_ON()   (rGPFDAT &= ~0x20)

#define    LED2_ON()   (rGPFDAT &= ~0x40)

#define    LED3_ON()   (rGPFDAT &= ~0x80)

#define    LED4_ON()   (rGPFDAT &= ~0x100)

#define    LED1_OFF()  (rGPFDAT |= 0x20)

#define    LED2_OFF()  (rGPFDAT |= 0x40)

#define    LED3_OFF()  (rGPFDAT |= 0x80)

#define    LED4_OFF()  (rGPFDAT |= 0x100)

#define time 300

 

void Delay(unsigned int );

void Ledtest();

/***************************************************************************

Function name: LedMain

Parameter    : void

Description  : 初始化系统,端口,并调用跑马灯显示实验函数

Return          : void

Date      :13/2/09

Autor & date :wethty

****************************************************************************/

int LedMain()

{

                                                        /*初始化*/

       rGPFCON=0x15400;                   /*设置I/OGPB5~8为输出属性*/

       rGPFUP=0xfff;             /*禁止GPB端口的上拉*/

       rGPFDAT=0xffff;                //输出全置1

      

       while(1)

       {

              Ledtest();

       }

             

}

 

void Delay(unsigned int x)

{

       unsigned int i,j;

       while(x--)

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

              for(j=0;j<0xff;j++);

             

}

void Ledtest()

{    

              LED1_ON();         //LED点亮/熄灭状态设置

              Delay(time);

              LED2_ON();         //LED点亮/熄灭状态设置

              Delay(time);

              LED3_ON();         //LED点亮/熄灭状态设置

              Delay(time);

              LED4_ON();         //LED点亮/熄灭状态设置

              Delay(time);

              LED1_OFF();        //LED点亮/熄灭状态设置

              Delay(time);

              LED2_OFF();        //LED点亮/熄灭状态设置

              Delay(time);

              LED3_OFF();        //LED点亮/熄灭状态设置

              Delay(time);

              LED4_OFF();

              Delay(time);

              rGPFDAT = 0x00;//全亮

              Delay(time);

              rGPFDAT = 0xfff;// 全灭

              Delay(time);

}

原创粉丝点击