스위치로 LED 켜기 input ()
이 페이지에서는 스위치를 읽기위한 간단한 프로그램으로 신호를 출력하는 것 반대의 입장입니다. 스위치의 상태를 읽기 위한 것으로
명령어는 input (pin name)입니다. 스위치의 입력 또는 센서 출력을 디지탈 형식으로 읽어들일 때 사용합니다.
아래 회로는 스위치를 사용하여 스위치가 눌렸을때 LED를 켜기 위한 회로로서 RB7을 통하여 스위치의 상태를 읽고 RC2를 사용하여 LED를 켜고 끄도록 하였습니다.
이런경우 스위치를 읽는 부분을 디지탈 입력이라고 하며 LED 를 켜고 끄기위한 부분을 디지탈 출력이라고 합니다.
PIC16F18345/687을 사용하기 위한 기본 회로
아래 그림은 위 회로를 빵판에 적용한 것으로 Tact 스위치를 사용(왼쪽 아래)하였고 PIIN B7에 연결하였습니다(pull-up 저항 반드시 필요).
PIC16F18345을 사용하기 위하여 빵판에 꾸민 모양
(그림을 마우스로 클릭하면 간단한 동영상을 볼 수 있다.)
input (pin name)은 pin name으로 신호를 high 또는 low 신호를 받아들여 1 또는 0의 값을 얻을 수 있다. 만약 input (PIN_B7) 이라고 프로그램하면 PIN_B7(RB7) 즉 10번 핀에 인가된 전압이 5 V인경우 input (PIN_B7)의 값은 1로 인식한다. 만약 인가된 전압이 0 V인경우 input (PIN_B7)의 값은 0로 인식한다.
회로에서 스위치를 누르지 않으면 10 번 핀(RB7)에 5 V가 걸리게 되고 입력 명령에 의해 1의 값을 가지게 된다.
bitSW = input (PIN_B7) ; 로 프로그램 한다면 이때 bitSW의 값은 1이 된다.
만약 스위치를 누르면 10 번 핀(RB7)에 0 V가 걸리게 되고 입력 명령에에 의해 0의 값을 가지게 된다.
bitSW = input (PIN_B7) ; 로 프로그램 한다면 이때 bitSW의 값은 0이 된다.
따라서 스위치를 읽고 그 값에 따라 LED를 켜고 끌려면 아래와 같이 프로그램하면 된다.
input (PIN_B7)은 PIN_B7의 상태를 0 또는 1의 Digital 신호로 읽으라는 함수로 그 결과 값은 0 또는 1 이다. 위 프로그램에서는 input 함수를 통하여 스위치의 상태(눌리면 0, 아니면 1)를 읽어 bitSw에 저장을 하고, 그 값이 0 이면(스위치가 눌림) LED를 켜고 (output_high (PIN_C2) ;), 그렇지 않으면 (1 이면) LED를 끄는(output_low (PIN_C2) ;) 프로그램이다. 따라서 위 프로그램은 스위치가 눌리면 LED를 켜고 그렇지 않으면 LED를 끄는 프로그램으로, input () 함수는 output_high (), output_low () 명령어와 함께 같이 매우 중요한 함수이며, MCU 에서 가장 많이 사용하는 명령어이다.
PIC16F18345/687을 사용하기 위한 기본 회로
PIC16F18345을 사용하기 위하여 빵판에 꾸민 모양
(그림을 마우스로 클릭하면 간단한 동영상을 볼 수 있다.)
2. Digital Input 명령어: input () (CCS-C Manual 참고)
- input (pin name): 0 또는 1의 값으로 pin name 신호를 읽음input (pin name)은 pin name으로 신호를 high 또는 low 신호를 받아들여 1 또는 0의 값을 얻을 수 있다. 만약 input (PIN_B7) 이라고 프로그램하면 PIN_B7(RB7) 즉 10번 핀에 인가된 전압이 5 V인경우 input (PIN_B7)의 값은 1로 인식한다. 만약 인가된 전압이 0 V인경우 input (PIN_B7)의 값은 0로 인식한다.
회로에서 스위치를 누르지 않으면 10 번 핀(RB7)에 5 V가 걸리게 되고 입력 명령에 의해 1의 값을 가지게 된다.
bitSW = input (PIN_B7) ; 로 프로그램 한다면 이때 bitSW의 값은 1이 된다.
만약 스위치를 누르면 10 번 핀(RB7)에 0 V가 걸리게 되고 입력 명령에에 의해 0의 값을 가지게 된다.
bitSW = input (PIN_B7) ; 로 프로그램 한다면 이때 bitSW의 값은 0이 된다.
따라서 스위치를 읽고 그 값에 따라 LED를 켜고 끌려면 아래와 같이 프로그램하면 된다.
//*********************************************************************** // 스위치를 읽어 LED 켜기 //*********************************************************************** #include <16f687.h> //* pic16f687을 사용하기 위한 header file #fuses HS //* 4 MHz:XT, 4 MHz 이상: HS #use delay (clock = 20000000) //* 사용한 크리스탈 void main (void) { int1 bitSW ; //* 1 bit bitSW 변수 선언 while (1) { bitSW = input (PIN_B7) ; //* 스위치(PIN_B7) 의 상태 신호를 읽음 if (bitSW == 0) output_high (PIN_C2) ; //* 스위치의 상태가 0(눌렸으면) PIN_C2 출력을 High (5V) 로 else output_low (PIN_C2) ; //* 그렇지 않으면 (스위치를 눌리지 않았으면) PIN_C2 출력을 Low (0V) 로 } } //***********************************************************************
input (PIN_B7)은 PIN_B7의 상태를 0 또는 1의 Digital 신호로 읽으라는 함수로 그 결과 값은 0 또는 1 이다. 위 프로그램에서는 input 함수를 통하여 스위치의 상태(눌리면 0, 아니면 1)를 읽어 bitSw에 저장을 하고, 그 값이 0 이면(스위치가 눌림) LED를 켜고 (output_high (PIN_C2) ;), 그렇지 않으면 (1 이면) LED를 끄는(output_low (PIN_C2) ;) 프로그램이다. 따라서 위 프로그램은 스위치가 눌리면 LED를 켜고 그렇지 않으면 LED를 끄는 프로그램으로, input () 함수는 output_high (), output_low () 명령어와 함께 같이 매우 중요한 함수이며, MCU 에서 가장 많이 사용하는 명령어이다.
< Prev |
TOP
|
Next > |