#if 1
/*===========================================================================================
Project : 스위치에 의한 LED ON/OFF Test
Version : LK-PIC16F18F DEV & TRAINING
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