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 |
'CodeVision 용 소스' 카테고리의 다른 글
PORTA에 연결된 LED 시프트 (0) | 2011.06.06 |
---|---|
4개의 키를 각각 누를 때마다 누른 횟수 증가 하는 예제 (0) | 2011.05.11 |
Character LCD Control (0) | 2011.02.18 |
LED 순차 소등 하기 PORTC.0 => PORTC.7 순서로 (0) | 2011.02.06 |
LED 순차 점등 하기 PORTC.0 => PORTC.7 순서로 (2) | 2011.02.05 |