SlideShare a Scribd company logo
임베디드임베디드 마이크로프로세서마이크로프로세서
프로그래밍프로그래밍 실전실전
제작제작 :: 네네 로로 테테 크크
강의강의 :: 김김 종종 형형
--22--20062006--0303--2929
Embedded AVR ProgrammingEmbedded AVR Programming
ATMEGA128 I/OATMEGA128 I/O 제어제어
1. Input/Output 처리 방법
2. I/O 제어 프로그램 실습
--33--20062006--0303--2929
Embedded AVR ProgrammingEmbedded AVR Programming
1-1 I/O 포트의 기본 구조 1
⊙ 6개의 8비트 양방향 병렬 I/O포트 (A ~ F) 와 1개의 5비트 병렬 I/O포트(G)로 구성
⊙ Read-Modify-Write 동작 가능(A ~ E)
⊙ H상태의 source drive 와 L상태의 sink drive 능력이 대칭적
⊙ 최대 구동전류 (sinks up to 40 mA)
⊙ 풀업저항의 사용 여부를 설정(Pinwise Controlled Pull-Up Resistors)
⊙ 데이터 입출력방향을 설정(Pinwise Controlled Data Direction)
⊙ Three Control/Status Bits per Bit/Pin
--44--20062006--0303--2929
Embedded AVR ProgrammingEmbedded AVR Programming
1-1 I/O 포트의 기본 구조 2
☞ 각 포트는 3개의 I/O 레지스터 영역으로 구성
⊙ DDRx (Data Direction Register) : 입출력의 방향을 설정
⊙ PORTx (Data Register) : 데이터 출력에 해당하는 PORTx 레지스터
⊙ PINx (Port Input Pins Address) : 포트 입력 핀에 해당하는 PINx 레지스터
⊙ DDR, PORT 는 읽고 쓰는 것이 가능, PIN은 읽는 것만 가능한 레지스터
⊙ I/O포트의 풀업저항은 SFIOR 레지스터의 PUD(Pull-up Disable) 비트를 1로 셋하여 금지
내부 풀업 저항을 사용하려면 PUD비트를 0로 설정(DDRx = 0, PORTx = 1)
--55--20062006--0303--2929
Embedded AVR ProgrammingEmbedded AVR Programming
1-2 I/O 포트의 기본 동작
☞ I/O 포트 핀의 동작 설정
H출력(source)NoOutputX11
L출력(sink)NoOutputX01
3-State(하이 임피던스)NoInput110
내부 풀업YesInput010
3-State(하이 임피던스)NoInputX00
비고Pull-upI/OPUDPORTxnDDRxn
--66--20062006--0303--2929
Embedded AVR ProgrammingEmbedded AVR Programming
1-2 I/O 포트의 기본 동작 1
DDx
PORTx
PINx Physical Pin
Pull-Up
Direction: INPUT
Pull-Up: OFF
??
0
0
Default Configuration
--77--20062006--0303--2929
Embedded AVR ProgrammingEmbedded AVR Programming
1-2 I/O 포트의 기본 동작 2 Switch On Pull-Up
DDx
PORTx
PINx Physical Pin
Pull-Up
Direction: INPUT
Pull-Up: ON
??
0
11
--88--20062006--0303--2929
Embedded AVR ProgrammingEmbedded AVR Programming
1-2 I/O 포트의 기본 동작 3 Port is Output
DDx
PORTx
PINx Physical Pin
Pull-Up
11
1
11
11
1
Direction: OUTPUT
Pull-Up: OFF
--99--20062006--0303--2929
Embedded AVR ProgrammingEmbedded AVR Programming
1-3 I/O 포트의 부수적 동작
① 포트포트 AA
▶ 외부메모리를 인터페이스 위한 데이터버스 및 어드레스 버스의 하위 바이트로 동작
▶ 어드레스 버스를 분리하는데 ALE(Address Latch Enable)신호를 사용
AD0 (External memory interface address and data bit 0)PA0
AD1 (External memory interface address and data bit 1)PA1
AD2 (External memory interface address and data bit 2)PA2
AD3 (External memory interface address and data bit 3)PA3
AD4 (External memory interface address and data bit 4)PA4
AD5 (External memory interface address and data bit 5)PA5
AD6 (External memory interface address and data bit 6)PA6
AD7 (External memory interface address and data bit 7)PA7
부수적인 기능I/O PIN
--1010--20062006--0303--2929
Embedded AVR ProgrammingEmbedded AVR Programming
1-3 I/O 포트의 부수적 동작
② 포트포트 BB
▶ 타이머/카운터나 SPI 기능을 위한 신호들로 동작
/SS (SPI Slave Select Input)PB0
SCK (SPI Bus Serial Clock)PB1
MOSI (SPI Bus Master Output/Slave Input)PB2
MISO (SPI Bus Master Input/Slave Output)PB3
OC0 (Output compare and PWM Output for Timer/Counter0)PB4
OC1A (Output compare and PWM Output A for Timer/Counter2)PB5
OC1B (Output compare and PWM Output B for Timer/Counter1)PB6
OC2/OC1C (Timer/Counter2 or Timer/Counter1)PB7
부수적인 기능I/O PIN
--1111--20062006--0303--2929
Embedded AVR ProgrammingEmbedded AVR Programming
1-3 I/O 포트의 부수적 동작
③ 포트포트 CC
▶ 외부 메모리를 인터페이스하기 위한 어드레스 버스의 상위 바이트로 동작
A8 (External memory interface address and data bit 8)PC0
A9 (External memory interface address and data bit 9)PC1
A10 (External memory interface address and data bit 10)PC2
A11 (External memory interface address and data bit 11)PC3
A12 (External memory interface address and data bit 12)PC4
A13 (External memory interface address and data bit 13)PC5
A14 (External memory interface address and data bit 14)PC6
A15(External memory interface address and data bit 15)PC 7
부수적인 기능I/O PIN
--1212--20062006--0303--2929
Embedded AVR ProgrammingEmbedded AVR Programming
1-3 I/O 포트의 부수적 동작
④ 포트포트 DD
▶ 타이머/카운터나 외부 인터럽트 또는 USART1, TWI 직렬통신 포트 기능을 위한 신호들로 동작
INT0/SCL(External Interrupt0 Input or TWI Serial Clock)PD0
INT1/SDA(External Interrupt1 Input or TWI Serial Data)PD1
INT2/RXD1(External Interrupt2 Input or USART1 Receive Data)PD2
INT3/TXD1(External Interrupt3 Input or USART1 Transmit Data)PD3
ICP1(Timer/Counter1 Input Capture Pin)PD4
XCK1(USART1 External Clock Input/Output)PD5
T1(Timer/Counter1 Clock Input)PD6
T2(Timer/Counter2 clock Input)PD 7
부수적인 기능I/O PIN
--1313--20062006--0303--2929
Embedded AVR ProgrammingEmbedded AVR Programming
1-3 I/O 포트의 부수적 동작
⑤ 포트포트 EE
▶ 타이머/카운터나 외부인터럽트 또는 USART0 직렬통신포트, 아날로그 비교기, ISP 기능을 위한 신호로 동작
PDI/RXD0(ISP Programming Data Input or USART0 Receive Data)PE0
PDO/TXD0(ISP Programming Data Output or USART0 Transmit Data)PE1
AIN0/ACK0 (Analog Comparator Positive Input or
USART0 External Clock Input/Output)
PE2
AIN1/OC3A(Analog Comparator Negative Input or Output Compare and
PWM Output A for Timer/Couter3)
PE3
INT4/OC3B(External Interrupt4 Input or Output compare and
PWM Output B for Timer/Counter3)
PE4
INT5/OC3C(External Interrupt5 Input or Output compare and
PWM Output C for Timer/Counter3)
PE5
INT6/T3(External Interrupt6 Input or Timer/Counter3 Clock Input)PE6
INT7/ICP3(External Interrupt7 Input or Timer/Couter3 Input Capture Pin)PE 7
부수적인 기능I/O PIN
--1414--20062006--0303--2929
Embedded AVR ProgrammingEmbedded AVR Programming
1-3 I/O 포트의 부수적 동작
⑥ 포트포트 FF
▶ A/D 컨버터, JTAG 인터페이스를 위한 신호로 동작
ADC0 (ADC Input Channel 0)PF0
ADC1 (ADC Input Channel 1)PF1
ADC2 (ADC Input Channel 2)PF2
ADC3 (ADC Input Channel 3)PF3
ADC4/TCK (ADC Input Channel 4 or JTAG Test Clock)PF4
ADC5/TMS (ADC Input Channel 5 or JTAG Test Mode Select)PF5
ADC6/TDO (ADC Input Channel 6 or JTAG Test Data Output)PF6
ADC7/TD I(ADC Input Channel 7 or JTAG Test Data Input)PF 7
부수적인 기능I/O PIN
--1515--20062006--0303--2929
Embedded AVR ProgrammingEmbedded AVR Programming
1-3 I/O 포트의 부수적 동작
⑦ 포트포트 GG
▶ PG4 ~ PG0의 5비트만 사용되며 부수적인 기능은 외부메모리 인터페이스나 타이머/카운터로 동작
/WR (Write Strobe to External Memory)PG0
/RD (Read Strobe to External Memory)PG1
ALE (Address Latch Enable to External Memory)PG2
TOSC2 (RTC Oscillator Output for Timer/Counter0)PG3
TOSC1 (RTC Oscillator Input for Timer/Counter0)PG4
부수적인 기능I/O PIN
--1616--20062006--0303--2929
Embedded AVR ProgrammingEmbedded AVR Programming
1-4 I/O 포트의 제어 실습 1
☞ 포트B에 LED를 연결하고 왼쪽으로 이동하며 순차적으로 ON/OFF하는 프로그램
#include <mega128.h>
#include <delay.h>
void main(void)
{
unsigned char led = 0xfe ; // 변수의 정의
DDRB = 0xff ; // 포트B를 모두 출력으로 정의
PORTB = 0x00 ; // 처음 동작은 PORTB에 연결된 LED 모두 켜기
delay_ms(5000); // delay()함수를 이용하여 약 5초가 LED ON 상태 유지
while (1)
{
PORTB = led ; // PORTB에 LED 출력 지정
delay_ms(3000); // 3초 딜레이
led << = 1 ; // 좌쉬프트 1BIT
led |= 0x01 ; // 1비트 좌 SHIFTE 후 0X01 값을 논리합으로 함으로써
// 0의 값을 1로 셋트함
if (led == 0xff)
led = 0xfe ; // 모든 값이 1일 되면 LED ON 이 되지 않으므로
// LED 변수 초기화
}
}
--1717--20062006--0303--2929
Embedded AVR ProgrammingEmbedded AVR Programming
1-4 I/O 포트의 제어 실습 2
☞ 포트B에 LED를 연결하고 좌우 쉬프트 ON/OFF 하는 프로그램
#include <mega128.h>
#include <delay.h>
void main(void)
{
unsigned char led = 0xfe ; // 변수의 정의
DDRB = 0xff ; // 포트B를 모두 출력으로 정의
PORTB = 0x00 ; // 처음 동작은 PORTB에 연결된 LED 모두 켜기
delay_ms(3000); // delay()함수를 이용하여 약 3초간 LED ON 상태 유지
while (1)
{
do // do ~ while문 실행
{
PORTB = led ; // PORTB에 LED 출력 지정
delay_ms(1000);
led << = 1 ; // 좌쉬프트 1BIT
led |= 0x01 ; // 1비트 좌 SHIFTE 후 0X01 값을 논리합으로 함으로써 0의 값을 1로 셋트함
} while (led != 0x7f) ; // led가 좌측 쉬프트 마지막에 오면 다음 루틴을 실행
do
{
PORTB = led ; // PORTB에 LED 출력 지정
delay_ms(1000) ;
led >>= 1 ; // 우쉬프트 1BIT
led |= 0x80 ; // 1비트 우 SHIFTE 후 0X80 값을 논리합으로 함으로써 0의 값을 1로 셋트함
} while (led != 0xfe) ; // led가 우측 쉬프트 마지막에 오면 다음 루틴을 실행
}
}
--1818--20062006--0303--2929
Embedded AVR ProgrammingEmbedded AVR Programming
1-4 I/O 포트의 제어 실습 3
☞ 포트 C로 외부 신호를 입력 받아 포트 B로 데이터 값을 반전시켜 출력하는 프로그램
#include <mega128.h>
void main(void)
{
unsigned char key ; // key입력 변수 선언
MCUCR = 0x00; // 외부 메모리 디스에이블
DDRB = 0xff; // 포트 B를 출력으로 설정
DDRC = 0x00; // 포트 C를 입력으로 설정
PORTC = 0xff; // 내부 풀업저항 사용
while (1)
{
key = PINC; // 스위치가 눌릴 때 포트 C의 값을 읽어와서 key에 저장
PORTB = ~key; // key값을 포트 B에 LED출력
};
}

More Related Content

PDF
Avr lecture1
PDF
Avr lecture3
PDF
Avr lecture5
PDF
Avr lecture4
PPTX
PPTX
02. led switch
PPTX
Caanoo cofiguration and u boot
PDF
원준갓의 IoT 수업
Avr lecture1
Avr lecture3
Avr lecture5
Avr lecture4
02. led switch
Caanoo cofiguration and u boot
원준갓의 IoT 수업

What's hot (17)

PPT
Arduino Basic Programming
PDF
Arduino 소개, RC카 만들기
PDF
광운대[바람] 1.vhdl intro
PDF
1 5 horton series 2000 manual
PDF
아두이노 2015-2 한동대학교 공학설계입문
PDF
손으로 만드는 아두이노
PPTX
04. external interrupt
PPTX
메이커 페어 서울 2018 - 측우자격루(개발자용)
PDF
한컴MDS_TRACE32를 활용한 통합시험 시스템 구성 방안
PDF
아두이노와 Fpga를 이용한 로봇제작
PPTX
Mikrotic CCR1036 라우팅 설정
PDF
리모콘메뉴얼
PDF
Netmanias L2,L3 Training (5) L3 SW Architecture
PPTX
Smart rover 통신 분석
PPTX
MarsBoard RK3066 Linux 설치
PDF
Netmanias L2,L3 Training (3) L2, L3 QoS
PDF
Netmanias L2,L3 Training (1) L2 Ethernet
Arduino Basic Programming
Arduino 소개, RC카 만들기
광운대[바람] 1.vhdl intro
1 5 horton series 2000 manual
아두이노 2015-2 한동대학교 공학설계입문
손으로 만드는 아두이노
04. external interrupt
메이커 페어 서울 2018 - 측우자격루(개발자용)
한컴MDS_TRACE32를 활용한 통합시험 시스템 구성 방안
아두이노와 Fpga를 이용한 로봇제작
Mikrotic CCR1036 라우팅 설정
리모콘메뉴얼
Netmanias L2,L3 Training (5) L3 SW Architecture
Smart rover 통신 분석
MarsBoard RK3066 Linux 설치
Netmanias L2,L3 Training (3) L2, L3 QoS
Netmanias L2,L3 Training (1) L2 Ethernet
Ad

Similar to Avr lecture2 (20)

PDF
IoT 해커톤 교육 3일차
PPTX
#아두이노 초급연수
PDF
창조경제 IoT 해커톤 교육 4일차
PPT
백업을 위한 USB운영체제 완료세미나
PPTX
Maze통신교육 i2c
PDF
Avr lecture6
PPTX
컴퓨터개론04
DOCX
TestBCD2017-1(answer)
DOCX
TestBCD2018-2(answer)
DOCX
TestBCD2018-1(answer)
PPTX
[엄마정치 메이커팀] 두번째 모임_2018_01_27
PDF
01. avr studio 6.2 사용법
PDF
부팅
PPTX
Interrupt @atmega
PPTX
Interrupt @atmega
PPTX
Ch19
PDF
강의자료 코딩클럽 아두이노 워크샵-2015.4.11
PDF
MCU(nanheekim)
DOCX
TestBCD2015-1(Answer)
DOCX
TestBCD2016-1(Answer)
IoT 해커톤 교육 3일차
#아두이노 초급연수
창조경제 IoT 해커톤 교육 4일차
백업을 위한 USB운영체제 완료세미나
Maze통신교육 i2c
Avr lecture6
컴퓨터개론04
TestBCD2017-1(answer)
TestBCD2018-2(answer)
TestBCD2018-1(answer)
[엄마정치 메이커팀] 두번째 모임_2018_01_27
01. avr studio 6.2 사용법
부팅
Interrupt @atmega
Interrupt @atmega
Ch19
강의자료 코딩클럽 아두이노 워크샵-2015.4.11
MCU(nanheekim)
TestBCD2015-1(Answer)
TestBCD2016-1(Answer)
Ad

More from 봉조 김 (20)

PDF
창의·융합·문제해결을 배우는 메이커 활동 리스트
PDF
Softboxcoding brand name
PDF
Weather station performance sharing
PDF
Aircleaner 20190616 - 미세먼지 공기청정기 메이커활동 제안서
PDF
Softbox coding - raspberrypi3 b+ 2019 Lecture File
PDF
Sw education and maker
PDF
소프트박스 라즈베리파이 교육키트 개발환경 설정
PDF
Expansion of maker culture and promotion of maker activity
PDF
2018년 따복공동체 활동 공유 - 과천 디지털 창작집단
PDF
강사료 원천징수 관련 설명자료
PDF
Softbox review and quickstartguide-20180926
PDF
디지털창작집단 활동 소개문서
PDF
Softbox arduino software education, softbox 소프트박스 제품소개서
PDF
Stuffed animals 20180605
PDF
20180329 reco computer for maker
PDF
2018 donga marathon training schedule
PDF
2017 marathob trainning schedule
PDF
Marathon safe guide
PDF
사물인터넷서비스와 클라우드
PDF
4차 산업혁명과 io t 20170919
창의·융합·문제해결을 배우는 메이커 활동 리스트
Softboxcoding brand name
Weather station performance sharing
Aircleaner 20190616 - 미세먼지 공기청정기 메이커활동 제안서
Softbox coding - raspberrypi3 b+ 2019 Lecture File
Sw education and maker
소프트박스 라즈베리파이 교육키트 개발환경 설정
Expansion of maker culture and promotion of maker activity
2018년 따복공동체 활동 공유 - 과천 디지털 창작집단
강사료 원천징수 관련 설명자료
Softbox review and quickstartguide-20180926
디지털창작집단 활동 소개문서
Softbox arduino software education, softbox 소프트박스 제품소개서
Stuffed animals 20180605
20180329 reco computer for maker
2018 donga marathon training schedule
2017 marathob trainning schedule
Marathon safe guide
사물인터넷서비스와 클라우드
4차 산업혁명과 io t 20170919

Avr lecture2

  • 2. --22--20062006--0303--2929 Embedded AVR ProgrammingEmbedded AVR Programming ATMEGA128 I/OATMEGA128 I/O 제어제어 1. Input/Output 처리 방법 2. I/O 제어 프로그램 실습
  • 3. --33--20062006--0303--2929 Embedded AVR ProgrammingEmbedded AVR Programming 1-1 I/O 포트의 기본 구조 1 ⊙ 6개의 8비트 양방향 병렬 I/O포트 (A ~ F) 와 1개의 5비트 병렬 I/O포트(G)로 구성 ⊙ Read-Modify-Write 동작 가능(A ~ E) ⊙ H상태의 source drive 와 L상태의 sink drive 능력이 대칭적 ⊙ 최대 구동전류 (sinks up to 40 mA) ⊙ 풀업저항의 사용 여부를 설정(Pinwise Controlled Pull-Up Resistors) ⊙ 데이터 입출력방향을 설정(Pinwise Controlled Data Direction) ⊙ Three Control/Status Bits per Bit/Pin
  • 4. --44--20062006--0303--2929 Embedded AVR ProgrammingEmbedded AVR Programming 1-1 I/O 포트의 기본 구조 2 ☞ 각 포트는 3개의 I/O 레지스터 영역으로 구성 ⊙ DDRx (Data Direction Register) : 입출력의 방향을 설정 ⊙ PORTx (Data Register) : 데이터 출력에 해당하는 PORTx 레지스터 ⊙ PINx (Port Input Pins Address) : 포트 입력 핀에 해당하는 PINx 레지스터 ⊙ DDR, PORT 는 읽고 쓰는 것이 가능, PIN은 읽는 것만 가능한 레지스터 ⊙ I/O포트의 풀업저항은 SFIOR 레지스터의 PUD(Pull-up Disable) 비트를 1로 셋하여 금지 내부 풀업 저항을 사용하려면 PUD비트를 0로 설정(DDRx = 0, PORTx = 1)
  • 5. --55--20062006--0303--2929 Embedded AVR ProgrammingEmbedded AVR Programming 1-2 I/O 포트의 기본 동작 ☞ I/O 포트 핀의 동작 설정 H출력(source)NoOutputX11 L출력(sink)NoOutputX01 3-State(하이 임피던스)NoInput110 내부 풀업YesInput010 3-State(하이 임피던스)NoInputX00 비고Pull-upI/OPUDPORTxnDDRxn
  • 6. --66--20062006--0303--2929 Embedded AVR ProgrammingEmbedded AVR Programming 1-2 I/O 포트의 기본 동작 1 DDx PORTx PINx Physical Pin Pull-Up Direction: INPUT Pull-Up: OFF ?? 0 0 Default Configuration
  • 7. --77--20062006--0303--2929 Embedded AVR ProgrammingEmbedded AVR Programming 1-2 I/O 포트의 기본 동작 2 Switch On Pull-Up DDx PORTx PINx Physical Pin Pull-Up Direction: INPUT Pull-Up: ON ?? 0 11
  • 8. --88--20062006--0303--2929 Embedded AVR ProgrammingEmbedded AVR Programming 1-2 I/O 포트의 기본 동작 3 Port is Output DDx PORTx PINx Physical Pin Pull-Up 11 1 11 11 1 Direction: OUTPUT Pull-Up: OFF
  • 9. --99--20062006--0303--2929 Embedded AVR ProgrammingEmbedded AVR Programming 1-3 I/O 포트의 부수적 동작 ① 포트포트 AA ▶ 외부메모리를 인터페이스 위한 데이터버스 및 어드레스 버스의 하위 바이트로 동작 ▶ 어드레스 버스를 분리하는데 ALE(Address Latch Enable)신호를 사용 AD0 (External memory interface address and data bit 0)PA0 AD1 (External memory interface address and data bit 1)PA1 AD2 (External memory interface address and data bit 2)PA2 AD3 (External memory interface address and data bit 3)PA3 AD4 (External memory interface address and data bit 4)PA4 AD5 (External memory interface address and data bit 5)PA5 AD6 (External memory interface address and data bit 6)PA6 AD7 (External memory interface address and data bit 7)PA7 부수적인 기능I/O PIN
  • 10. --1010--20062006--0303--2929 Embedded AVR ProgrammingEmbedded AVR Programming 1-3 I/O 포트의 부수적 동작 ② 포트포트 BB ▶ 타이머/카운터나 SPI 기능을 위한 신호들로 동작 /SS (SPI Slave Select Input)PB0 SCK (SPI Bus Serial Clock)PB1 MOSI (SPI Bus Master Output/Slave Input)PB2 MISO (SPI Bus Master Input/Slave Output)PB3 OC0 (Output compare and PWM Output for Timer/Counter0)PB4 OC1A (Output compare and PWM Output A for Timer/Counter2)PB5 OC1B (Output compare and PWM Output B for Timer/Counter1)PB6 OC2/OC1C (Timer/Counter2 or Timer/Counter1)PB7 부수적인 기능I/O PIN
  • 11. --1111--20062006--0303--2929 Embedded AVR ProgrammingEmbedded AVR Programming 1-3 I/O 포트의 부수적 동작 ③ 포트포트 CC ▶ 외부 메모리를 인터페이스하기 위한 어드레스 버스의 상위 바이트로 동작 A8 (External memory interface address and data bit 8)PC0 A9 (External memory interface address and data bit 9)PC1 A10 (External memory interface address and data bit 10)PC2 A11 (External memory interface address and data bit 11)PC3 A12 (External memory interface address and data bit 12)PC4 A13 (External memory interface address and data bit 13)PC5 A14 (External memory interface address and data bit 14)PC6 A15(External memory interface address and data bit 15)PC 7 부수적인 기능I/O PIN
  • 12. --1212--20062006--0303--2929 Embedded AVR ProgrammingEmbedded AVR Programming 1-3 I/O 포트의 부수적 동작 ④ 포트포트 DD ▶ 타이머/카운터나 외부 인터럽트 또는 USART1, TWI 직렬통신 포트 기능을 위한 신호들로 동작 INT0/SCL(External Interrupt0 Input or TWI Serial Clock)PD0 INT1/SDA(External Interrupt1 Input or TWI Serial Data)PD1 INT2/RXD1(External Interrupt2 Input or USART1 Receive Data)PD2 INT3/TXD1(External Interrupt3 Input or USART1 Transmit Data)PD3 ICP1(Timer/Counter1 Input Capture Pin)PD4 XCK1(USART1 External Clock Input/Output)PD5 T1(Timer/Counter1 Clock Input)PD6 T2(Timer/Counter2 clock Input)PD 7 부수적인 기능I/O PIN
  • 13. --1313--20062006--0303--2929 Embedded AVR ProgrammingEmbedded AVR Programming 1-3 I/O 포트의 부수적 동작 ⑤ 포트포트 EE ▶ 타이머/카운터나 외부인터럽트 또는 USART0 직렬통신포트, 아날로그 비교기, ISP 기능을 위한 신호로 동작 PDI/RXD0(ISP Programming Data Input or USART0 Receive Data)PE0 PDO/TXD0(ISP Programming Data Output or USART0 Transmit Data)PE1 AIN0/ACK0 (Analog Comparator Positive Input or USART0 External Clock Input/Output) PE2 AIN1/OC3A(Analog Comparator Negative Input or Output Compare and PWM Output A for Timer/Couter3) PE3 INT4/OC3B(External Interrupt4 Input or Output compare and PWM Output B for Timer/Counter3) PE4 INT5/OC3C(External Interrupt5 Input or Output compare and PWM Output C for Timer/Counter3) PE5 INT6/T3(External Interrupt6 Input or Timer/Counter3 Clock Input)PE6 INT7/ICP3(External Interrupt7 Input or Timer/Couter3 Input Capture Pin)PE 7 부수적인 기능I/O PIN
  • 14. --1414--20062006--0303--2929 Embedded AVR ProgrammingEmbedded AVR Programming 1-3 I/O 포트의 부수적 동작 ⑥ 포트포트 FF ▶ A/D 컨버터, JTAG 인터페이스를 위한 신호로 동작 ADC0 (ADC Input Channel 0)PF0 ADC1 (ADC Input Channel 1)PF1 ADC2 (ADC Input Channel 2)PF2 ADC3 (ADC Input Channel 3)PF3 ADC4/TCK (ADC Input Channel 4 or JTAG Test Clock)PF4 ADC5/TMS (ADC Input Channel 5 or JTAG Test Mode Select)PF5 ADC6/TDO (ADC Input Channel 6 or JTAG Test Data Output)PF6 ADC7/TD I(ADC Input Channel 7 or JTAG Test Data Input)PF 7 부수적인 기능I/O PIN
  • 15. --1515--20062006--0303--2929 Embedded AVR ProgrammingEmbedded AVR Programming 1-3 I/O 포트의 부수적 동작 ⑦ 포트포트 GG ▶ PG4 ~ PG0의 5비트만 사용되며 부수적인 기능은 외부메모리 인터페이스나 타이머/카운터로 동작 /WR (Write Strobe to External Memory)PG0 /RD (Read Strobe to External Memory)PG1 ALE (Address Latch Enable to External Memory)PG2 TOSC2 (RTC Oscillator Output for Timer/Counter0)PG3 TOSC1 (RTC Oscillator Input for Timer/Counter0)PG4 부수적인 기능I/O PIN
  • 16. --1616--20062006--0303--2929 Embedded AVR ProgrammingEmbedded AVR Programming 1-4 I/O 포트의 제어 실습 1 ☞ 포트B에 LED를 연결하고 왼쪽으로 이동하며 순차적으로 ON/OFF하는 프로그램 #include <mega128.h> #include <delay.h> void main(void) { unsigned char led = 0xfe ; // 변수의 정의 DDRB = 0xff ; // 포트B를 모두 출력으로 정의 PORTB = 0x00 ; // 처음 동작은 PORTB에 연결된 LED 모두 켜기 delay_ms(5000); // delay()함수를 이용하여 약 5초가 LED ON 상태 유지 while (1) { PORTB = led ; // PORTB에 LED 출력 지정 delay_ms(3000); // 3초 딜레이 led << = 1 ; // 좌쉬프트 1BIT led |= 0x01 ; // 1비트 좌 SHIFTE 후 0X01 값을 논리합으로 함으로써 // 0의 값을 1로 셋트함 if (led == 0xff) led = 0xfe ; // 모든 값이 1일 되면 LED ON 이 되지 않으므로 // LED 변수 초기화 } }
  • 17. --1717--20062006--0303--2929 Embedded AVR ProgrammingEmbedded AVR Programming 1-4 I/O 포트의 제어 실습 2 ☞ 포트B에 LED를 연결하고 좌우 쉬프트 ON/OFF 하는 프로그램 #include <mega128.h> #include <delay.h> void main(void) { unsigned char led = 0xfe ; // 변수의 정의 DDRB = 0xff ; // 포트B를 모두 출력으로 정의 PORTB = 0x00 ; // 처음 동작은 PORTB에 연결된 LED 모두 켜기 delay_ms(3000); // delay()함수를 이용하여 약 3초간 LED ON 상태 유지 while (1) { do // do ~ while문 실행 { PORTB = led ; // PORTB에 LED 출력 지정 delay_ms(1000); led << = 1 ; // 좌쉬프트 1BIT led |= 0x01 ; // 1비트 좌 SHIFTE 후 0X01 값을 논리합으로 함으로써 0의 값을 1로 셋트함 } while (led != 0x7f) ; // led가 좌측 쉬프트 마지막에 오면 다음 루틴을 실행 do { PORTB = led ; // PORTB에 LED 출력 지정 delay_ms(1000) ; led >>= 1 ; // 우쉬프트 1BIT led |= 0x80 ; // 1비트 우 SHIFTE 후 0X80 값을 논리합으로 함으로써 0의 값을 1로 셋트함 } while (led != 0xfe) ; // led가 우측 쉬프트 마지막에 오면 다음 루틴을 실행 } }
  • 18. --1818--20062006--0303--2929 Embedded AVR ProgrammingEmbedded AVR Programming 1-4 I/O 포트의 제어 실습 3 ☞ 포트 C로 외부 신호를 입력 받아 포트 B로 데이터 값을 반전시켜 출력하는 프로그램 #include <mega128.h> void main(void) { unsigned char key ; // key입력 변수 선언 MCUCR = 0x00; // 외부 메모리 디스에이블 DDRB = 0xff; // 포트 B를 출력으로 설정 DDRC = 0x00; // 포트 C를 입력으로 설정 PORTC = 0xff; // 내부 풀업저항 사용 while (1) { key = PINC; // 스위치가 눌릴 때 포트 C의 값을 읽어와서 key에 저장 PORTB = ~key; // key값을 포트 B에 LED출력 }; }