#if 1
/*===========================================================================================
Project : ½ºÀ§Ä¡¿¡ ÀÇÇÑ LED ON/OFF Test
Version : LK-TB-PIC16F18F
Date    : 2020-08-31
Author  : Kyung Nam Lee
Company : LKEMBEDDED 
Compiler: MPLAB+Hitech-C
Comment : ½ºÀ§Ä¡¸¦ ´­·¶À»¶§ LED°¡ ON/OFF µ¿ÀÛÀ» 0.5ÃÊ¸¶´Ù ±¸ÇöµÇ´Â Å×½ºÆ® ÄÚµåÀÌ´Ù.
===========================================================================================*/
#include <pic18f452.h>
#include <stdio.h>
#define _XTAL_FREQ 16000000
#define XTAL 16000000	// crystal frequency - 4MHz
#include <htc.h>	// Required to interface with delay routines
/*Refer confguration bits for PIC18F452
https://gputils.sourceforge.io/html-help/PIC18F452-conf.html
*/
#pragma config OSC = HSPLL  // Oscillator Selection bits (HS oscillator)
#pragma config WDT = OFF // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRT = OFF // Power-up Timer Enable bit (PWRT enabled)
#pragma config BOR = OFF // Brown-out Reset Enable bit (BOR enabled)
#pragma config LVP = OFF  // Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit
                          // (RB3 is digital I/O, HV on MCLR must be used for programming)
#define LED1 0X01
#define LED2 0X02
#define LED3 0X04
#define SW 0X01
#define FND_a (0X01<<1)
#define FND_b (0X01<<2)
#define FND_c (0X01<<3)
#define FND_d (0X01<<4)
#define FND_e (0X01<<5)
#define FND_f (0X01<<6)
#define FND_g (0X01<<7)
/*ÄÚµå Å×½ºÆ® 74hc574 QÇÉÀ¸·Î Ãâ·Â °ªÀÌ ÀúÀåµÇ°í ÀÖÀ½À» ÇÁ·Î±×·¥¸Ó´Â ÀÎÁöÇÏ¿©¾ß ÇÑ´Ù.*/
void DelayMs(unsigned int ms)
{
	unsigned char i;
	do {
		i = 4;
		do {
			__delay_us(250);
		} while(--i);
	} while(--ms);
}
void SysInit()
{
	//-- ÀÔÃâ·Â ·¹Áö½ºÅÍ ¼³Á¤ ÃÊ±âÈ­------------------
	TRISC &= ~(LED1 | LED2 | LED3);
	TRISB = (FND_a|FND_b|FND_c|FND_d|FND_e|FND_f|FND_g|SW);
}

void main()
{
	SysInit();	//--- ½Ã½ºÅÛ ¼³Á¤ ÃÊ±âÈ­ ÇÔ¼ö 
	while (1)	//---Endless Loop
	{
		if (!(PORTB & SW))
		{
			PORTC = (LED1 | LED2 | LED3);
			DelayMs(500);
			PORTC &= ~(LED1 | LED2 | LED3);
			DelayMs(500);
		}
		else PORTC &= ~(LED1 | LED2 | LED3);
	}
}
#endif