<BDC7C7E83320BFB9BAF1BAB8B0EDBCAD2E687770>

Size: px
Start display at page:

Download "<BDC7C7E83320BFB9BAF1BAB8B0EDBCAD2E687770>"

Transcription

1 제목 : 실험 #3 예비보고서 Keypad & 7-Segment 제어 실험목적 - Atmega128을이용하여 Easy Processor Kit의 Keypad 및 7-Segment를제어한다. - Keypad의키스캔방식을통한제어와, Digit 선택을이용한다수의 7-Segment 제어방법을이해한다. 실험장비 - ATmega128(AVR Chip), 7-Segment(FND), Push button 실험이론 - Keypad 키패드는복수개의푸시버튼으로구성되어있다. 버튼을각각 AVR의한포트씩직접연결되도록한다면프로그램구현은쉽게될수있지만, 포트를낭비하게된다. 예를들어총 16개의버튼으로이루어진 Keypad의버튼들이각각한포트에직접연결되어있다면 16개의포트가필요하게된다. 따라서, 일반적으로위회로와같이, 다수의푸시버튼을각행또는열을병렬로연결, 각행또는열에스캔신호를보내그에따른열또는행의버튼값을얻도록구성되어있다. 이렇게함으로써위와같은 4x4, 총 16개버튼을절반인 8개의포트로제어할수있게된다. - 실험킷의 Keypad 제어 - 실험킷의 Keypad 구성회로 -

2 푸시버튼들이 4x4로배치되어있으며, 앞뒤로현재값을읽어올행값을저장하고, 지속적으로스캔신호를내보내줄 D-FF(74HC574PW) 과해당행에서눌려진버튼값을 CPLD에서의신호와동기화해내보내기위한버퍼 (74HC541PW) 가연결되어있다. 각버튼은 D-FF(74HC574PW)-> 버튼-> 버퍼 (74HC541PW) 방향으로전류가흐르는데, 위회로를보면버퍼와버튼사이에풀업저항이열결되어있다. 따라서, 버튼을누르지않은상태에서는 VDD에서버퍼로전류가흐르기때문에 1, 버튼을눌렀을때엔 0으로판별될것이다. 마찬가지로 D-FF에서는키스캔시 0(GND) 을출력해야버튼을눌렀을때전류가제대로흐를것이므로키스캔값역시스캔할행을 0으로, 그외행을 1인값으로표현해야할것이다. - 분석과제 1 - 시뮬레이션회로 - - 시뮬레이션상황 - 실험킷회로의시뮬레이션을위해위와같이회로를구성하였다. 동작분석 첫행의키스캔을위해첫행에만 0 을출력한다. 1 번버튼을누르면 0b1110 이출력된다. 키스캔 =0b0111 & 키 =0bxxx0 인조건에의해 1 번버튼이눌렸음을처리한다.

3 두번째행의키스캔을위해두번째행에만 0 을출력한다. 7, 8 번버튼이눌려있기때문에 0b0011 이출력된다. 키스캔 =0b1011 & 키 =0b0xxx 인조건에의해 8 번버튼이눌렸음을처리한다. C 예제코드에서는 8, 7 번순으로처리되지만, ASM 예제코드에서는한버튼을처리하면해당행의다른버튼은처리되지않기때문에 7 번은처리되지않는다. 세번째행의키스캔을위해세번재행에만 0 을출력한다. 하지만눌려진키가없어 0b1111 이출력되고, 만족하는조건이없기때문에다음행의키스캔을실행한다. 네번째행의키스캔을위해네번째행에만 0 을출력한다. 13 번버튼이눌려있기때문에 0b1110 이출력된다. 키스캔 =0b1110 & 키 =0bxxx0 인조건에의해 13 번버튼이눌렸음을처리한다.

4 - 7-Segment(FND) - 7-Segment - - 복수의 7-Segment로구성된소자 - FND는 Flexible Numeric Display의약어로, 숫자를표시할수있는소자를말하는지칭한다. 이것을표시할수있는최소한의구성으로만들어진소자가 7-Segment이다. 실질적으로는 a~g외에점을표현하는 dp를포함하여 8개세그먼트로구성된다. 7-Segment는공통단자인 Common 단자가 Anode(+) 인가 Cathode(-) 인가에따라두가지형태가있다. Common-Cathode는각 LED가 GROUND와연결되어있기때문에 LED를켜려면해당핀에 1을입력해야한다. 반면에 Common-Anode는 VCC와연결되어있어 0을입력해야해당핀에불이들어온다. - 복수의 Cathode 7-Segment 소자의회로도 - 복수개의 7-Segment로구성된소자를제어할때, 각 7-Segment마다직접연결된포트를쓴다면 8*N개의포트가필요하게된다. 이것은심각한낭비이므로, 이런회로를구성할경우각세그먼트의 a~dp입력은공통으로쓰되각 7-Segment의 Common단자만을따로조작하여불이켜지도록만든다. 실제로는 Common단자에값 (CC: 0, CA: 1) 이설정된 7-Segment만불이켜지는것이지만, 사람의눈이인식하지못하는아주짧은시간안에각 7-Segment의 Common단자를조작하여모두한번에켜진것같은착시효과를이용하는것이다. 이경우, 각 Segment를조작할 8개의핀과 7-Segment의갯수 (=Common 핀의갯수 ) 만큼, 예를들어 4개의 7-Segment 소자라면 = 12개의핀으로조작가능하게된다.

5 - 실험킷의 7-Segment 제어 ( 분석과제 2) - 실험킷에구성된 7-Segment 소자의회로도 - 각세그먼트를조작하기위한 FND_A~FND_DP까지 8개, Common단자조작을위해 FND_COM단자가 4 개인 7-Segment가두개장착되어있음을확인할수있다. 위회로를살펴보면, CPLD에서 FND_DATA 신호가도착하면함께도착한세그먼트데이터를기억하기위해 D-FF(74HC574PW) 이부착되어있고, 그뒤 7-Segment의 LED 소자가과부하로타버리지않도록저항을통과한뒤마지막으로 7-Segment에연결되어있다. Common단자조작을위한회로역시 CPLD에서 FND_CS 신호에의해동작하는것외에구성은같다. 회로도에는이 Cathode인지 Anode인지나와있지않지만, 예시소스분석결과 Anode라고판단된다. ATmega128에서내보낸신호들에의해 CPLD에서 FND_DATA신호를내보내면이미도착해있던세그먼트값이 D-FF(U17) 에기억된다. 그후저항을지나 FND의 FND_A~DP 핀을통해 FND에도착한다. 두 FND의 FND_A~DP 신호는 8개의 7-Segment 모두동일한신호를입력받는다. 따라서 9개의 7-Segment 모두동일한세그먼트값을가지게된다. ATmega128에서내보낸신호들에의해이번엔 CPLD에서 FND_CS신호를내보내고, 이미도착해있던 COM값이 D-FF(U18) 에기억된다. 그후저항을지나첫번째 FND의 FND_COM0~3과두번째 FND의 FND_COM4~7에도착한다. 이때 COM값이 1인 7-Segment에만세그먼트값에맞게불이켜지게된다. - 소스분석 1: 7-Segment C 소스코드 #include <avr/io.h> #define DIG_SELECT (*(volatile unsigned char *)0x7000) #define FND_DATA (*(volatile unsigned char *)0x6C00) void ExtFndSet(int sel) { switch(sel) { case 0 : FND_DATA = ~0x3F; break; case 1 : FND_DATA = ~0x06; break; case 2 : FND_DATA = ~0x5B; break; case 3 : FND_DATA = ~0x4F; break; case 4 : FND_DATA = ~0x66; break; case 5 : FND_DATA = ~0x6D; break; case 6 : FND_DATA = ~0x7C; break; case 7 : FND_DATA = ~0x07; break; case 8 : FND_DATA = ~0x7F; break; case 9 : FND_DATA = ~0x6F; break; case 10 : FND_DATA = ~0x77; break; case 11 : FND_DATA = ~0x7C; break; case 12 : FND_DATA = ~0x39; break; case 13 : FND_DATA = ~0x5E; break; FND 의 COM 핀의메모리매핑주소 FND 의 A~DP 핀의메모리매핑주소 sel 값을 7-Segment 에맞는값으로출력해주는함수. sel 값에따라 FND_DATA 값을만들어준다. 실험킷은 Anode 타입이기때문에 Cathode 타입의세그먼트값의보수 (~) 를출력한다. ex) 0 = 0b (Cathode) ~0b = 0b (Anode)

6 case 14 : FND_DATA = ~0x79; break; case 15 : FND_DATA = ~0x71; break; case 16 : FND_DATA = ~0x76; break; case 17 : FND_DATA = ~0x40; break; case 18 : FND_DATA = ~0x80; break; case 19 : FND_DATA = ~0x00; break; void delay_us(unsigned char time_us) { register unsigned char i; for(i = 0; i < time_us; i++) { asm volatile("push R0"); asm volatile("pop R0"); 딜레이함수. 이전보고서참조. void delay_ms(unsigned int time_ms) { register unsigned int i; for(i=0;i<time_ms;i++) { delay_us(250); delay_us(250); delay_us(250); delay_us(250); int main(void) { int i; MCUCR = 0x80 ; while(1) { for(i=1;i<20;i++) { DIG_SELECT = 0xFF; ExtFndSet(i); delay_ms(200); ASM 소스코드.equ SPH = 0x3E.equ SPL = 0x3D.equ MCUCR = 0x35.equ FND_DATA = 0x6C00.equ DIG_SELECT = 0x7000.def AH = R16.def AL = R17.cseg.org 0x0000 LDI AH, high(0x10ff) LDI AL, low(0x10ff) OUT SPH, AH OUT SPL, AL IN R16, MCUCR ORI R16, 0x80 OUT MCUCR, R16 LOOP: LDI R16, 0xFF STS DIG_SELECT,R16 LDI R16, 0xFF STS FND_DATA, R16 메인프로그램 외부메모리에접근하기위해 MCUCR 레지스터의 SRE 비트를 1 로설정한다. 1~19 까지의값을출력하기위한반복문모든 7-Segment 에동일한값을표시하도록한다. 숫자에맞는세그먼트값을내보내도록함수호출. 숫자의변화를확인하기쉽도록출력사이에딜레이를준다. 1~15 는 16 진수, 16~19 는 H, -,., 공백을출력하도록설정되어있다. (ExtFndSet 함수 ) 표준 IO 레지스터를사용하기편하게키워드로매핑 7-Segment 의메모리맵주소를사용하기편하게키워드로매핑 범용레지스터를사용하기편하게키워드로매핑 프로그램코드의시작이후의코드를메모리주소 0x00 부터시작프로그램의스택설정 외부메모리에접근하기위해 MCUCR 레지스터의 SRE 비트를 1 로설정한다. 프로그램반복을위한레이블 실험킷의모든 7-Segment 를선택해동일한값을출력. 세그먼트값초기화 ( 모두 Off)

7 LDI R17, 0x00; LOOP1: MOV R16, R17 CALL BIN2LED STS FND_DATA, R16 CALL D50MS INC R17 CPI R17, 0x10 BRNE LOOP1 LDI R16, 'H' CALL BIN2LED STS FND_DATA, R16 CALL D50MS LDI R16, '-' CALL BIN2LED STS FND_DATA, R16 CALL D50MS R17 = 7-Segment 에출력할숫자 (0~15). 0 으로초기화. 숫자를증가시켜출력하기위한레이블 BIN2LED 함수는인자로 R16 을사용하기때문에 R17 을 R16 에복사한뒤호출. (BIN2LED: 숫자를세그먼트값으로변환 ) 변환된세그먼트값 (R16) 을 7-Segment 에출력 50ms 의딜레이출력할숫자를증가시킨다. 0~15 까지의숫자 (16 진수 ) 를출력할때까지위코드반복 H 를표현하기위해 R16 에 H 를저장한뒤 BIN2LED 함수호출. 7-Segment 에출력. 50ms 의딜레이 이후 - 과. 출력을위해위작업반복 LDI R16, '.' CALL BIN2LED STS FND_DATA, R16 CALL D50MS LDI R16, ''' CALL BIN2LED STS FND_DATA, R16 CALL D50MS JMP LOOP.include "Bin2LED.asm".include "Delay.asm" 모든 7-Segment 를꺼진상태로만드는루틴 BIN2LED 에모든 7-Segment 를꺼진상태인값을 로정의해놓음. 변환된세그먼트값을 7-Segment 로출력. 프로그램의처음으로돌아가숫자 0 부터반복 어셈블링시 BIN2LED 함수가정의되어있는 ASM 파일포함. 어셈블링시딜레이관련함수가정의되어있는 ASM 파일포함. - 소스분석 2: Keypad C 소스코드 #include <avr/io.h> #define LED_CS (*(volatile unsigned char *)0x4800) #define KEY_DATA (*(volatile unsigned char *)0x5400) #define KEY_SCAN (*(volatile unsigned char *)0x5800) void Platform_Init(void){ MCUCR = 0x80 ; void LED_ON(uint8_t data) { LED_CS = data; void Write_KeyPadData(uint8_t data) { KEY_DATA = data; uint8_t Read_KeyPadData(void) { return KEY_SCAN; void KeyPadScan() { uint8_t data; Write_KeyPadData(0x0E); data = Read_KeyPadData(); if(!(data&0x01))led_on(0x04); if(!(data&0x02))led_on(0x03); if(!(data&0x04))led_on(0x02); 외부 LED 의메모리매핑주소키스캔할행값의메모리매핑주소키스캔결과의메모리매핑주소 프로그램초기화함수외부메모리에접근하기위해 MCUCR 레지스터의 SRE 비트를 1 로설정한다. data 값을 LED 에출력하는함수별다른처리없이바로외부 LED 에출력한다. 키패드에키스캔값을출력하는함수 data 값을키스캔값으로바로출력한다. 키스캔중인행의키값을읽어오는함수키스캔결과를그대로리턴한다. 키패드처리함수. 실질적인메인코드이다. 키패드에서읽어온키값을저장할변수 첫번째행 (0b1110) 을스캔한다. 첫번째행의스캔결과를 data 변수에저장한다. data 변수의 LSB 가 0 이면 4 번버튼을누른것이기때문에 LED 로 4 를표현한다. 마찬가지로 1~4 가 data 변수하위 nibble 의각비

8 if(!(data&0x08))led_on(0x01); Write_KeyPadData(0x0D); data = Read_KeyPadData(); if(!(data&0x01))led_on(0x08); if(!(data&0x02))led_on(0x07); if(!(data&0x04))led_on(0x06); if(!(data&0x08))led_on(0x05); Write_KeyPadData(0x0B); data = Read_KeyPadData(); if(!(data&0x01))led_on(0x0c); if(!(data&0x02))led_on(0x0b); if(!(data&0x04))led_on(0x0a); if(!(data&0x08))led_on(0x09); 트와매핑되고그결과를 LED 로표현한다. 이코드는한행의키값을처리후바로다음키스캔을실행하는코드가아니기때문에한행에동시입력발생시큰값부터차례대로 LED 에표시된다. 하지만너무빠른시간내에처리되기때문에육안으로구분되지는않을것이다. 이후두번재행 (0b1101), 세번째행 (0b1011), 네번째행 (0b0111) 에대해같은작업을반복하여처리한다. Write_KeyPadData(0x07); data = Read_KeyPadData(); if(!(data&0x01))led_on(0x10); if(!(data&0x02))led_on(0x0f); if(!(data&0x04))led_on(0x0e); if(!(data&0x08))led_on(0x0d); int main(void) { Platform_Init(); while(1) { KeyPadScan(); ASM 소스코드.equ SPH = 0x3E.equ SPL = 0x3D.equ MCUCR = 0x35.equ LED_CS = 0x4800.equ KEY_DATA = 0x5400.equ KEY_SCAN = 0x5800.def AH = R16.def AL = R17.def LED_COL = R18.def LED_ROW = R19.def DELAY_COUNT = R25.cseg.org 0x0000 LDI AH,high(0x10FF) LDI AL,low(0x10FF) OUT SPH,AH OUT SPL,AL IN R16, MCUCR ORI R16, 0x80 OUT MCUCR, R16 LOOP: CALL KEYSCAN_ROW1 CALL KEYSCAN_ROW2 CALL KEYSCAN_ROW3 CALL KEYSCAN_ROW4 JMP LOOP KEYSCAN_ROW1: LDI LED_ROW, 0 LDI R16, 0x0E STS KEY_DATA, R16 LDS R16, KEY_SCAN 메인프로그램프로그램에필요한초기화작업을해주는함수호출 반복실행하여프로그램이종료되지않게한다. 실질적인메인코드. 키패드를처리하는함수호출. 표준 IO 레지스터를사용하기편하게키워드로매핑 외부 LED 의메모리맵주소를사용하기편하게키워드로매핑 Keypad 의메모리맵주소를사용하기편하게키워드로매핑 범용레지스터를사용하기편하게키워드로매핑 프로그램코드의시작이후의코드를메모리주소 0x00 부터시작프로그램의스택설정 외부메모리에접근하기위해 MCUCR 레지스터의 SRE 비트를 1 로설정한다. 프로그램반복을위한레이블키패드각행의키스캔및눌려진키를처리하는루틴호출 프로그램반복실행 키패드의첫번째줄을스캔하는루틴현재행의 ( 첫번째버튼번호 1) 값설정. 첫번째버튼 = 1 번으로설정스캔할행값을출력하기위해 R16 에 0xE(=0b1110) 저장키패드회로에스캔값출력첫번째행의키값을가져와 R16 에저장

9 CALL CHECK_COL KEYSCAN_ROW2: LDI LED_ROW, 4 LDI R16, 0x0D STS KEY_DATA, R16 LDS R16, KEY_SCAN CALL CHECK_COL 키패드의눌려진키를처리하기위한루틴호출 이후 KEYSCAN_ROW2~4 루틴은각행의첫번째버튼값을 5, 9, 13 으로설정하고해당행의스캔값을설정한뒤위함수와같은동작. KEYSCAN_ROW3: LDI LED_ROW, 8 LDI R16, 0x0B STS KEY_DATA, R16 LDS R16, KEY_SCAN CALL CHECK_COL KEYSCAN_ROW4: LDI LED_ROW, 12 LDI R16, 0x07 STS KEY_DATA, R16 LDS R16, KEY_SCAN CALL CHECK_COL CHECK_COL: PUSH R16 LDI LED_COL, 4 ANDI R16, 0x01 CPI R16, 0x00 BREQ LED_ON POP R16 PUSH R16 LDI LED_COL, 3 ANDI R16, 0x02 CPI R16, 0x00 BREQ LED_ON POP R16 입력받은키패드의키값에서눌려진키를처리하기위한루틴인수인 R16 을보존하기위해스택에저장이번행의네번째버튼임을처리하기위해 LED_COL 에 4 를저장 MSB 가첫번째, LSB 가네번째버튼이므로 0b0001 과 AND 연산을통해필터링후버튼이눌려졌는지 (=0) 비교. 버튼이눌려졌다면 LED 를켜는루틴으로이동눌려지지않았다면스택에백업했던원래키값복원 이후첫번째 ~ 세번째키를같은방법으로처리 PUSH R16 LDI LED_COL, 2 ANDI R16, 0x04 CPI R16, 0x00 BREQ LED_ON POP R16 PUSH R16 LDI LED_COL, 1 ANDI R16, 0x08 CPI R16, 0x00 BREQ LED_ON POP R16 LDI LED_ROW, 0 LDI LED_COL, 0 LED_ON: POP R16 ADD LED_ROW, LED_COL STS LED_CS, LED_ROW.include "Delay.asm" 아무키도눌려지지않았다면버튼번호계산을위한레지스터인 LED_ROW 와 LED_COL 을 0 으로초기화. 눌려진버튼에따라 LED 를켜기위한루틴 의복귀주소복원을위해 CHECK_COL 에서백업했던키값을 POP 행의첫번째버튼번호에눌려진버튼의열번호를더해버튼번호를구한뒤, 외부 LED 에해당값을출력한다. 어셈블링시딜레이관련함수가정의되어있는 ASM 파일포함.

10 - Bin2LED.asm 소스분석 ( 분석과제 3) 이소스는위 7-Segment 소스의 ExtFndSet 함수에해당하는작업을하는것으로, ExtFndSet 함수와는달리직접 7-Segment 로값을출력하지는않고이함수를호출한함수측에, 수치가변환된세그먼트값을반환하기만하는함수이다..equ RAMPZ = 0x3b.def ZH = r31.def ZL = r30 BIN2LED: PUSH R17 PUSH ZH PUSH ZL CPI R16,'H' BRNE BIN2L1 LDI R16,0x10 RJMP BIN2L4 BIN2L1: CPI R16,'-' BRNE BIN2L2 LDI R16,0x11 RJMP BIN2L4 BIN2L2: CPI R16,'.' BRNE BIN2L3 LDI R16,0x12 RJMP BIN2L4 BIN2L3: CPI R16,0x27 BRNE BIN2L4 LDI R16,0x13 BIN2L4: LDI R17,byte3(FND_TABLE << 1) LDI ZH,high(FND_TABLE << 1) LDI ZL,low(FND_TABLE << 1) ADD ZL,R16 CLR R16 ADC ZH,R16 ADC R17,R16 OUT RAMPZ,R17 LPM R16,Z POP ZL POP ZH POP R17 FND_TABLE: ; 7-segment LED data table.db 0b ,0b ; 0,1.db 0b ,0b ; 2,3.db 0b ,0b ; 4,5.db 0b ,0b ; 6,7.db 0b ,0b ; 8,9.db 0b ,0b ; A,b.db 0b ,0b ; C,d.db 0b ,0b ; E,F.db 0b ,0b ; H,-.db 0b ,0b ;.,' RAMPZ 레지스터의주소 ( 아래에설명 ) Z 레지스터의주소 ( 상위바이트 ) Z 레지스터의주소 ( 하위바이트 ) 함수의메인코드호출을위한레이블이함수에서 R17, Z 레지스터를사용하며값이변경되기때문에스택에백업한다. 이함수의인수인변경할숫자는 R16 으로넘겨받는다. 넘겨받은인수가 H 가아니라면 - 비교루틴 (BIN2L1) 으로이동한다. H 라면 R16 에 16 을넣고세그먼트값으로변환하는루틴 (BIN2L4) 으로이동한다. 넘겨받은인수가 - 가아니라면. 비교루틴 (BIN2L2) 으로이동한다. - 라면 R16 에 17 을넣고세그먼트값으로변환하는루틴 (BIN2L4) 으로이동한다. 넘겨받은인수가. 이아니라면 비교루틴 (BIN2L3) 으로이동한다.. 라면 R16 에 18 을넣고세그먼트값으로변환하는루틴 (BIN2L4) 으로이동한다. 넘겨받은인수가 가아니라면바로세그먼트값으로변환하는루틴 (BIN2L4) 으로이동한다. 라면 R16 에 19 를넣는다. R16 값에따라세그먼트값으로변환하는루틴변환될세그먼트값이저장된주소인 FND_TABLE 에 2 를곱해확장된 3 바이트값을 R17, ZH, ZL 레지스터에저장한다. ( 표아래설명참조 ) 수치순으로메모리에저장되있기때문에 ZL 에넘겨받은인수를더한후, R16 값을유지할필요가없기때문에 0 으로초기화한다. ZL 과 R16 의합에올림수 (Carry) 가발생한경우 ZH 에더해주소값인 Z 레지스터의상위바이트를증가시킨다. 마찬가지이유로 ZH 에올림수발생시 R17 을증가시킨다. 메모리의페이지번호를설정하기위해 R17 을 RAMPZ 레지스터에출력한다. ( 코드상불필요. 표아래설명참조 ) 완성된세그먼트값주소에서값을읽어와 R16 에저장한다. 원래코드로복귀하기위한준비로, 스택에백업했던이전 Z, R17 레지스터값을복원한다. 이함수를호출했던원래코드로복귀한다. 변환될세그먼트값의주소를얻기위한레이블각값은 1 바이트값으로, 0~19 까지 20 개의바이트배열로생각하면된다. 0~15 까지는 16 진수 0~F 로출력되고 16 은 H 17 은 18 은. 19 는공백 ( 모든세그먼트 Off) 으로설정되어있다.

11 FND_TABLE 주소에 1번의 LSL을수행하는이유 : 프로그램코드에작성된상수등은프로그램메모리에저장된다. 평상시프로그램메모리는 16bit-wide로동작하여메모리주소가 1 증가하면실제메모리공간에서의주소는 16비트가증가하게된다. 하지만런타임중프로그램코드상에서프로그램메모리에접근하는명령들은 8bit-wide로동작하는데이때, 두배의주소공간이더필요하다는문제가발생하기때문에 64K단위의페이지로나눠페이지0의 0~64K, 페이지1의 0~64K 주소로접근하는방법을통해모든메모리공간에접근할수있게하였다. 여기서접근할페이지번호를설정하는레지스터가 RAMPZ 레지스터이다. : 본론인 1번의 LSL을수행하는이유는, FND_TABLE로지정된메모리주소의상수값은 16bit-wide시의주소값이기때문이다. LPM명령수행시 8bit-wide로동작하기때문에 FND_TABLE의두배값을사용해야하고, 그렇기에연산결과가원래값의 2의배수가되는 LSL을 1회실행하는것이다. RAMPZ 레지스터 (RAM Page Z Select Register) : 다른비트들은나중을위해예약되어있어 0번비트만사용된다. ( 페이지0, 1 구분 ) : ATmega128의 128KB 메모리공간은 64K * 16bit로서 2바이트의메모리주소로모든메모리에접근가능하지만 8bit로동작시 128K * 8bit로 128K, 즉두배의주소공간이더필요하게된다. 그래서 64K단위의페이지로나눠페이지0의 0~64K(= 하위 64K, $0000~$7FFF), 페이지1의 0~64K(= 상위 64K, $8000~$FFFF) 주소로접근하는방법을통해모든메모리공간에접근할수있게되는것이다. : 하지만이레지스터는 ELPM/SPM 명령어가사용될때에만적용된다. 분석과제 3의코드에서쓰인 LPM 명령에는적용되지않기때문에코드분석의주석에서코드상필요없는명령이라고한것이다. 실험방법 - AVR Studio 4를이용하여프로그램소스코드작성후빌드하여실행파일 (.hex) 을생성한다. - AVR Studio 4의 AVR Programmer 를이용, AVR칩에프로그램을다운로드하여실험킷에서의동작을확인한다.

12 예비과제시뮬레이션결과 - 예비과제시뮬레이션회로구성 - - 키패드는 PA7~PA4를통해키스캔값을출력하고, PA3~PA0로키값을입력받는다. 또 PB를통해 FND의 a~dp의세그먼트값을출력하고, PC3~0을 FNC의 COM과연결하여회로를구성하였다. - 위화면은 14번버튼이눌러진뒤의화면이다. 프로그램이제대로동작하여 7-Segment에 14가표시됨을확인할수있다. 예비과제코드분석.include "m128def.inc".def AH = R16.def AL = R17.def KP_SCAN = R18.def KP_DATA = R19.def LASTNUM = R20.cseg.org 0x0000 LDI AH, high(ramend) LDI AL, low(ramend) OUT SPH, AH OUT SPL, AL LDI R16, 0xF0 OUT DDRA, R16 LDI R16, 0x0F OUT DDRC, R16 LDI R16, 0xFF OUT DDRB, R16 OUT PORTA, R16 OUT PORTB, R16 OUT PORTC, R16 키스캔값을저장할레지스터. ( 첫행부터 0~3) 키스캔에대한현재키값을저장할레지스터. 가장최근에입력된키값을저장할레지스터. 프로그램스택을설정한다. PortA 의 7~4 를키스캔출력, 3~0 을키값입력으로사용하도록한다. PortC 의 3~0 을 FND_COM 출력으로사용하도록한다. PortB 를 FND_DATA 출력으로사용하도록한다. 각포트를초기화한다. LOOP: RCALL SET_SCAN RCALL GET_DATA 반복실행을위한레이블현재키스캔값을 Keypad 에출력한다. Keypad 에서키스캔에대한키값을가져온다.

13 SBRC KP_DATA, 3 RCALL KP_DATA8 SBRC KP_DATA, 2 RCALL KP_DATA4 SBRC KP_DATA, 1 RCALL KP_DATA2 SBRC KP_DATA, 0 RCALL KP_DATA1 RCALL SEG_ON INC KP_SCAN SBRC KP_SCAN, 2 CLR KP_SCAN RJMP LOOP KP_DATA8: MOV AH, KP_SCAN INC AH MOV LASTNUM, AH 현재키값의 3 번비트 (0b1xxx) 가 1 이라면 KP_DATA8 루틴을호출하여 LASTNUM 값을갱신한다. 현재키값의 2 번비트 (0bx1xx) 가 1 이라면 KP_DATA4 루틴을호출하여 LASTNUM 값을갱신한다. 현재키값의 1 번비트 (0bxx1x) 가 1 이라면 KP_DATA2 루틴을호출하여 LASTNUM 값을갱신한다. 현재키값의 0 번비트 (0bxxx1) 가 1 이라면 KP_DATA1 루틴을호출하여 LASTNUM 값을갱신한다. LASTNUM 값을 7-Segment 에출력한다. 키스캔값을증가시킨다. 키스캔값이 4 가되었다면키스캔값을 0 으로다시초기화한다. 처음으로돌아가반복실행한다. KP_DATAn 루틴은키스캔값 ( 행 ) * 4 + 입력된키값의비트자리 ( 열 ) 를통해눌려진버튼의번호를계산하고, 그값을 LASTNUM 레지스터에업데이트하는함수이다. * 4 연산을위해두번의좌측쉬프트를사용한다. KP_DATA4: MOV AH, KP_SCAN LDI AL, 0x02 ADD AH, AL MOV LASTNUM, AH KP_DATA2: MOV AH, KP_SCAN LDI AL, 0x03 ADD AH, AL MOV LASTNUM, AH KP_DATA1: MOV AH, KP_SCAN LDI AL, 0x04 ADD AH, AL MOV LASTNUM, AH SET_SCAN: MOV AH, KP_SCAN LDI AL, 0x01 LSL_START: DEC AH BRMI LSL_END LSL AL RJMP LSL_START LSL_END: SWAP AL COM AL OUT PORTA, AL Keypad 에키스캔값을출력하는함수현재키스캔값을유지하기위해 AH 에복사한다. AL 에 1 을저장한다. ( 키스캔할행 ) 현재키스캔값만큼 LSL 을수행하는반복문키스캔값을감소한다. 감소된값이음수이면반복문을종료한다. 음수가아니라면 LSL 연산을수행한다. 반복문의처음으로돌아가반복수행한다. 키스캔은 PortA 의 7~4 를사용하기때문에상하위 Nibble 을교환한다. 값이 0 인행을키스캔하기때문에값을반전시킨다. 완성된키스캔값을 PortA 로출력한다.

14 GET_DATA: IN KP_DATA, PINA COM KP_DATA SEG_ON: MOV AH, LASTNUM RCALL OPDIV LDI R21, 0x01 OUT PORTC, R21 RCALL Bin2LED OUT PORTB, AH CALL D1MS LDI R21, 0x02 OUT PORTC, R21 MOV AH, AL RCALL Bin2LED OUT PORTB, AH CALL D1MS LDI R21, 0x0C OUT PORTC, R21 CLR AH RCALL Bin2LED OUT PORTB, AH CALL D1MS 키스캔에대한키값을 KP_DATA 에가져오는루틴 KP_DATA 에현재키값을가져온다. 버튼이눌려졌을때 0 이입력되기때문에코드의편의상값을반전시킨다. 7-Segment 에눌려진버튼값을출력하는루틴 LASTNUM 값을유지하기위해 AH 에복사한다. AH 값을나눗셈연산을통해자리수를분리한다. 10 의자리 : AL, 1 의자리 : AH PortC 를통해 0b0001 을출력하여가장오른쪽 ( 네번째 ) FND 를선택한다. 1 의자리값을세그먼트값으로변환한다. ( 분석과제코드사용 ) 변환된세그먼트값을 PortB 를통해 7-Segment 에출력한다. 7-Segment 에값이적절히 Setup 되도록약간의딜레이를준다. PortC 를통해 0b0010 을출력하여가장세번째 FND 를선택한다. 10 의자리값을세그먼트값으로변환하기위해 AH(R16) 에복사한뒤 Bin2LED 루틴을호출한다. 변환된세그먼트값을 PortB 를통해 7-Segment 에출력한다. 7-Segment 에값이적절히 Setup 되도록약간의딜레이를준다. PortC 를통해 0b1100 을출력하여가장첫번째와두번째 FND 를동시에선택한다. 16 개버튼은세자리이상의자리수는필요없으니 0 을출력하기위해 AH 를 0 으로초기화한뒤 Bin2LED 루틴을호출한다. 변환된세그먼트값을 PortB 를통해 7-Segment 에출력한다. 7-Segment 에값이적절히 Setup 되도록약간의딜레이를준다. OPDIV: CLR AL DIV_START: CPI AH, 0x0A BRLO DIV_END SUBI AH, 0x0A INC AL RJMP DIV_START DIV_END: 자릿수분리를위한나눗셈루틴몫을저장할 AL 을 0 으로초기화한다. 나눗셈을위한반복문나눌수 ( 피제수 ) 가 10 보다작다면나눗셈을종료한다. 그렇지않다면피제수에서 10 을뺀다. 그리고몫을증가시킨다. 반복문의처음으로돌아가반복수행한다. 결과로몫은 AL 에, 나머지는 AH 에저장되어 10 의자리, 1 의자리로분리된다..include "Bin2LED.asm".include "Delay.asm" 예비과제소스에서쓰인 Bin2LED 와 Delay 함수를사용하기위한 include 문. 참고문헌 - Keypad 이론 : Keypad interfacing with Microcontrollers Tutorial ( ) - 7-Segment(FND) 이론자료1: FND(Flexible Numeric Display) ( ) - 7-Segment(FND) 이론자료2: FND(7-segment) 기초지식 ( ) - 분석과제 3 자료1: RAMPZ ; RAM Page Z Select Register ( ) - 분석과제 3 자료2: 실험참고자료 C언어를이용한 AVR 설계및응용.pdf p.13(p.20)

<BDC7C7E83220B0E1B0FABAB8B0EDBCAD202833C1D6C2F7292E687770>

<BDC7C7E83220B0E1B0FABAB8B0EDBCAD202833C1D6C2F7292E687770> 제목 : 실험 #2 결과보고서 외부 LED & Dip 스위치제어 실험일 : 2013. 03. 19. (3 주차 ) 실험내용 - 예비과제 : 메모리맵드 IO를통해 Dip 스위치의값을읽고, On 상태의스위치가하나이상있다면외부 LED를점멸하는프로그램 - 실험과제 : 메모리맵드 IO를통해 Dip 스위치의값을읽고, Dip 스위치의조작을통한사칙연산결과를 LED를통해출력하는프로그램.

More information

<BDC7C7E83520BFB9BAF1BAB8B0EDBCAD2E687770>

<BDC7C7E83520BFB9BAF1BAB8B0EDBCAD2E687770> 제목 : 실험 #5 예비보고서 Interrupt 제어 실험목적 - Interrupt에대한기초지식을알아본다. - Atmega128의 Interrupt를사용해보고, 동작방식과동작방법및특징을확인한다. 실험장비 - ATmega128(AVR Chip), Switch, LED(Green-LED) 실험이론 - 인터럽트 (Interrupt) 인터럽트는프로그램이수행되고있는동안에어떤조건이발생하여수행중인프로그램을일시적으로중지시키게만드는조건이나사건의발생을말한다.

More information

<BDC7C7E83120B0E1B0FABAB8B0EDBCAD202832C1D6C2F7292E687770>

<BDC7C7E83120B0E1B0FABAB8B0EDBCAD202832C1D6C2F7292E687770> 제목 : 실험 #1 결과보고서 GPIO LED 제어 실험일 : 2013. 03. 12. (2 주차 ) 실험내용 - 예비과제 : ATmega126의 8개의핀에연결되어있는 LED 점멸하는프로그램 - 실험과제 : ATmega126의 8개의 LED를순차적으로켜고끄는프로그램 실험결과 - 예비과제 - 해결방법 : 점멸되는시간 (Delay) 를구현하기위해임의의변수 i를적당한지연시간이생길정도의크기만큼증가시킨후,

More information

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F > 10주차 문자 LCD 의인터페이스회로및구동함수 Next-Generation Networks Lab. 5. 16x2 CLCD 모듈 (HY-1602H-803) 그림 11-18 19 핀설명표 11-11 번호 분류 핀이름 레벨 (V) 기능 1 V SS or GND 0 GND 전원 2 V Power DD or V CC +5 CLCD 구동전원 3 V 0 - CLCD 명암조절

More information

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729> 8주차중간고사 ( 인터럽트및 A/D 변환기문제및풀이 ) Next-Generation Networks Lab. 외부입력인터럽트예제 문제 1 포트 A 의 7-segment 에초시계를구현한다. Tact 스위치 SW3 을 CPU 보드의 PE4 에연결한다. 그리고, SW3 을누르면하강 에지에서초시계가 00 으로초기화된다. 동시에 Tact 스위치 SW4 를 CPU 보드의

More information

<BDC7C7E83120BFB9BAF1BAB8B0EDBCAD2E687770>

<BDC7C7E83120BFB9BAF1BAB8B0EDBCAD2E687770> 제목 : 실험 #1 예비보고서 GPIO LED 제어 실험목적 - AVR에대한기본적인구조및툴사용법, 프로그래밍방법등을학습한다. - AVR과연결된 LED를제어하는프로그램작성을통해 AVR의각포트별쓰임새와사용법을학습한다. 실험장비 - ATmega128(AVR Chip), LED(Blue-LED, Green-LED) 실험이론 - AVR Studio 4 ATmega128의제조사인

More information

ATmega128

ATmega128 ATmega128 외부인터럽트실습 Prof. Jae Young Choi ( 최재영교수 ) (2015 Spring) Prof. Jae Young Choi 외부인터럽트실험 외부인터럽트를사용하기위해관렦레지스터를설정 일반적으로 I/O 포트에대한설정이끝난후에외부인터럽트나타이머 / 카운터설정 PE4~7 번까지 4 개의외부인터럽트 INT4~INT7 까지사용 외부인터럽트사용법요약

More information

Microsoft PowerPoint - es-arduino-lecture-03

Microsoft PowerPoint - es-arduino-lecture-03 임베디드시스템개론 : Arduino 활용 Lecture #3: Button Input & FND Control 2012. 3. 25 by 김영주 강의목차 디지털입력 Button switch 입력 Button Debounce 7-Segment FND : 직접제어 7-Segment FND : IC 제어 2 디지털입력 : Switch 입력 (1) 실습목표 아두이노디지털입력처리실습

More information

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

목차 1. 키패드 (KeyPAD) 2. KeyPAD 를이용한비밀번호입력기 Chapter. 13 KeyPAD 를이용한비밀번호입력기 HBE-MCU-Multi AVR Jaeheung, Lee 목차 1. 키패드 (KeyPAD) 2. KeyPAD 를이용한비밀번호입력기 키패드 (KeyPAD) 키패드 (KeyPAD) 마이크로컨트롤러활용에서사용자의입력을받아들이기위한장치 전화기, 컴퓨터, 핸드폰, 냉장고등거의모든가전제품에서사용 키패드인터페이스방식

More information

<BDC7C7E83820BFB9BAF1BAB8B0EDBCAD2E687770>

<BDC7C7E83820BFB9BAF1BAB8B0EDBCAD2E687770> 제목 : 실험 #8 예비보고서 ADC 제어 실험목적 - ADC를이용하여아날로그신호를디지털신호로변환하는과정을이해한다. - ATmega128의내장 ADC 제어방법을이해한다. 실험장비 - ATmega128(AVR Chip), 온도센서 (TC1047A), 조도센서 (TSL251R) 실험이론 - A/D 변환 아날로그신호 샘플링펄스 - A/D 변환과정 - A/D 변환과정은샘플

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 7-Segment Device Control - Device driver Jo, Heeseung HBE-SM5-S4210 의 M3 Module 에는 6 자리를가지는 7-Segment 모듈이아래그림처럼실장 6 Digit 7-Segment 2 6-Digit 7-Segment LED controller 16비트로구성된 2개의레지스터에의해제어 SEG_Sel_Reg(Segment

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 7-Segment Device Control - Device driver Jo, Heeseung HBE-SM5-S4210 의 M3 Module 에는 6 자리를가지는 7-Segment 모듈이아래그림처럼실장 6 Digit 7-Segment 2 6-Digit 7-Segment LED Controller 16비트로구성된 2개의레지스터에의해제어 SEG_Sel_Reg(Segment

More information

슬라이드 1

슬라이드 1 마이크로컨트롤러 2 (MicroController2) 2 강 ATmega128 의 external interrupt 이귀형교수님 학습목표 interrupt 란무엇인가? 기본개념을알아본다. interrupt 중에서가장사용하기쉬운 external interrupt 의사용방법을학습한다. 1. Interrupt 는왜필요할까? 함수동작을추가하여실행시키려면? //***

More information

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

Microsoft Word - PLC제어응용-2차시.doc 과정명 PLC 제어응용차시명 2 차시. 접점명령 학습목표 1. 연산개시명령 (LOAD, LOAD NOT) 에대하여설명할수있다. 2. 직렬접속명령 (AND, AND NOT) 에대하여설명할수있다. 3. 병렬접속명령 (OR, OR NOT) 에대하여설명할수있다. 4.PLC의접점명령을가지고간단한프로그램을작성할수있다. 학습내용 1. 연산개시명령 1) 연산개시명령 (LOAD,

More information

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

2. GCC Assembler와 AVR Assembler의차이 A. GCC Assembler 를사용하는경우 i. Assembly Language Program은.S Extension 을갖는다. ii. C Language Program은.c Extension 을갖는다. C 언어와 Assembly Language 을사용한 Programming 20011.9 경희대학교조원경 1. AVR Studio 에서사용하는 Assembler AVR Studio에서는 GCC Assembler와 AVR Assmbler를사용한다. A. GCC Assembler : GCC를사용하는경우 (WinAVR 등을사용하는경우 ) 사용할수있다. New Project

More information

Microsoft PowerPoint - chap06-2pointer.ppt

Microsoft PowerPoint - chap06-2pointer.ppt 2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.

More information

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D> 뻔뻔한 AVR 프로그래밍 The Last(8 th ) Lecture 유명환 ( yoo@netplug.co.kr) INDEX 1 I 2 C 통신이야기 2 ATmega128 TWI(I 2 C) 구조분석 4 ATmega128 TWI(I 2 C) 실습 : AT24C16 1 I 2 C 통신이야기 I 2 C Inter IC Bus 어떤 IC들간에도공통적으로통할수있는 ex)

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 7-SEGMENT DEVICE CONTROL - DEVICE DRIVER Jo, Heeseung 디바이스드라이버구현 : 7-SEGMENT HBE-SM5-S4210 의 M3 Module 에는 6 자리를가지는 7-Segment 모듈이아래그림처럼실장 6 Digit 7-Segment 2 디바이스드라이버구현 : 7-SEGMENT 6-Digit 7-Segment LED

More information

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2 비트연산자 1 1 비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2 진수법! 2, 10, 16, 8! 2 : 0~1 ( )! 10 : 0~9 ( )! 16 : 0~9, 9 a, b,

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 System Software Experiment 1 Lecture 5 - Array Spring 2019 Hwansoo Han (hhan@skku.edu) Advanced Research on Compilers and Systems, ARCS LAB Sungkyunkwan University http://arcs.skku.edu/ 1 배열 (Array) 동일한타입의데이터가여러개저장되어있는저장장소

More information

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3 Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3 Example 3.1 Files 3.2 Source code 3.3 Exploit flow

More information

금오공대 컴퓨터공학전공 강의자료

금오공대 컴퓨터공학전공 강의자료 C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include

More information

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

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx #include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의

More information

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

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조 - Part2- 제 2 장다차원배열이란무엇인가 학습목차 2.1 다차원배열이란 2. 2 2 차원배열의주소와값의참조 2.1 다차원배열이란 2.1 다차원배열이란 (1/14) 다차원배열 : 2 차원이상의배열을의미 1 차원배열과다차원배열의비교 1 차원배열 int array [12] 행 2 차원배열 int array [4][3] 행 열 3 차원배열 int array [2][2][3]

More information

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729> 7주차 AVR의 A/D 변환기제어레지스터및관련실습 Next-Generation Networks Lab. 3. 관련레지스터 표 9-4 레지스터 ADMUX ADCSRA ADCH ADCL 설명 ADC Multiplexer Selection Register ADC 의입력채널선택및기준전압선택외 ADC Control and Status Register A ADC 의동작을설정하거나동작상태를표시함

More information

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074> Chap #2 펌웨어작성을위한 C 언어 I http://www.smartdisplay.co.kr 강의계획 Chap1. 강의계획및디지털논리이론 Chap2. 펌웨어작성을위한 C 언어 I Chap3. 펌웨어작성을위한 C 언어 II Chap4. AT89S52 메모리구조 Chap5. SD-52 보드구성과코드메모리프로그래밍방법 Chap6. 어드레스디코딩 ( 매핑 ) 과어셈블리어코딩방법

More information

API 매뉴얼

API 매뉴얼 PCI-DIO12 API Programming (Rev 1.0) Windows, Windows2000, Windows NT and Windows XP are trademarks of Microsoft. We acknowledge that the trademarks or service names of all other organizations mentioned

More information

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 System call table and linkage v Ref. http://www.ibm.com/developerworks/linux/library/l-system-calls/ - 2 - Young-Jin Kim SYSCALL_DEFINE 함수

More information

11장 포인터

11장 포인터 누구나즐기는 C 언어콘서트 제 9 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 메모리의구조 변수는메모리에저장된다. 메모리는바이트단위로액세스된다. 첫번째바이트의주소는 0, 두번째바이트는 1, 변수와메모리

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 KeyPad Device Control - Device driver Jo, Heeseung HBE-SM5-S4210 에는 16 개의 Tack Switch 를사용하여 4 행 4 열의 Keypad 가장착 4x4 Keypad 2 KeyPad 를제어하기위하여 FPGA 내부에 KeyPad controller 가구현 KeyPad controller 16bit 로구성된

More information

슬라이드 1

슬라이드 1 -Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역

More information

lecture4(6.범용IO).hwp

lecture4(6.범용IO).hwp 제 2 부 C-언어를 사용한 마이크로컨트롤러 활용기초 66 C-언어는 수학계산을 위해 개발된 FORTRAN 같은 고급언어들과는 달 리 Unix 운영체제를 개발하면서 같이 개발된 고급언어이다. 운영체제의 특성상 C-언어는 다른 고급언어에 비해 컴퓨터의 하드웨어를 직접 제어할 수 있는 능력이 탁월하여 마이크로프로세서의 프로그램에 있어서 어셈블 리와 더불어 가장

More information

ISP and CodeVisionAVR C Compiler.hwp

ISP and CodeVisionAVR C Compiler.hwp USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler http://www.avrmall.com/ November 12, 2007 Copyright (c) 2003-2008 All Rights Reserved. USBISP V3.0 & P-AVRISP V1.0 with CodeVisionAVR C Compiler

More information

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

Chapter. 14 DAC 를이용한 LED 밝기제어 HBE-MCU-Multi AVR Jaeheung, Lee Chapter. 14 DAC 를이용한 LED 밝기제어 HBE-MCU-Multi AVR Jaeheung, Lee 목차 1. D/A 변환기 2. 병렬 D/A 변환기로 LED 밝기제어하기 3. 직렬 D/A 변환기로 LED 밝기제어하기 D/A 변환기 D/A 변환기 (Digital to Analog Converter) 디지털데이터를아날로그전압으로변환하는소자 A/D변환기와함께마이크로프로세서응용회로에서널리사용됨.

More information

UI TASK & KEY EVENT

UI TASK & KEY EVENT 2007. 2. 5 PLATFORM TEAM 정용학 차례 CONTAINER & WIDGET SPECIAL WIDGET 질의응답및토의 2 Container LCD에보여지는화면한개 1개이상의 Widget을가짐 3 Container 초기화과정 ui_init UMP_F_CONTAINERMGR_Initialize UMP_H_CONTAINERMGR_Initialize

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Web server porting 2 Jo, Heeseung Web 을이용한 LED 제어 Web 을이용한 LED 제어프로그램 web 에서데이터를전송받아타겟보드의 LED 를조작하는프로그램을작성하기위해다음과같은소스파일을생성 2 Web 을이용한 LED 제어 LED 제어프로그램작성 8bitled.html 파일을작성 root@ubuntu:/working/web# vi

More information

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2 제 8 장. 포인터 목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2 포인터의개요 포인터란? 주소를변수로다루기위한주소변수 메모리의기억공간을변수로써사용하는것 포인터변수란데이터변수가저장되는주소의값을 변수로취급하기위한변수 C 3 포인터의개요 포인터변수및초기화 * 변수데이터의데이터형과같은데이터형을포인터 변수의데이터형으로선언 일반변수와포인터변수를구별하기위해

More information

API 매뉴얼

API 매뉴얼 PCI-TC03 API Programming (Rev 1.0) Windows, Windows2000, Windows NT, Windows XP and Windows 7 are trademarks of Microsoft. We acknowledge that the trademarks or service names of all other organizations

More information

Visual Basic 반복문

Visual Basic 반복문 학습목표 반복문 For Next문, For Each Next문 Do Loop문, While End While문 구구단작성기로익히는반복문 2 5.1 반복문 5.2 구구단작성기로익히는반복문 3 반복문 주어진조건이만족하는동안또는주어진조건이만족할때까지일정구간의실행문을반복하기위해사용 For Next For Each Next Do Loop While Wend 4 For

More information

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - ch07 - 포인터 pm0415 2015-1 프로그래밍언어 7. 포인터 (Pointer), 동적메모리할당 2015 년 4 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) Outline 포인터 (pointer) 란? 간접참조연산자

More information

[8051] 강의자료.PDF

[8051] 강의자료.PDF CY AC F0 RS1 RS0 OV - P 0xFF 0x80 0x7F 0x30 0x2F 0x20 0x1F 0x18 0x17 0x10 0x0F 0x08 0x07 0x00 0x0000 0x0FFF 0x1000 0xFFFF 0x0000 0xFFFF RAM SFR SMOD - - - GF1 GF0 PD IDL 31 19 18 9 12 13 14 15 1 2 3 4

More information

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Function) 1. 함수의개념 입력에대해적절한출력을발생시켜주는것 내가 ( 프로그래머 ) 작성한명령문을연산, 처리, 실행해주는부분 ( 모듈 ) 자체적으로실행되지않으며,

More information

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

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 IMC-V0.1 예제소스파일 1. UART 소스코드 (page 1-3) 2. Encoder 소스코드 (page 4-7) 3. ADC 소스코드 (page 8-10) UART.h #ifndef _UART_H_ #define _UART_H_ #define DIR_TXD #define DIR_RXD sbi(portd,4) cbi(portd,4) #define CPU_CLOCK_HZ

More information

Microsoft PowerPoint - chap06-1Array.ppt

Microsoft PowerPoint - chap06-1Array.ppt 2010-1 학기프로그래밍입문 (1) chapter 06-1 참고자료 배열 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 배열의선언과사용 같은형태의자료형이많이필요할때배열을사용하면효과적이다. 배열의선언 배열의사용 배열과반복문 배열의초기화 유연성있게배열다루기 한빛미디어

More information

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

Microsoft PowerPoint - 제3장 GPIO 입출력 제어 (HBE-MCU-Multi AVR) 한백전자기술연구소 HBE-MCU-Multi 로배우는 마이크로컨트롤러 (AVR편) 마이크로컨트롤러기능 제 3 장 GPIO 입출력제어 GPIO 입출력제어 1. HBE-MCU-Multi 구동 2. 마이크로컨트롤러와 GPIO 3. AVR 마이크로컨트롤러의입출력포트 4. GPIO 를이용하여 LED 켜기 5. GPIO를이용한스위치눌러 LED 불켜기 6. GPIO 를이용하여

More information

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

인터럽트 * 인터럽트처리메커니즘 ATmega128 인터럽트 2 ATmega128 인터럽트 1 제 04 강 인터럽트 (Interrupt) 인터럽트개요외부인터럽트참고 ) FND 회로실습및과제 인터럽트 * 인터럽트처리메커니즘 ATmega128 인터럽트 2 인터럽트 ( 계속 ) ATmega128 인터럽트 3 * 인터럽트벡터 (P.104 표 7.1 참조 ) : 35 개 인터럽트 ( 계속 ) * 인터럽트허용 / 금지메커니즘 ATmega128

More information

버퍼오버플로우-왕기초편 10. 메모리를 Hex dump 뜨기 앞서우리는버퍼오버플로우로인해리턴어드레스 (return address) 가변조될수있음을알았습니다. 이제곧리턴어드레스를원하는값으로변경하는실습을해볼것인데요, 그전에앞서, 메모리에저장된값들을살펴보는방법에대해배워보겠습

버퍼오버플로우-왕기초편 10. 메모리를 Hex dump 뜨기 앞서우리는버퍼오버플로우로인해리턴어드레스 (return address) 가변조될수있음을알았습니다. 이제곧리턴어드레스를원하는값으로변경하는실습을해볼것인데요, 그전에앞서, 메모리에저장된값들을살펴보는방법에대해배워보겠습 앞서우리는버퍼오버플로우로인해리턴어드레스 (return address) 가변조될수있음을알았습니다. 이제곧리턴어드레스를원하는값으로변경하는실습을해볼것인데요, 그전에앞서, 메모리에저장된값들을살펴보는방법에대해배워보겠습니다. 여러분모두 Windows 에서 hex editor(hex dump, hex viewer) 라는것을사용해보셨을겁니다. 바로바이너리파일을 16 진수

More information

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 (   ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각 JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.

More information

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

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

More information

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

2009년2학기 임베디드시스템 응용 임베디드시스템기초 (#514115 ) #2. GPIO & Matrix Keypad 한림대학교전자공학과이선우 Short Review #1 General Purpose Input Output (GPIO) Output port Input port Switch 사용방법 2 General Purpose Input Output(GPIO) port 모든 MCU의가장기본적이고중요한주변장치

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 실습 1 배효철 th1g@nate.com 1 목차 조건문 반복문 System.out 구구단 모양만들기 Up & Down 2 조건문 조건문의종류 If, switch If 문 조건식결과따라중괄호 { 블록을실행할지여부결정할때사용 조건식 true 또는 false값을산출할수있는연산식 boolean 변수 조건식이 true이면블록실행하고 false 이면블록실행하지않음 3

More information

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

(Asynchronous Mode) ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 - (Asynchronous Mode) - - - ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 - UART (Univ ers al As y nchronous Receiver / T rans mitter) 8250A 8250A { COM1(3F8H). - Line Control Register

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Chapter 10 포인터 01 포인터의기본 02 인자전달방법 03 포인터와배열 04 포인터와문자열 변수의주소를저장하는포인터에대해알아본다. 함수의인자를값과주소로전달하는방법을알아본다. 포인터와배열의관계를알아본다. 포인터와문자열의관계를알아본다. 1.1 포인터선언 포인터선언방법 자료형 * 변수명 ; int * ptr; * 연산자가하나이면 1 차원포인터 1 차원포인터는일반변수의주소를값으로가짐

More information

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770> 연습문제해답 5 4 3 2 1 0 함수의반환값 =15 5 4 3 2 1 0 함수의반환값 =95 10 7 4 1-2 함수의반환값 =3 1 2 3 4 5 연습문제해답 1. C 언어에서의배열에대하여다음중맞는것은? (1) 3차원이상의배열은불가능하다. (2) 배열의이름은포인터와같은역할을한다. (3) 배열의인덱스는 1에서부터시작한다. (4) 선언한다음, 실행도중에배열의크기를변경하는것이가능하다.

More information

IoT FND8 7-SEGMENT api

IoT FND8 7-SEGMENT api IoT FND8 7-SEGMENT api http://www.mangoboard.com/ http://cafe.naver.com/embeddedcrazyboys Crazy Embedded Laboratory www.mangoboard.com cafe.naver.com/embeddedcrazyboys CRZ Technology 1 Document History

More information

설계란 무엇인가?

설계란 무엇인가? 금오공과대학교 C++ 프로그래밍 jhhwang@kumoh.ac.kr 컴퓨터공학과 황준하 6 강. 함수와배열, 포인터, 참조목차 함수와포인터 주소값의매개변수전달 주소의반환 함수와배열 배열의매개변수전달 함수와참조 참조에의한매개변수전달 참조의반환 프로그래밍연습 1 /15 6 강. 함수와배열, 포인터, 참조함수와포인터 C++ 매개변수전달방법 값에의한전달 : 변수값,

More information

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

Microsoft PowerPoint - additional01.ppt [호환 모드] 1.C 기반의 C++ part 1 함수 오버로딩 (overloading) 디폴트매개변수 (default parameter) 인-라인함수 (in-line function) 이름공간 (namespace) Jong Hyuk Park 함수 Jong Hyuk Park 함수오버로딩 (overloading) 함수오버로딩 (function overloading) C++ 언어에서는같은이름을가진여러개의함수를정의가능

More information

슬라이드 1

슬라이드 1 AVR(Atmega128) Interrupt 1 Interrupt Polling 사용자가명령어를사용하여입력핀의값을계속읽어서변화를알아냄 모든경우의입력또는값의변화에대응하여처리가가능 Interrupt MCU 자체가하드웨어적으로그변화를체크하여변화시에만일정한동작 하드웨어적으로지원되는몇개의입력또는값의변화에만대응처리가가능 처리속도는일반적인경우인터럽트가빠름 인터럽트발생시

More information

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

// 변수선언 unsigned char i; unsigned char FONT[]={0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xD8, 0x80, 0x98}; //PORTA 를출력으로설정하고초기값은모두 0 PORTA = 0x00; DD Code Vison AVR C ATmega8535 ATmega8535 제어실습 Chapter 1 I / O 포트제어하기 FND 제어 FND에는 Vcc를이용하는애노드 (anode) 형과 Gnd를이용하는 cathode형이있다. LED가여러개모여있다생각하고 LED선택에따라문자와숫자를만들어낼수있다. 최대한많은영문자를만들기위해대문자와소문자를혼합한다. ( 표현가능한문자

More information

Chapter 4. LISTS

Chapter 4. LISTS 6. 동치관계 (Equivalence Relations) 동치관계 reflexive, symmetric, transitive 성질을만족 "equal to"(=) 관계는동치관계임. x = x x = y 이면 y = x x = y 이고 y = z 이면 x = z 동치관계를이용하여집합 S 를 동치클래스 로분할 동일한클래스내의원소 x, y 에대해서는 x y 관계성립

More information

C 프로그램의 기본

C 프로그램의 기본 C 프로그램의기본 목차 C 프로그램의구성요소 주석 main 함수 출력 C 언어의입력과출력 변수 printf 함수 scanf 함수 2 예제 2-1 : 첫번째 C 프로그램 3 2.1.1 주석 주석의용도 프로그램에대한설명 프로그램전체에대한대략적인정보를제공 프로그램수행에영향을미치지않는요소 4 2.1.1 주석 주석사용방법 /* 과 */ 을이용한여러줄주석 // 을이용한한줄주석

More information

untitled

untitled int i = 10; char c = 69; float f = 12.3; int i = 10; char c = 69; float f = 12.3; printf("i : %u\n", &i); // i printf("c : %u\n", &c); // c printf("f : %u\n", &f); // f return 0; i : 1245024 c : 1245015

More information

Chapter 4. LISTS

Chapter 4. LISTS C 언어에서리스트구현 리스트의생성 struct node { int data; struct node *link; ; struct node *ptr = NULL; ptr = (struct node *) malloc(sizeof(struct node)); Self-referential structure NULL: defined in stdio.h(k&r C) or

More information

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

정보보안 개론과 실습:네트워크 ` 마이크로프로세서설계및실습 12-13 주차강의자료 학습목표 A/D 변환기의제어방법을이해한다 능숙하게 A/D 변환기를제어할수있도록반복실습한다 2/28 아날로그 - 디지털변환회로 아날로그 - 디지털변환회로 (A/D 변환회로 ) 는, 아날로그전기신호를디지털전기신호로변환하는전자회로이다 A/D 컨버터 (ADC: Analog-to-digital converter) 라고도불린다

More information

Microsoft PowerPoint - 제11장 포인터(강의)

Microsoft PowerPoint - 제11장 포인터(강의) 쉽게풀어쓴 C 언어 Express 제 11 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 1003 1004 1005 영화관 1002 1006 1001 포인터 (pointer) 1007 메모리의구조

More information

Microsoft Word - logic2005.doc

Microsoft Word - logic2005.doc 제 8 장 Counters 실험의목표 - Catalog counter 의동작원리에대하여익힌다. - 임의의 counter를통하여 FSM 구현방법을익힌다. - 7-segment display 의동작원리를이해한다. 실험도움자료 1. 7-segment display 7-segment는디지털회로에서숫자를표시하기위하여가장많이사용하는소자이다. 이름에서알수있듯이 7개의 LED(

More information

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A634C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A634C0CFC2F72E BC8A3C8AF20B8F0B5E55D> 뻔뻔한 AVR 프로그래밍 The 4 th Lecture 유명환 ( yoo@netplug.co.kr) 1 시간 (Time) 에대한정의 INDEX 2 왜타이머 (Timer) 와카운터 (Counter) 인가? 3 ATmega128 타이머 / 카운터동작구조 4 ATmega128 타이머 / 카운터관련레지스터 5 뻔뻔한노하우 : 레지스터비트설정방법 6 ATmega128

More information

OCW_C언어 기초

OCW_C언어 기초 초보프로그래머를위한 C 언어기초 4 장 : 연산자 2012 년 이은주 학습목표 수식의개념과연산자및피연산자에대한학습 C 의알아보기 연산자의우선순위와결합방향에대하여알아보기 2 목차 연산자의기본개념 수식 연산자와피연산자 산술연산자 / 증감연산자 관계연산자 / 논리연산자 비트연산자 / 대입연산자연산자의우선순위와결합방향 조건연산자 / 형변환연산자 연산자의우선순위 연산자의결합방향

More information

Data Structure

Data Structure Function & Pointer C- 언어의활용을위한주요기법 (3) Dong Kyue Kim Hanyang University dqkim@hanyang.ac.kr 함수의인자전달 함수의인자전달 함수의인자전달방식 인자전달의기본방식은복사다. 함수호출시전달되는값을매개변수를통해서전달받는데, 이때에값의복사가일어난다. int main(void) int val = 10;

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Chapter 06 반복문 01 반복문의필요성 02 for문 03 while문 04 do~while문 05 기타제어문 반복문의의미와필요성을이해한다. 대표적인반복문인 for 문, while 문, do~while 문의작성법을 알아본다. 1.1 반복문의필요성 반복문 동일한내용을반복하거나일정한규칙으로반복하는일을수행할때사용 프로그램을좀더간결하고실제적으로작성할수있음.

More information

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D> 리눅스 오류처리하기 2007. 11. 28 안효창 라이브러리함수의오류번호얻기 errno 변수기능오류번호를저장한다. 기본형 extern int errno; 헤더파일 라이브러리함수호출에실패했을때함수예 정수값을반환하는함수 -1 반환 open 함수 포인터를반환하는함수 NULL 반환 fopen 함수 2 유닉스 / 리눅스 라이브러리함수의오류번호얻기 19-1

More information

BY-FDP-4-70.hwp

BY-FDP-4-70.hwp RS-232, RS485 FND Display Module BY-FDP-4-70-XX (Rev 1.0) - 1 - 1. 개요. 본 Display Module은 RS-232, RS-485 겸용입니다. Power : DC24V, DC12V( 주문사양). Max Current : 0.6A 숫자크기 : 58mm(FND Size : 70x47mm 4 개) RS-232,

More information

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

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

More information

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

Microsoft PowerPoint - 제5장 인터럽트 (HBE-MCU-Multi AVR).ppt [호환 모드] Chapter. 5 인터럽트 HBE-MCU-Multi AVR Jaeheung, Lee 목차 1. 폴링과인터럽트그리고인터럽트서비스루틴 2. ATMega128 인터럽트 3. 인터럽트로 LED 점멸시키기 4. 인터럽트로스톱워치만들기 인터럽트 1. 폴링과인터럽트그리고인터럽트서비스루틴 2. ATMega128 인터럽트 3. 인터럽트로 LED 점멸시키기 4. 인터럽트로스톱워치만들기

More information

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 특징

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 특징 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

More information

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher( 실행할페이지.jsp); 다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp"); dispatcher.forward(request, response); - 위의예에서와같이 RequestDispatcher

More information

Microsoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드]

Microsoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드] Chapter 03 변수와자료형 2009 한국항공대학교항공우주기계공학부 (http://mercury.kau.ac.kr/sjkwon) 1 변수와자료유형 변수 프로그램에서자료값을임시로기억할수있는저장공간을변수 (variables) 변수 (Variables) 는컴퓨터의메모리인 RAM(Random Access Memory) 에저장 물건을담는박스라고생각한다면박스의크기에따라담을물건이제한됨

More information

K&R2 Reference Manual 번역본

K&R2 Reference Manual 번역본 typewriter structunion struct union if-else if if else if if else if if if if else else ; auto register static extern typedef void char short int long float double signed unsigned const volatile { } struct

More information

Microsoft PowerPoint - 부호기와 복호기.PPT

Microsoft PowerPoint - 부호기와 복호기.PPT 논리회로실험부호기와복호기 2005. 5. 3. 부호기와복호기란? 이론실험내용 개요 Encoder & Decoder 서로다른부호간의변환에사용되는것으로디지털신호를압축하거나전송시깨지지않도록바꾸는등여러가지목적에의해부호화라는장치와부호화되어전송되어온신호를다시원래의디지털신호로복호하는장치들을말한다. CODEC(enCOder DECoder) 이라고도한다. 기타 10진 to

More information

Microsoft PowerPoint - Java7.pptx

Microsoft PowerPoint - Java7.pptx HPC & OT Lab. 1 HPC & OT Lab. 2 실습 7 주차 Jin-Ho, Jang M.S. Hanyang Univ. HPC&OT Lab. jinhoyo@nate.com HPC & OT Lab. 3 Component Structure 객체 (object) 생성개념을이해한다. 외부클래스에대한접근방법을이해한다. 접근제어자 (public & private)

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Chapter 03 일단짜보는그럴듯한 C 프로그램... 1. 프로그램작성순서복습 2. 주석 3. scanf_s( ) 맛보기 1. 프로그램작성순서복습 프로그래밍작성순서요약 프로젝트만들기 : 소스파일보다프로젝트를먼저생성해야함 코딩 : C 컴파일러가알아들을수있는형식으로문서작성 빌드 : 컴파일과링크를합친개념 컴파일 : 소스를컴퓨터가이해하는오브젝트파일로변환 링크 :

More information

Microsoft PowerPoint - chap10-함수의활용.pptx

Microsoft PowerPoint - chap10-함수의활용.pptx #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 중 값에 의한 전달 방법과

More information

ch15

ch15 쉽게풀어쓴 C 언어 Express 제 14 장포인터활용 C Express 이중포인터 이중포인터 (double pointer) : 포인터를가리키는포인터 int i = 10; int *p = &i; int **q = &p; // i 는 int 형변수 // p 는 i 를가리키는포인터 // q 는포인터 p 를가리키는이중포인터 이중포인터 이중포인터의해석 이중포인터 //

More information

PowerPoint Presentation

PowerPoint Presentation #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을작성하면서 C 프로그램의구성요소에대하여알아본다.

More information

C 프로그래밊 개요

C 프로그래밊 개요 구조체 2009 년 5 월 19 일 김경중 강의계획수정 일자계획 Quiz 실습보강 5 월 19 일 ( 화 ) 구조체 Quiz ( 함수 ) 5 월 21 일 ( 목 ) 구조체저녁 6 시 5 월 26 일 ( 화 ) 포인터 5 월 28 일 ( 목 ) 특강 (12:00-1:30) 6 월 2 일 ( 화 ) 포인터 Quiz ( 구조체 ) 저녁 6 시 6 월 4 일 ( 목

More information

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

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

More information

chap 5: Trees

chap 5: Trees 5. Threaded Binary Tree 기본개념 n 개의노드를갖는이진트리에는 2n 개의링크가존재 2n 개의링크중에 n + 1 개의링크값은 null Null 링크를다른노드에대한포인터로대체 Threads Thread 의이용 ptr left_child = NULL 일경우, ptr left_child 를 ptr 의 inorder predecessor 를가리키도록변경

More information

2주차: 입출력 제어 복습

2주차: 입출력 제어 복습 마이크로프로세서 응용및실습 ` 13-14 주차 : 직렬통신 (2) 한철수 전자공학과 2/35 직렬통신과병렬통신 직렬통신 한가닥의선으로송수신할데이터를차례대로전송하는방식 장점 : 통신선로가적기때문에경제적임 단점 : 전송속도가느림. 송수신약속이복잡해짐 병렬통신 여러가닥의선으로동시에여러개의데이터를전송하는방식 장점 : 전송속도가빠름 단점 : 직렬통신보다비쌈 3/35

More information

Microsoft PowerPoint - 알고리즘_5주차_1차시.pptx

Microsoft PowerPoint - 알고리즘_5주차_1차시.pptx Basic Idea of External Sorting run 1 run 2 run 3 run 4 run 5 run 6 750 records 750 records 750 records 750 records 750 records 750 records run 1 run 2 run 3 1500 records 1500 records 1500 records run 1

More information

OCW_C언어 기초

OCW_C언어 기초 초보프로그래머를위한 C 언어기초 2 장 : C 프로그램시작하기 2012 년 이은주 학습목표 을작성하면서 C 프로그램의구성요소 주석 (comment) 이란무엇인지알아보고, 주석을만드는방법 함수란무엇인지알아보고, C 프로그램에반드시필요한 main 함수 C 프로그램에서출력에사용되는 printf 함수 변수의개념과변수의값을입력받는데사용되는 scanf 함수 2 목차 프로그램코드

More information

<4D F736F F F696E74202D20C1A63134C0E520C6F7C0CEC5CD5FC8B0BFEB>

<4D F736F F F696E74202D20C1A63134C0E520C6F7C0CEC5CD5FC8B0BFEB> 쉽게풀어쓴 C 언어 Express 제 14 장포인터활용 이중포인터 이중포인터 (double pointer) : 포인터를가리키는포인터 int i = 10; int *p = &i; int **q = &p; // i 는 int 형변수 // p 는 i 를가리키는포인터 // q 는포인터 p 를가리키는이중포인터 이중포인터 이중포인터의해석 이중포인터 // 이중포인터프로그램

More information

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver. 2.0 jbyoo@konkuk.ac.kr http://dslab.konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 이중포인터란무엇인가? 포인터배열 함수포인터 다차원배열과포인터 void 포인터 포인터는다양한용도로유용하게활용될수있습니다. 2 이중포인터

More information

Microsoft Word - FunctionCall

Microsoft Word - FunctionCall Function all Mechanism /* Simple Program */ #define get_int() IN KEYOARD #define put_int(val) LD A val \ OUT MONITOR int add_two(int a, int b) { int tmp; tmp = a+b; return tmp; } local auto variable stack

More information

Microsoft PowerPoint - 08-MP-4-interrupt

Microsoft PowerPoint - 08-MP-4-interrupt 순천향대학교컴퓨터학부이상정 1 학습내용 인터럽트기본 ATmega128 인터럽트벡터외부인터럽트인터페이스외부인터럽트프로그램예 순천향대학교컴퓨터학부이상정 2 인터럽트기본 순천향대학교컴퓨터학부이상정 3 인터럽트개념 CPU 내부또는외부의요구에의해서정상적인프로그램의실행순서를변경하여보다시급한작업 ( 인터럽트서비스루틴 ) 을먼저수행한후에다시원래의프로그램으로복귀하는것 인터럽트는주변장치의서비스요청에

More information

실험 5

실험 5 실험. OP Amp 의기초회로 Inverting Amplifier OP amp 를이용한아래와같은 inverting amplifier 회로를고려해본다. ( 그림 ) Inverting amplifier 위의회로에서 OP amp의 입력단자는 + 입력단자와동일한그라운드전압, 즉 0V를유지한다. 또한 OP amp 입력단자로흘러들어가는전류는 0 이므로, 저항에흐르는전류는다음과같다.

More information

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt 변수와상수 1 변수란무엇인가? 변수 : 정보 (data) 를저장하는컴퓨터내의특정위치 ( 임시저장공간 ) 메모리, register 메모리주소 101 번지 102 번지 변수의크기에따라 주로 byte 단위 메모리 2 기본적인변수형및변수의크기 변수의크기 해당컴퓨터에서는항상일정 컴퓨터마다다를수있음 short

More information

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상 Android 용 Brother Image Viewer 설명서 버전 0 KOR 아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상표입니다. Android는

More information

Microsoft PowerPoint - C++ 5 .pptx

Microsoft PowerPoint - C++ 5 .pptx C++ 언어프로그래밍 한밭대학교전자. 제어공학과이승호교수 연산자중복 (operator overloading) 이란? 2 1. 연산자중복이란? 1) 기존에미리정의되어있는연산자 (+, -, /, * 등 ) 들을프로그래머의의도에맞도록새롭게정의하여사용할수있도록지원하는기능 2) 연산자를특정한기능을수행하도록재정의하여사용하면여러가지이점을가질수있음 3) 하나의기능이프로그래머의의도에따라바뀌어동작하는다형성

More information

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

Microsoft PowerPoint - chap13-입출력라이브러리.pptx #include int main(void) int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; 1 학습목표 스트림의 기본 개념을 알아보고,

More information

<4D F736F F F696E74202D20322EB3EDB8AEC7A5C7F6B0FA20B3EDB8AEBCF6C7D02E >

<4D F736F F F696E74202D20322EB3EDB8AEC7A5C7F6B0FA20B3EDB8AEBCF6C7D02E > 논리수학과표현 논리의표현 진법과숫자표현 2 진수와 10 진수 문자의표현 dolicom@naver.com http://blog.naver.com/dolicom 숫자와문자의표현방식 숫자의표현 2 진수보수체계 정수형 Floating Point - 실수형 ASCII 코드 미국의컴퓨터문자표현 ( 1 바이트 ) KS-5601 한국어지원을위한완성형표준안 (2 바이트가한글자

More information