MINI6410裸机跑马灯程序

本文介绍了一个在Tiny6410平台上实现跑马灯效果的程序。通过控制GPK4至GPK7四个GPIO引脚,分别连接LED1至LED4,实现了循环点亮的效果。程序包括GPIO配置、延时函数及跑马灯实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

   这种经典的程序,当然要存起来,主要涉及寄存器设置的基础


/**********************************************************
*实验要求:   用Tiny6410上的4个LED资源实现跑马灯程序。
*功能描述:   Tiny6410用下面4个引脚连接了LED发光二极管,分别是
*          GPK4--LED1
*          GPK5--LED2
*          GPK6--LED3
*          GPK7--LED4
*          本程序将控制这四个管脚的输出电平,实现跑马灯的效果 
*日    期:   2011-3-10
*作    者:   国嵌
**********************************************************/
#include "def.h"
#include "gpio.h"


#define LED1_ON   ~(1<<4)
#define LED2_ON   ~(1<<5)
#define LED3_ON   ~(1<<6)
#define LED4_ON   ~(1<<7)


#define LED1_OFF   (1<<4)
#define LED2_OFF   (1<<5)
#define LED3_OFF   (1<<6)
#define LED4_OFF   (1<<7)
#define LEDALL_OFF (0xf<<4)


//GPIO
#define GPIO_BASE (0x7F008000)
//oGPIO_REGS类型在 gpio.h 中定义
#define GPIO   (( volatile oGPIO_REGS *)GPIO_BASE)


//函数声明
void delay(int times);
void LedPortInit(void);
void LedRun(void);


/*
 * 程序入口
 * */
int main(void)
{
LedPortInit();
LedRun();
}


/*
 * 延时函数
 * */
void delay(int times)
{
    int i;
    for(;times>0;times--)
      for(i=0;i<3000;i++);
}


/*
 *   初始化连接LED灯的管脚资源
 * @ 通过将GPIO_BASE强制转化为(volatile oGPIO_REGS*)型的指针可以很方便
 * 的访问各个GPIO寄存器的值,这种方法比通过使用寄存器地址的宏定义访问
 * 寄存器单元更加规范和科学。
 * */  
void LedPortInit(void)
{
u32 uConValue;
uConValue = GPIO->rGPIOKCON0;
uConValue &= ~(0xffff<<16);
uConValue |= 0x1111<<16;
GPIO->rGPIOKCON0 = uConValue;
}


/*
 *   跑马灯的实现函数
 * @ 通过控制连接LED的管脚的输出电平点亮和熄灭各个LED。
 * @ 逐个循环点亮各个LED。在每点亮一个后保持一定时间再熄灭它,接着
 * 点亮下一个LED,这样就形成了一个跑马灯的效果。
 * @ 这是一个需要改善的跑马灯程序,想想怎么优化这段代码。
 * */
void LedRun(void)
{
    GPIO->rGPIOKDAT |= LEDALL_OFF;
    while(1)
{
GPIO->rGPIOKDAT &= LED1_ON;
delay(1000);
GPIO->rGPIOKDAT |= LEDALL_OFF;


GPIO->rGPIOKDAT &= LED2_ON;
delay(1000);
GPIO->rGPIOKDAT |= LEDALL_OFF;


GPIO->rGPIOKDAT &= LED3_ON;
delay(1000);
GPIO->rGPIOKDAT |= LEDALL_OFF;


GPIO->rGPIOKDAT &= LED4_ON;
delay(1000);
GPIO->rGPIOKDAT |= LEDALL_OFF;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值