?? led.c
字號:
/* File: LED.C */
/****************************************************************************
*
* STK16XSW.LED
* ============
*
* Low level routines for LED control
*
* TQ-Systems GmbH
* ---------------
* Customer: TQ-Components
* Project : STK16XSW
* Tools : uVision 2.05
*
* Rev: Date: Name: Modification:
* ----+---------+----------------+------------------------------------------
* 100 16.01.01 A. Lichte taken over from STK16X.506
*****************************************************************************/
/****************************************************************************
*
* availability summary
*
* available for Starterkit: STK16X STK16XU
* conformed for Starterkit: STK16X
* available for Modul : TQM164 TQM165 TQM165U TQM166 TQM167
* TQM167LC TQM167U TQM167UL
* conformed for Modul : TQM164 TQM165 TQM165U TQM166 TQM167
* TQM167LC TQM167U TQM167UL
*****************************************************************************/
/*==========================================================================*
* pragmas:
*===========================================================================*/
/*==========================================================================*
* include files (#INCLUDE):
*===========================================================================*/
/*--------------------------------------------------------------------------*
* standard include files:
*---------------------------------------------------------------------------*/
#include <reg167.h> /* special function register */
/*--------------------------------------------------------------------------*
* project specific include files:
*---------------------------------------------------------------------------*/
#include "led.h" /* LED functions */
#include "timer.h" /* timer functions */
/*==========================================================================*
* module internal definitions (#DEFINE):
*===========================================================================*/
/*==========================================================================*
* module internal type declarations (TYPEDEF):
*===========================================================================*/
/*==========================================================================*
* module internal constants (CONST):
*===========================================================================*/
/*==========================================================================*
* extern available constants (CONST):
*===========================================================================*/
/*==========================================================================*
* modul internal variables:
*===========================================================================*/
/*--------------------------------------------------------------------------*
* LED control lines:
*---------------------------------------------------------------------------*/
sbit led_0 = LED_0;
sbit led_0_dir = LED_0_DIR;
sbit led_1 = LED_1;
sbit led_1_dir = LED_1_DIR;
sbit led_2 = LED_2;
sbit led_2_dir = LED_2_DIR;
sbit led_3 = LED_3;
sbit led_3_dir = LED_3_DIR;
sbit led_4 = LED_4;
sbit led_4_dir = LED_4_DIR;
sbit led_5 = LED_5;
sbit led_5_dir = LED_5_DIR;
sbit led_6 = LED_6;
sbit led_6_dir = LED_6_DIR;
sbit led_7 = LED_7;
sbit led_7_dir = LED_7_DIR;
sbit led_8 = LED_8;
sbit led_8_dir = LED_8_DIR;
sbit led_9 = LED_9;
sbit led_9_dir = LED_9_DIR;
sbit led_10 = LED_10;
sbit led_10_dir= LED_10_DIR;
sbit led_11 = LED_11;
sbit led_11_dir= LED_11_DIR;
sbit led_12 = LED_12;
sbit led_12_dir= LED_12_DIR;
sbit led_13 = LED_13;
sbit led_13_dir= LED_13_DIR;
sbit led_14 = LED_14;
sbit led_14_dir= LED_14_DIR;
sbit led_15 = LED_15;
sbit led_15_dir= LED_15_DIR;
/*--------------------------------------------------------------------------*
* current LED state:
*---------------------------------------------------------------------------*/
BYTE led_state[LED_MAX - LED_MIN + 1];
/*--------------------------------------------------------------------------*
* variables for blink controlling:
*---------------------------------------------------------------------------*/
TIMER_COUNTER led_blink_time; /* time base for blink frequency */
TIMER_COUNTER led_last_blink; /* timer counter for LED blinking */
BYTE led_blink_state; /* current blink state (LED_OFF/LED_ON) */
/*==========================================================================*
* globale external available variables (EXTERN):
*===========================================================================*/
/*==========================================================================*
* modul internal functions:
*===========================================================================*/
/*--------------------------------------------------------------------------*
* void led_out()
*---------------------------------------------------------------------------*
* FT: low level LED output routine (LED_OFF/LED_ON/LED_BLINK)
* EP: -
* RV: -
* GP: LED_OFF, LED_ON, LED_BLINK, led_state
*---------------------------------------------------------------------------*/
void led_out()
{
/* port output: */
switch (led_state[0])
{
case LED_OFF : led_0 = !(LED_0_ON); break;
case LED_ON : led_0 = LED_0_ON; break;
case LED_BLINK: led_0 = led_blink_state; break;
}
switch (led_state[1])
{
case LED_OFF : led_1 = !(LED_1_ON); break;
case LED_ON : led_1 = LED_1_ON; break;
case LED_BLINK: led_1 = led_blink_state; break;
}
switch (led_state[2])
{
case LED_OFF : led_2 = !(LED_2_ON); break;
case LED_ON : led_2 = LED_2_ON; break;
case LED_BLINK: led_2 = led_blink_state; break;
}
switch (led_state[3])
{
case LED_OFF : led_3 = !(LED_3_ON); break;
case LED_ON : led_3 = LED_3_ON; break;
case LED_BLINK: led_3 = led_blink_state; break;
}
switch (led_state[4])
{
case LED_OFF : led_4 = !(LED_4_ON); break;
case LED_ON : led_4 = LED_4_ON; break;
case LED_BLINK: led_4 = led_blink_state; break;
}
switch (led_state[5])
{
case LED_OFF : led_5 = !(LED_5_ON); break;
case LED_ON : led_5 = LED_5_ON; break;
case LED_BLINK: led_5 = led_blink_state; break;
}
switch (led_state[6])
{
case LED_OFF : led_6 = !(LED_6_ON); break;
case LED_ON : led_6 = LED_6_ON; break;
case LED_BLINK: led_6 = led_blink_state; break;
}
switch (led_state[7])
{
case LED_OFF : led_7 = !(LED_7_ON); break;
case LED_ON : led_7 = LED_7_ON; break;
case LED_BLINK: led_7 = led_blink_state; break;
}
switch (led_state[8])
{
case LED_OFF : led_8 = !(LED_8_ON); break;
case LED_ON : led_8 = LED_8_ON; break;
case LED_BLINK: led_8 = led_blink_state; break;
}
switch (led_state[9])
{
case LED_OFF : led_9 = !(LED_7_ON); break;
case LED_ON : led_9 = LED_7_ON; break;
case LED_BLINK: led_9 = led_blink_state; break;
}
switch (led_state[10])
{
case LED_OFF : led_10 = !(LED_10_ON); break;
case LED_ON : led_10 = LED_10_ON; break;
case LED_BLINK: led_10 = led_blink_state; break;
}
switch (led_state[11])
{
case LED_OFF : led_11 = !(LED_11_ON); break;
case LED_ON : led_11 = LED_11_ON; break;
case LED_BLINK: led_11 = led_blink_state; break;
}
switch (led_state[12])
{
case LED_OFF : led_12 = !(LED_12_ON); break;
case LED_ON : led_12 = LED_12_ON; break;
case LED_BLINK: led_12 = led_blink_state; break;
}
switch (led_state[13])
{
case LED_OFF : led_13 = !(LED_13_ON); break;
case LED_ON : led_13 = LED_13_ON; break;
case LED_BLINK: led_13 = led_blink_state; break;
}
switch (led_state[14])
{
case LED_OFF : led_14 = !(LED_14_ON); break;
case LED_ON : led_14 = LED_14_ON; break;
case LED_BLINK: led_14 = led_blink_state; break;
}
switch (led_state[15])
{
case LED_OFF : led_15 = !(LED_15_ON); break;
case LED_ON : led_15 = LED_15_ON; break;
case LED_BLINK: led_15 = led_blink_state; break;
}
}
/*==========================================================================*
* extern available functions:
*===========================================================================*/
/*--------------------------------------------------------------------------*
* void led_init()
*---------------------------------------------------------------------------*
* FT: init LED control and data ports
* EP: -
* RV: -
* GP: LED_DIR_OUT, LED_0_ON, LED_1_ON, LED_2_ON, LED_3_ON, LED_4_ON,
* LED_5_ON, LED_6_ON, LED_7_ON
*---------------------------------------------------------------------------*/
void led_init()
{
/* init LED control lines: */
led_0 = !LED_0_ON;
led_0_dir = LED_DIR_OUT;
led_1 = !LED_1_ON;
led_1_dir = LED_DIR_OUT;
led_2 = !LED_2_ON;
led_2_dir = LED_DIR_OUT;
led_3 = !LED_3_ON;
led_3_dir = LED_DIR_OUT;
led_4 = !LED_4_ON;
led_4_dir = LED_DIR_OUT;
led_5 = !LED_5_ON;
led_5_dir = LED_DIR_OUT;
led_6 = !LED_6_ON;
led_6_dir = LED_DIR_OUT;
led_7 = !LED_7_ON;
led_7_dir = LED_DIR_OUT;
led_8 = !LED_8_ON;
led_8_dir = LED_DIR_OUT;
led_9 = !LED_9_ON;
led_9_dir = LED_DIR_OUT;
led_10 = !LED_10_ON;
led_10_dir = LED_DIR_OUT;
led_11 = !LED_11_ON;
led_11_dir = LED_DIR_OUT;
led_12 = !LED_12_ON;
led_12_dir = LED_DIR_OUT;
led_13 = !LED_13_ON;
led_13_dir = LED_DIR_OUT;
led_14 = !LED_14_ON;
led_14_dir = LED_DIR_OUT;
led_15 = !LED_15_ON;
led_15_dir = LED_DIR_OUT;
/* init default LED blink frequency: */
led_blink_time = LED_BLINK_DFLT;
/* clear all LEDs: */
led_clrall();
}
/*--------------------------------------------------------------------------*
* void led_clrall();
*---------------------------------------------------------------------------*
* FT: clear all LEDs
* EP: -
* RW: -
* GP: LED_MIN, LED_MAX, LED_OFF
*---------------------------------------------------------------------------*/
void led_clrall()
{ BYTE i;
/* reset all LEDs: */
for (i=LED_MIN; i<=LED_MAX; i++)
{
led_state[i] = LED_OFF;
}
led_out(); /* call LED output routine */
/* reset blink time base and blink state: */
led_last_blink = timer_get_10ms(TIMER_MIN);
led_blink_state = LED_OFF;
}
/*--------------------------------------------------------------------------*
* void led_idle()
*---------------------------------------------------------------------------*
* FT: idle function for LED handling (blinking etc.)
* EP: -
* RV: -
* GP: -
*---------------------------------------------------------------------------*/
void led_idle()
{
if (timer_get_10ms(led_last_blink) > led_blink_time)
{
led_last_blink = timer_get_10ms(TIMER_MIN);
if (led_blink_state == LED_ON)
{
led_blink_state = LED_OFF;
}
else
{
led_blink_state = LED_ON;
}
led_out();
}
}
/*--------------------------------------------------------------------------*
* BOOL led_set(BYTE led_num, BYTE state);
*---------------------------------------------------------------------------*
* FT: LED controlling
* EP: led_num = number of LED to be set
* state = led state (LED_OFF/LED_ON/LED_BLINK)
* RV: TRUE = function successfully; FALSE = unvalid LED number
* GP: LED_MIN, LED_MAX, led_state
*---------------------------------------------------------------------------*/
BOOL led_set(BYTE led_num, BYTE state)
{
/* check LED number: */
if ((led_num < LED_MIN) || (led_num > LED_MAX)) return (FALSE);
led_state[led_num] = state; /* save LED state */
led_out(); /* call LED output routine */
return (TRUE);
}
/*--------------------------------------------------------------------------*
* BYTE led_get(BYTE led_num);
*---------------------------------------------------------------------------*
* FT: get current LED state
* EP: led_num = number of LED to be detected
* RV: LED state (LED_UNDEF if invalid LED number)
* GP: LED_MIN, LED_MAX, LED_UNDEF, led_state
*---------------------------------------------------------------------------*/
BYTE led_get(BYTE led_num)
{
/* check LED number: */
if ((led_num < LED_MIN) || (led_num > LED_MAX)) return (LED_UNDEF);
return (led_state[led_num]);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -