Switch 4개의 상태에 따른 LED ON/OFF 변화

 

PE7에 연결된 SW1을 누르면 PC0, PC2, PC4, PC6 에 연결된 LED가 ON 되고,

PE6에 연결된 SW2을 누르면 PC1, PC3, PC5, PC7 에 연결된 LED가 ON 되고,

PE5에 연결된 SW3을 누르면 모든 LED가 OFF 되고,

PE4에 연결된 SW4을 누르면 모든 LED 가 ON 되는 예제입니다.

 

 

 

 


< PE4 PE7에 연결된 SW1을 누르면 PC0, PC2, PC4, PC6 에 연결된 LED가 ON >

 

 

 

< PE6에 연결된 SW2을 누르면 PC1, PC3, PC5, PC7 에 연결된 LED가 ON >

 

 

 

 

< PE5에 연결된 SW3을 누르면 모든 LED가 OFF >

 

 

 

 

< PE4에 연결된 SW4을 누르면 모든 LED 가 ON >

 

 

 

 

< 시뮬레이션 화면 >

 

 

 

 

 

 

 

전체 소스 Codevision 용

 

 

   

/*********************************************

LED Control & Switch Input

 

PORTC ==> LED

PORTE.7 ==> Switch 1

PORTE.6 ==> Switch 2

PORTE.5 ==> Switch 3

PORTE.4 ==> Switch 4

 

PE7에 연결된 SW1을 누르면 PC0, PC2, PC4, PC6 에 연결된 LED가 ON 되고,

PE6에 연결된 SW2을 누르면 PC1, PC3, PC5, PC7 에 연결된 LED가 ON 되고,

PE5에 연결된 SW3을 누르면 모든 LED가 OFF 되고,

PE4에 연결된 SW4을 누르면 모든 LED 가 ON 되는 예제입니다.

 

 

 

Main Clock : 8Mhz

 

 

 

 

Tools : Codevision

http://watsim.tistory.com

*********************************************/

 

 

 

typedef signed int INT16S;

typedef signed int UINT16;

typedef unsigned int INT16US;

typedef unsigned char INT8US;

typedef unsigned int WORD;

typedef unsigned char UINT8;

typedef unsigned char BOOL;

typedef unsigned char BYTE;

 

 

#define SetBit(PORT,ibit)        (PORT=PORT| ((1<<ibit)))

#define ClearBit(PORT, ibit)    (PORT=PORT&(~(1<<ibit)))

 

#include <mega128.h>

 

void main(void)

{

unsigned char key;

 

DDRE=0x00;     // PE4-PE7 INPUT

DDRC=0xFF;     // LED OUTPUT

PORTC=0xFF; //LED OFF

 

while(1)

{

     key = PINE & 0xFF;

switch(key)

{

case 0b11100000 : //SW1이 눌리면 LED모두 ON

PORTC=0x00;

break;

 

case 0b11010000 : //SW2가 눌리면 LED모두 OFF

PORTC=0xff;

break;

 

case 0b10110000 : //SW3이 눌리면 짝수번째 LED ON

PORTC=0b01010101;

break;

 

case 0b01110000 : //SW4가 눌리면 홀수번째 LED ON

PORTC=0b10101010;

break;

 

default:

 

break;

}

 

}

}

 

 

  

 

주요 부품

ATMEGA128 - 1EA

LED – 8EA

POWER 5V/1A

 

Posted by WhiteAT
,