📄 switch8.c
字号:
/* File: Switch8.C */
/****************************************************************************
*
* STK16XSW.SWITCH8.MAIN
* =====================
*
* main function for STK16xU DIP switch demo,
* reads DIP switch and shows the state of the switches on the LCD;
* each switch also turns a LED on or off.
*
* TQ-Systems GmbH
* ----------------
* Customer: TQ-Components
* Project : STK16XSW
* Tools : uVision 2.05
*
* Rev: Date: Name: Modification:
* ----+---------+----------------+------------------------------------------
* 100 27.05.01 K. Z鰌f taken over from STK16X.506
*****************************************************************************/
/****************************************************************************
*
* availability summary
*
* available for Starterkit: STK16xU
* conformed for Starterkit: STK16xU
* available for Module : TQM167UL TQM167U TQM167UE
*
* conformed for Module : TQM167UL TQM167U TQM167UE
*
*****************************************************************************/
/*==========================================================================*
* include files (#INCLUDE):
*===========================================================================*/
/*--------------------------------------------------------------------------*
* standard include files:
*---------------------------------------------------------------------------*/
#include <stdio.h> /* standard I/O functions */
#include <reg167.h> /* special function register */
/*--------------------------------------------------------------------------*
* project specific include files:
*---------------------------------------------------------------------------*/
#include "timer.h"
#include "lcd_u.h"
#include "led.h"
#include "dpswtch8.h" /* switch function */
#include "stkreg_u.h" /* register for Starterkit */
/*==========================================================================*
* module internal definitions (#DEFINE):
*===========================================================================*/
/*==========================================================================*
* module internal type declarations (TYPEDEF):
*===========================================================================*/
/*==========================================================================*
* module internal constants (CONST):
*===========================================================================*/
/*==========================================================================*
* extern available constants (CONST):
*===========================================================================*/
/*==========================================================================*
* modul internal variables:
*===========================================================================*/
/*==========================================================================*
* globale external available variables (EXTERN):
*===========================================================================*/
/*==========================================================================*
* modul internal functions:
*===========================================================================*/
/*--------------------------------------------------------------------------*
* void set_leds(void)
*---------------------------------------------------------------------------*
* FT: show state of SWITCH with LEDs
* EP: -
* RV: -
* GP: -
*---------------------------------------------------------------------------*/
void set_leds(BYTE inputs)
{
led_idle(); /* make LED to be blinking (to be) */
/* called as often as possible) */
if ((inputs & 0x01) != 0) /* SWITCH 1: turn LED 4 on/off */
led_set(4, LED_BLINK);
else
led_set(4, LED_OFF);
if ((inputs & 0x02) != 0) /* SWITCH 2: turn LED 5 on/off */
led_set(5, LED_BLINK);
else
led_set(5, LED_OFF);
if ((inputs & 0x04) != 0) /* SWITCH 3: turn LED 6 on/off */
led_set(6, LED_BLINK);
else
led_set(6, LED_OFF);
if ((inputs&0x08)!=0) /* SWITCH 4: turn LED 7 on/off */
led_set(7, LED_BLINK);
else
led_set(7, LED_OFF);
if ((inputs&0x10)!=0) /* SWITCH 5: turn LED 12 on/off */
led_set(12, LED_BLINK);
else
led_set(12, LED_OFF);
if ((inputs&0x20)!=0) /* SWITCH 6: turn LED 13 on/off */
led_set(13, LED_BLINK);
else
led_set(13, LED_OFF);
if ((inputs&0x40)!=0) /* SWITCH 7: turn LED 14 on/off */
led_set(14, LED_BLINK);
else
led_set(14, LED_OFF);
if ((inputs&0x80)!=0) /* SWITCH 8: turn LED 15 on/off */
led_set(15, LED_BLINK);
else
led_set(15, LED_OFF);
}
/*==========================================================================*
* extern available functions:
*===========================================================================*/
/*--------------------------------------------------------------------------*
* void main(void)
*---------------------------------------------------------------------------*
* FT: read analog input-channel and write value to LCD
* show value as LED-bar
* EP: -
* RV: -
* GP: -
*---------------------------------------------------------------------------*/
void main(void)
{ int i;
BYTE sw_inputs; /* state of DIP-SWITCH */
char txt[17]; /* textstring for output on LCD */
TIMER_COUNTER t_base;
BOOL blink_state;
timer_init(NULL); /* init timer modul */
stkreg_init(); /* init register for LCD */
lcd_init(); /* init LCD */
led_init(); /* init LED control */
lcd_center(0, "DIP-switch demo");
/* start-up LED demo: */
for (i=0; i<=LED_MAX; i++)
{
led_set(i, LED_ON);
timer_delay_10ms(5);
}
for (i=0; i<=LED_MAX; i++)
{
led_set(i, LED_OFF);
timer_delay_10ms(5);
}
dpswtch4_init(); /* init DIP-SWITCH input */
/* overwrites LED control lines of */
/* LED 12 .. LED 15 (=> now inputs) */
/* wait for switch to be changed: */
lcd_center(1, "Set the switch!");
sw_inputs = dpswtch4_read(); /* read DIP switch */
blink_state = TRUE;
t_base = timer_get_10ms(TIMER_MIN);
while(sw_inputs == dpswtch4_read())
{
if (timer_get_10ms(t_base) > 50)
{
t_base = timer_get_10ms(TIMER_MIN);
if (blink_state == TRUE)
{
lcd_center(1, "");
blink_state = FALSE;
}
else
{
lcd_center(1, "Set the switch!");
blink_state = TRUE;
}
}
}
lcd_clr();
lcd_center(0, "State of switch:");
/* endless main loop: */
while(1)
{
sw_inputs = dpswtch4_read(); /* read DIP switch */
sprintf(txt, "%d%d%d%d%d%d%d%d", /* generate tetxstring for output */
(sw_inputs & 0x01)!=0, /* SWITCH 1 */
(sw_inputs & 0x02)!=0, /* SWITCH 2 */
(sw_inputs & 0x04)!=0, /* SWITCH 3 */
(sw_inputs & 0x08)!=0, /* SWITCH 4 */
(sw_inputs & 0x10)!=0, /* SWITCH 5 */
(sw_inputs & 0x20)!=0, /* SWITCH 6 */
(sw_inputs & 0x40)!=0, /* SWITCH 7 */
(sw_inputs & 0x80)!=0); /* SWITCH 8 */
lcd_center(1, txt); /* show state of SWITCH on display */
set_leds(sw_inputs); /* show state of SWITCH with LEDs */
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -