I/O (GPIO) 제어 I/0 제어 ATmega128의 I/O 구성및특징 I/O PORT 구성 8비트 / 양방향 / 범용 / 병렬 I/O포트 (PORT A ~PORT F) 6개 5비트 / 양방향 / 범용 / 병렬 I/O포트 (PORT G) 1개 I/O PORT 특징

Similar documents
<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

ATmega128

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

lecture4(6.범용IO).hwp

Microsoft PowerPoint - 제3장 GPIO 입출력 제어 (HBE-MCU-Multi AVR)

목차 1. 키패드 (KeyPAD) 2. KeyPAD 를이용한비밀번호입력기

Microsoft PowerPoint - AVR100%(1).ppt

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

<BDC7C7E83120B0E1B0FABAB8B0EDBCAD202832C1D6C2F7292E687770>

인터럽트 (Interrupt) 범용입출력포트에서입출력의내용을처리하기위해매번입출력을요구하는플래그를검사하는일 (Pollong) 에대하여마이크로컨트롤러에게는상당한시간을소비하게만든다. 인터럽트란 CPU가현재처리하고있는일보다급하게처리해야할사건이발생했을때, 현재수행중인일을중단하고

슬라이드 1

Microsoft PowerPoint - es-arduino-lecture-03

가. 도트매트릭스제어하기 단일 LED와는다르게도트매트릭스를구동시는구동전류가프로세서에서출력되는전류보다사용량을더많이필요하기때문에 TTL 계열의 IC로구동시키기에는무리가따른다. 이러한문제를해결하기위해서사용전압, 전류정격이높은달링턴트랜지스터가어레이형태로들어있는 ULN2803을

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A634C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

인터럽트 * 인터럽트처리메커니즘 ATmega128 인터럽트 2

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202831C1D6C2F72C2032C1D6C2F729>

Chapter. 14 DAC 를이용한 LED 밝기제어 HBE-MCU-Multi AVR Jaeheung, Lee

Section 03 인터럽트활성화와인터럽트서비스루틴연결 34/82 장치에대한인터럽트설정과활성화 내부장치에대한특수레지스터존재 장치의특성을반영한동작설정용또는상태관찰용비트로구성 인터럽트사건의발생패턴을설정해야함 인터럽트활성화비트를 1 로셋하여, 인터럽트발생을허락» 전제, 전역

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

Microsoft Word doc

<4D F736F F D20BDBAC5D7C7CE20B6F3C0CEC6AEB7B9C0CCBCADB0ADC1C2202D203420C7C1B7CEB1D7B7A1B9D62E646F63>

API 매뉴얼

PowerPoint 프레젠테이션

정보보안 개론과 실습:네트워크

2009년2학기 임베디드시스템 응용

목차 Section 2. Oscillator Section 3. Reset Section 4. Architecture Section 5. CPU and ALU Section 6. Memory organization Section 7. Data EEPROM Section

목차 1. A/D 컨버터개요 2. ATMega128 의 A/D 컨버터기능 3. A/D 컨버터로광센서읽기

Microsoft PowerPoint - ccs33_bios_PRD.ppt [호환 모드]

WATAVR128_manual.hwp

1. 제품소개 1.1 제품소개 < 그림 1.1> 도트매트릭스모듈 하드웨어제작에소요되는시간을단축시켜프로그래밍연구개발및학습효과를극대화시켜주는 16x16 도트매트릭스모듈입니다. 또한당사 AVR, PIC, ARM(STM32F) 개발보드와 1P 점퍼클립케이블을이용하여연동이가능하

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

API 매뉴얼

UART.h #ifndef _UART_H_ #define _UART_H_ #define DIR_TXD #define DIR_RXD sbi(portd,4) cbi(portd,4) #define CPU_CLOCK_HZ UL UART PORT1 void UAR

// 변수선언 unsigned char i; unsigned char FONT[]={0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xD8, 0x80, 0x98}; //PORTA 를출력으로설정하고초기값은모두 0 PORTA = 0x00; DD

Microsoft PowerPoint - 제5장 인터럽트 (HBE-MCU-Multi AVR).ppt [호환 모드]

PowerPoint 프레젠테이션

Microsoft Word - AM-2560PRO_V01 메뉴얼.doc

11 강 AVR board & download cable 2009 년도 1 학기 센서개론 Mechatronics Lab 센서개론

HBE-MCU-Multi 로배우는 마이크로컨트롤러 (AVR 편 ) 마이크로컨트롤러기능 제 6 장타이머와카운터

슬라이드 1

KEY 디바이스 드라이버

1

Microsoft Word - PLC제어응용-2차시.doc

2주차: 입출력 제어 복습

목차 1. ATMega128의외부메모리인터페이스 2. TEXT LCD 3. TEXT LCD에글자쓰기 4. SRAM 5. 외부메모리인터페이스에 SRAM붙이기

Microsoft PowerPoint - chap06-2pointer.ppt

Microsoft Word - PEB08_USER_GUIDE.doc

Microsoft PowerPoint - ch11_reg.pptx

[8051] 강의자료.PDF

2. GCC Assembler와 AVR Assembler의차이 A. GCC Assembler 를사용하는경우 i. Assembly Language Program은.S Extension 을갖는다. ii. C Language Program은.c Extension 을갖는다.

PowerPoint 프레젠테이션

UART Controller 구현

M16_32KIT_Manual.hwp

PowerPoint 프레젠테이션

Microsoft Word ARM_ver2_0a.docx

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

AVR Atmega128

Microsoft PowerPoint - polling.pptx

Microsoft PowerPoint - Chapter 8_USART Serial Communication

목차 1. UART와 RS232 개요 2. ATMega128의 USART 포트 3. UART로 Hello 보내기 4. UART로 PC와데이터주고받기

<BDC7C7E83520BFB9BAF1BAB8B0EDBCAD2E687770>

ADP-2480

(MHT-SB112\273\347\276\347\274\255.hwp)

<4D F736F F D20C0DBC7B0C6ED5FBDBAC5D7C7CE20B6F3C0CEC6AEB7B9C0CCBCAD20B0B3B9DF2E646F63>

<4D F736F F F696E74202D2037C0E55FC0CEC5CDB7B4C6AEC0C720B5BFC0DB2E707074>

뉴티씨 (NEWTC) ATmega8 교육용모듈 (Model : AM-8PL ) 메뉴얼 ( 주 ) 뉴티씨 ( NEWTC ) 1. ATmega8 모듈 (AM-8PL) 소개 ATmega8 칩을

슬라이드 1

C. KHU-EE xmega Board 에서는 Button 을 2 개만사용하기때문에 GPIO_PUSH_BUTTON_2 과 GPIO_PUSH_BUTTON_3 define 을 Comment 처리 한다. D. AT45DBX 도사용하지않기때문에 Comment 처리한다. E.

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

AVR ATmega128 소개 마이크로컨트롤러 AVR ATmega128 저자 : 이상설 소속 : 원광대학교전기 정보통신공학부

AVR128 자료.hwp

PowerPoint Presentation

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

지도상 유의점 m 학생들이 어려워하는 낱말이 있으므로 자세히 설명해주도록 한다. m 버튼을 무리하게 조작하면 고장이 날 위험이 있으므로 수업 시작 부분에서 주의를 준다. m 활동지를 보고 어려워하는 학생에게는 영상자료를 접속하도록 안내한다. 평가 평가 유형 자기 평가

CHAPTER 2 마이크로컨트롤러구조이해하기 가. ATmega128 기능 나. CRX10 구조

Status S/N TITLE: Education Rev V0.1 Date 2012 /04/18 Doc LK임베디드 AVR-ATmega2560 확장형개발보드매뉴얼 LK Development Team AVR ATmega2560 확장형개발보드매뉴얼 (P/N: LK-AVR2

Formatvorlage für Arbeitsanweisungen

Microsoft PowerPoint - ccs33_bios_com1_semaphore.ppt [호환 모드]

Microsoft Word - MAI-ISP-STK500_매뉴얼_Ver25.docx

KXATUHEFFPYO.hwp

<BDC7C7E83120BFB9BAF1BAB8B0EDBCAD2E687770>

2002년 2학기 자료구조

개요 데이터를저장할수있는기억소자 여러개의플립플롭으로구성. 메모리는단순데이터를저장하는소자이지만, 레지스터는저장뿐아니라저장된데이터를처리할수있는기능도있다. 카운터도클록펄스가입력되면미리정해진순서에따라상태가변하는레지스터이다. 카운터와레지스터의차이점 데이터를저장또는이동하는목적으로

Page 2 of 18 Absolute Maximum Ratings Absolute Maximum Rating 값을초과하는조건에서 DTPM을동작시킬경우치명적인손상을 가할수있습니다. Parameter Symbol Conditions min Typ Max Unit Supp

Microsoft PowerPoint - 제7장 타이머와 PWM (HBE-MCU-Multi AVR).ppt [호환 모드]

Page 2 of 21 Absolute Maximum Ratings Absolute Maximum Rating 값을초과하는조건에서 DTPML을동작시킬경우치명적인손상을 가할수있습니다. Parameter Symbol Conditions min Typ Max Unit Sup

(Asynchronous Mode) ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 -

Section 03 트랜지스터를이용한스위칭동작 16/45 트랜지스터의직류특성 활성 직류상황에서전류 I C 는전류 I B 보다 h FE 배만큼더많은전류가흐름» 베이스와이미터가순방향으로바이어스» 컬렉터와베이스가역방향으로바이어스 차단 만일 I B 가 0[A] 이면컬렉터전류

Formatvorlage für Arbeitsanweisungen

PowerPoint 프레젠테이션

ZPONZCMGOVQK.hwp

IoT FND8 7-SEGMENT api

슬라이드 1

설계란 무엇인가?

정보보안 개론과 실습:네트워크

11장 포인터

00목차

(291)본문7

Transcription:

AVR - Chapter 5 류대우 davidryu@ewtc.co.kr

I/O (GPIO) 제어 I/0 제어 ATmega128의 I/O 구성및특징 I/O PORT 구성 8비트 / 양방향 / 범용 / 병렬 I/O포트 (PORT A ~PORT F) 6개 5비트 / 양방향 / 범용 / 병렬 I/O포트 (PORT G) 1개 I/O PORT 특징 Read-modify-Write 동작최대구동전류 40mA 풀업저항 (Pull-up resistor) 설정가능

I/O (GPIO) 제어 I/O 관련레지스터 각포트에는 3 개의 I/O 레지스터 (DDRx, PORTx, PINx) 영 역을가짐. DDRA(Data Directio Register) PORT A 의입 / 출력방향설정을위한레지스터 레지스터를 SET(1) 하면출력으로 CLEAR(0) 하면입력으로 설정

I/O (GPIO) 제어 PORTA(Data Register) 출력용데이터값을위한레지스터 PINA(Iput Pis Address) 입력핀에해당하는레지스터로서입력된값을표시

I/O (GPIO) 제어 SFIOR(Special Fuctio I/O Register) Bit2. PUD(Pull-up Disable) 모든포트의풀업저항설정을위한레지스터 1= Disable / 0=Eable

PORT 입 / 출력제어 PORT 출력제어 DDRx 레지스터의각비트를 1 로셋트하면해당포트의핀이 출력핀으로설정 PORTx 레지스터의각비트를 1 로셋트하면해당포트의핀 이 1 값을출력 PORTx 레지스터의각비트를 0 로셋트하면해당포트의핀 이 0 값을출력한다.

I/O 부가기능 I/O 포트의각핀들은대부분기본적인범용 I/O 기능 이외에부수적인기능을가지고있다. PORT A 시분할다중화된데이터버스 하위어드레스버스 PORT B 타이머 / 카운터 SPI PORT C 상위어드레스버스

I/O 부가기능 PORT D 타이머 / 카운터 외부인터럽트 USART1 TWI 직렬통신 PORT E 타이머카운터 외부인터럽트 USART0

I/O 부가기능 PORT F A/D 컨버터 JTAG PORT G 타이머 / 카운터 외부메모리인터페이스

PORT 의기본설정 void port_iit(void) { PORTA = 0x00; DDRA = 0x00; // 입력모드로설정 PORTB = 0x00; DDRB = 0xFF; // 출력모드로설정 PORTC = 0x00; //m103 output oly DDRC = 0x00; PORTD = 0xFF; //PORTD의기본값을 1로출력 DDRD = 0x00; PORTE = 0x00; DDRE = 0x00; PORTF = 0x0F; // 상위 (4~7) 은입력으로, 하위 (0~3) 까지는출력으로설정 DDRF = 0x0F; // 상위 (4~7) 은 0으로, 하위 (0~3) 까지는 1로설정 PORTG = 0x00; DDRG = 0x00; }

외부포트의초기화 void ktm128_iit(void) { EX_SS_DATA=0x00; EX_SS_SEL=0x00; EX_DM_SEL=0x00; EX_DM_DATA=0x00; EX_LED=0x00; EX_STEPPING=0x00; } 위초기화는써줘야한다.

사용자초기화헤더파일 -1 #ifdef KTM128 H #defie KTM128 H #defie EX_LCD_DATA #defie EX_LCD_CONTROL #defie EX_SS_DATA #defie EX_SS_SEL #defie EX_DM_SEL #defie EX_DM_DATA #defie EX_LED #defie EX_STEPPING #defie EX_DCMOTOR #defie EX_SERVO (*(volatile usiged char *)0x8000) (*(volatile usiged char *)0x8001) (*(volatile usiged char *)0x8002) (*(volatile usiged char *)0x8003) (*(volatile usiged it *)0x8004) (*(volatile usiged it *)0x8006) (*(volatile usiged char *)0x8008) (*(volatile usiged char *)0x8009) (*(volatile usiged char *)0x800A) (*(volatile usiged char *)0x800B)

사용자초기화헤더파일 -2 void ktm128_iit(void) { EX_SS_DATA=0x00; EX_SS_SEL=0x00; EX_DM_SEL=0x00; EX_DM_DATA=0x00; EX_LED=0x00; EX_STEPPING=0x00; } void s_delay(it ct){ it i, j; for(i=0; i < ct;i++){ for(j=0; j < 265; j++) ; } }

사용자초기화헤더파일 -3 void delay(it ct){ it i, j; for(i=0; i < ct;i++){ for(j=0; j < 1000; j++) ; } } void l_delay(it ct){ it i, j; for(i=0; i < ct;i++){ for(j=0; j < 2650; j++) ; } } #edif KTM128 H

사용자초기화헤더파일 -4 파일을 KTM128.h 로저장한다. 저장위치 ICC AVR 이설치되어있는폴더의하위폴더인 iclude 폴 더에설치 ( 복사 ) ICCAVR 6.0 기본설치시 : C:\icc\iclude ICCAVR 7.0 기본설치시 : C:\iccv7avr\iclude 이후부터새프로젝트를만들면 #iclude <ktm128.h> 쓰면된다.

LED LED( 발광다이오드 ) 전압이인가되면회로가통하고, 역방향전압이인가되면회를차단하는특징을가짐.

LED LED 양단전압은다이오드순방향전압 (Vd) 인 0.7[V] 가걸리게된다. LED 는 13.03[mA] 에비례하는밝기로불이켜진다.

PORTD 의 LED 제어 LED 회로도 1 일때 LED 가점등함.

PORTD 의 LED 제어

PORTD 의 LED 제어 void mai(void) { iit_devices(); } while(1){ } PORTD = 0x80; delay(100); PORTD = 0x40; delay(100);

4 x 4 매트릭스 LED 4 x 4 매트릭스 LED 제작하기.(0 일때점등 ) A733YC 형이 Low Active

4 x 4 매트릭스 LED LED 배열 PORTx 4 PORTx 6 PORTx 5 PORTx 7 PORTx 0 PORTx 1 PORTx 2 PORTx 3

4 x 4 매트릭스 LED LED 배열 PORTx 4 PORTx 6 PORTx 5 PORTx 7 LED 점등위치 PORTx 0 PORTx 1 PORTx 2 PORTx 3

4 x 4 매트릭스 LED LED 배열 PORTx 4 PORTx 6 LED 점등을위한값설정 PORTx 5 PORTx 7 PORTx 0 PORTx 1 PORTx 2 PORTx 3 1 0 1 1 1 0 1 1

4 x 4 매트릭스 LED 0x D D 0b 1 1 0 1 1 1 0 1

4 x 4 매트릭스 LED LED 배열 (Low Active 가아닐때 ) PORTx 4 PORTx 6 LED 점등을위한값설정 PORTx 5 PORTx 7 PORTx 0 PORTx 1 PORTx 2 PORTx 3 0 1 0 0 0 1 0 0

4 x 4 매트릭스 LED 0x 2 2 0b 0 0 1 0 0 0 1 0

4 x 4 매트릭스 LED 제어 void mai(void) { iit_devices(); } while(1){ } PORTF = 0xDD;

FND 정식명칭 7-Segmet LED 7-segmet Display Multi- Segmeted Display 숫자표시기줄여서통상 FND 라고부른다

FND 제어

FND 기본회로도 (1)

FND 기본회로도 (2) PORTF.0 PORTF.1 PORTF.2 PORTF.3 PORTF.4 PORTF.5 PORTF.6 Vcc Gd PORTF.7

FND 제어

FND 제어 cost char digit[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7c,0x07,0x 7f,0x67}; void dis(usiged char um) { PORTF =~digit[um]; //NOT게이트 }

FND 매트릭스제어 FND 회로도

FND 매트릭스제어 cost char digit[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7c,0x07,0x 7f,0x67}; void rusevesegmet(char i,char um) { } EX_SS_SEL = 0x0f; EX_SS_DATA = digit[um]; EX_SS_SEL = ~(0x01 << i);

도트매트릭스

도트매트릭스 크기 10X10, LED : 100 개사용 LED 접속방식

도트매트릭스 Data 신호에첫째줄의데이터를출력하고그줄의 Sel1 신호를 0으로만들어주면첫째줄만켜지게된다. 다음에두번째줄의데이터를출력하고 Sel2 신호를 0으로만들면두번째줄만켜지게된다. 10개를순서대로빠른속도로켜면동시에켜진것으로보이게된다.

도트매트릭스 도트메트릭스출력할데이터만드는방법 도트메트릭스한줄출력 출력값 0x1C6

도트매트릭스 도트메트릭스셀렉트 ( 하위 ) 출력메모리번지 : 0x8004 (Write 전용 ) 7 6 5 4 3 2 1 0 Sel[7] Sel[6] Sel[5] Sel[4] Sel[3] Sel[2] Sel[1] Sel[0] 도트메트릭스셀렉트 ( 상위 ) 출력메모리번지 : 0x8005 (Write 전용 ) 7 6 5 4 3 2 1 0 Sel[9] Sel[8] Sel[] 도트메트릭스 번째줄선택 (H:Eable, L:Disable)

도트매트릭스 도트메트릭스데이터 ( 하위 ) 출력메모리번지 : 0x8006 (Write 전용 ) 7 6 5 4 3 2 1 0 Data[7] Data[6] Data[5] Data[4] Data[3] Data[2] Data[1] Data[0] 도트메트릭스데이터 ( 상위 ) 출력메모리번지 : 0x8007 (Write 전용 ) 7 6 5 4 3 2 1 0 Data[9] Data[8] Data[] 도트메트릭스한줄의데이터 (H:O L:Off) 0x8006, 0x8004 의 Iteger Poiter 를사용하여하위 10bit 를사용하여프로그래밍할수있습니다.

도트매트릭스 도트메트릭스출력포트지정 #defie DM_SEL #defie DM_DATA (*(volatile usiged it *)0x8004) (*(volatile usiged it *)0x8006) 도트메트릭스의 Data 가매핑되어있는 0x8006 번지를 usiged it 형포인터의 포인터변수로지정하고 Sel 신호가매핑되어있는 0x8004 번지를 usiged it 형 포인터의포인터변수로지정한것이다. 앞에 volatile 은해당메모리가레지스터의주소이기때문에해당메모리번지에대 하여최적화를하지않도록컴파일러에게알리는것이다.

도트매트릭스 // 도트메트릭스출력데이터 it dm_data[10] = {0x000, 0x0cc, 0x132, 0x201, 0x205, 0x10a, 0x084, 0x048, 0x030, 0x000}; it dmi=0; // 실행할때마다한줄씩켜짐 void rudotmatrix(void) { } EX_DM_SEL = 0; EX_DM_DATA = dm_data[dmi]; EX_DM_SEL = 1<<dmi; dmi++; if(dmi>9) dmi=0; // 현재출력할줄선택 // dmi 번째줄데이터출력 // dmi 번째줄선택

도트매트릭스 void mai(void) { } while(1){ } rudotmatrix(); delay(10);

숙제 1 다음데이터값을채우시오. 도트메트릭스한줄출력 Data ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( ) Sel 0x001 0x002 0x004 0x008 0x010 0x020 0x040 0x080 0x100 0x200

숙제 2 다음 LED 가순서대로점등되도록만드시오. 순서는빨강 -> 노랑 -> 파랑 -> 보라 -> 녹색 빨강이점등된후에노랑이점등될때빨강은계속켜져있도록한다. 최종녹색이들어오면빨강부터다시한다. 오른쪽은녹색까지전부점등된화면입니다.

스위치 스위치회로도 (KD-128)

스위치 스위치회로도 (KT-M128)

스위치제어 스위치를눌렀을경우해당비트를 1 로반환한다. 0x 0 2 0b 0 0 0 0 0 0 1 0

스위치제어 void mai(void) { volatile usiged char i, cout=0; volatile usiged char *sw_i; volatile usiged char *led_out; iit_devices(); sw_i=(volatile usiged char *)0x36; led_out=(volatile usiged char *)0x8008; pritf("\\r\\kt-m128 V01\\r"); pritf("traiig Board Lab5 Example.\\r"); } while(1){ *led_out = *sw_i; delay(200); pritf("cout : %d\\r", cout); cout++; }

스위치제어 스위치를 1 번누르면해당 LED 가점등되고, 다시 1 번 누르면소멸되게작성하시오.

스위치채터링 스위치를한번을눌렀을경우에도여러번눌렀다고판 단한다. 스위치를누른횟수는크리스탈클럭과시간에비례한다. 여러번눌렸을경우한번만인식하기위해채터링을 사용한다. 채터링의종류 선채터링 후채터링

선채터링예제 채터링으로인하여대기한후, 스위치를떼고나면처리내용을실행 스위치에서누르고있는경우 while 에서대기, 떼고나면처리내용실행 if(pinb & 0b00010000){ while(pinb & 0b00010000) ; // 처리내용 }

후채터링예제 처리내용이 1 번실행되고, 채터링으로인하여다음명령어를실행하지못하게함. 처리내용을먼저실행후 while 에서대기 if(pinb & 0b00010000){ // 처리내용 while(pinb & 0b00010000) ; }

4 x 4 위치 ( 키 ) 매트릭스 회로도

4 x 4 스위치 ( 키 ) 매트릭스 스위치배열 PINx 4 PINx 6 PINx 5 PINx 7 키누른위치 PINx 0 PINx 1 PINx 2 PINx 3

4 x 4 스위치 ( 키 ) 매트릭스 스위치배열 PINx 4 PINx 6 키값설정 PINx 5 PINx 7 PINx 0 PINx 1 PINx 2 PINx 3 1 0 1 1 1 0 1 1

4 x 4 스위치 ( 키 ) 매트릭스 스위치배열 PINx 4 PINx 6 PINx 5 PINx 7 PINx 0 PINx 1 PINx 2 PINx 3 1 0 1 1 1 0 1 1 1. 하위 4 비트를먼저읽어온다.

4 x 4 스위치 ( 키 ) 매트릭스 스위치배열 PINx 4 PINx 6 PINx 5 PINx 7 2. 상위 4 비트를읽어온다 PINx 0 PINx 1 PINx 2 PINx 3 1 0 1 1 1 0 1 1

4 x 4 스위치 ( 키 ) 매트릭스 usiged char PORTC_KEY(){ usiged char left, right, result; DDRC PORTC left = 0x0F; = 0x0F; = PINC; DDRC = 0xF0; PORTC = 0xF0; right = PINC; } result retur = left right; result;

숙제 스위치 ( 키 ) 매트릭스와 LED 매트릭스를연결하여, 매 트릭스로누른키와매칭되는 LED 매트릭스의 LED 를 점등시키시오. (KD-128) 스위치 ( 키 ) 매트릭스를눌렀을경우해당키가 2 x 2 라고가정할때, FND 를이용하여 22 라고표현될 수있도록작성하시오.(KT-M128)