⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 led.c

📁 适合学习HCS12系列单片机的初学者使用。 我的环境是DP256
💻 C
字号:
//[LED.c]小灯驱动----------------------------------------------------------*
//本文件包含:                                                              *
//    (1)LEDInit:定义控制小灯的MCU的I/O引脚为输出                          *
//    (2)LED_L_A:驱动小灯"亮"、"暗"                                        *
//硬件连接:                                                                *
//    (1)本处的小灯是一个发光二极管,由MCU的I/O引脚控制                     *
//    (2)控制引脚=高电平时,小灯"暗";反之,小灯"亮"                          *
//-------------------------------------------------------------------------*

//头文件
#include "LED.h"    //小灯驱动头文件

//LEDInit:定义控制小灯的MCU引脚为输出--------------------------------------*
//功  能:定义控制小灯的MCU引脚为输出,并使小灯初始为暗                      *
//参  数:无                                                                *
//返  回:无                                                                *
//-------------------------------------------------------------------------*
void LEDInit(void) 
{
    Light_D |= 0xff;    //令小灯引脚为输出
    Light_P |= 0x00;
    Delay(5000);
    Light_P |= 0xff;    //初始时,小灯"暗"
}

const INT8U LED_Table[]= 
{
    '1',0xfe,'2',0xfc,'3',0xf8,'0',0x7c,
    '4',0xf0,'5',0xe0,'6',0xc0,'N','N',
    '7',0x80,'8',0x00,'9',0x7e, //'C',
    //0xE7,'*',0xD7,'0',0xB7,'#',0x77,'D',
    0x00
};

INT8U LED_def(INT8U fv)
{
    INT8U KeyPress;
    INT8U i;
    INT8U j;
    i = 0;
    while (1)
    {
        j = LED_Table[i];
        //与0(定义表结束标志)相比较
        if (j == 0)                          //=0,即表中无次定义值
        {
            KeyPress = 0x55;                 //返回0xFF
            break;
        }

        else
        {
            //与键值相比较
            if(j == fv)                //找到
            {
                KeyPress = LED_Table[i+1];    //取键定义值
                break;
            }
            else
            {
                i += 2;                      //指向下一个键值,继续判断
            }
        }
    }
    return KeyPress;                         //返回键定义值
}

void LED_B (INT8U value) 
{
     Light_P = value;
}
  
//LED_L_A:驱动小灯"亮"、"暗"-----------------------------------------------*
//功  能:根据flag的值控制小灯的亮和暗                                      *
//参  数:flag(flag='A',小灯暗;flag='L',小灯亮)                             *
//返  回:无                                                                *
//-------------------------------------------------------------------------*
void LED_L_A(INT8U flag,INT16S num)
{
    if (flag == 'A')
        Light_P |= 1<<num;       //小灯"暗"
    else if (flag == 'L')
        Light_P &= ~(1<<num);    //小灯"亮"
}

void LED_T(INT8U dir)              //循环亮灯,左或者右
{       
        INT16S n;
        
        switch(dir) 
        {
          case 'L':
          case 'l':
          for(n=0;n<8;n++)
          {
          
            LED_L_A('L',n);    //小灯亮
            Delay(500);      //延时

            LED_L_A('A',n);    //小灯暗
            Delay(500);      //延时
        
          }
          break;
          
          case 'R':
          case 'r':
          for(n=7;n>=0;n--)
          {
          
            LED_L_A('L',n);    //小灯亮
            Delay(500);      //延时

            LED_L_A('A',n);    //小灯暗
            Delay(500);      //延时
        
          }
          break;
          
        }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -