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

Similar documents
Microsoft Word - PIC16x_Section20_Comparator_31020a.doc

Real Time In-Circuit Emulator for MICROCHIP PIC16CXX

Microsoft Word - PEB08_USER_GUIDE.doc

MPLAB C18 C

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

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

CAN-fly Quick Manual

Microsoft Word - Lab.4

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

AVR Atmega128

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A634C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

Microsoft Word - PIC16x_Section05_CPU_ALU_31005a.doc

구성품 - UMD 2808 모듈 - JTAG 커넥터 - 젂원 케이블 주요 특징 모듈의 부품화 : 고신뢰성의 DSP 모듈을 최적화된 시스템에 적용 용이 TMS320F2808 ZGMS - 100MHz 탑재 : 확장된 온도규격 (-40 도 ~ 125 도) 적용 Ultralo

ATmega128

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

Microsoft Word - logic2005.doc

<4D F736F F F696E74202D20332EB5F0C1F6C5D0C8B8B7CEBFCD20B1B8C7F62E >

Rev V0. Date 0 /0/ PICF 확장형개발보드매뉴얼. 제품소개및특징. 제품소개 < 그림.> PICF 확장형개발보드사진 Microchip사의 비트프로세서인 PICF MCU를이용하여학습및개발을할수있는 PIC 확장형개발보드입니다. 초보자를세심하게배려하기위하여모든부

HWP Document

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

Chapter ...

Microsoft PowerPoint - es-arduino-lecture-03

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

슬라이드 제목 없음

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202831C1D6C2F72C2032C1D6C2F729>

(b) 미분기 (c) 적분기 그림 6.1. 연산증폭기연산응용회로

Microsoft PowerPoint - AVR100%(1).ppt

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

21993A.book

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A636C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

마이컴응용 NE555-1 저자 : 박권서 [3] NE555 (Precision Timer) 수 ms에서수시간까지타이밍조정 비단정 (Astable) 또는단안정 (Monostable) 동작 듀티사이클 (Duty Cycle) 조정 200mA까지흡수 (Sink) 하거나공급할수

PowerPoint 프레젠테이션

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

KEY 디바이스 드라이버

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

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

Rev V0. Date 0 /0/ PICFA 확장형개발보드매뉴얼. 제품소개및특징. 제품소개 < 그림.> PICFA 확장형개발보드사진 Microchip사의 비트프로세서인 PICFA MCU를이용하여학습및개발을할수있는 PIC 확장형개발보드입니다. 초보자를세심하게배려하기위하여

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

뉴티씨 (NEWTC) 2. FB-CY4E-DEV (FPGA 개발 키트) 구성도 Port Select SW 7 Segment Text LCD UART RS-232C JTAG PORTA (5V) Active Serial PORTB (5V) OSC. 50MHz Analog

STM32F2xx 시리즈의특성 Core: ARM 32-bit Cortex -M3 CPU with Adaptive real-time accelerator (ARTAccelerator ) allowing 0-wait state execution performance fro

Microsoft Word - ICD2PLUS_2003.doc

API 매뉴얼

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

학습목차 r 컴퓨터본체에서 CPU 의위치살펴보기 r CPU 의성능 r CPU 의기능 r CPU 의조직 r 레지스터의조직 r 명령어사이클 r 명령어파이프라이닝 컴퓨터구조 2 9. CPU 조직과기능

Microsoft Word - elcd_manual.doc

28 저전력복합스위칭기반의 0.16mm 2 12b 30MS/s 0.18um CMOS SAR ADC 신희욱외 Ⅰ. 서론 Ⅱ. 제안하는 SAR ADC 구조및회로설계 1. 제안하는 SAR ADC의전체구조

PowerPoint 프레젠테이션

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202831C1D6C2F72C2032C1D6C2F729>

API 매뉴얼

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

Microsoft PowerPoint - Ch13

Microsoft Word - ds_probee-ze20s_kr-v1.0.0.docx

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


Microsoft Word - DCMD-1000 사용자 메뉴얼.docx

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

M16_32KIT_Manual.hwp

½½¶óÀ̵å Á¦¸ñ ¾øÀ½

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

실험 5

À̵¿·Îº¿ÀÇ ÀÎÅͳݱâ¹Ý ¿ø°ÝÁ¦¾î½Ã ½Ã°£Áö¿¬¿¡_.hwp

ºÎ·ÏB

SAT8-10.hwp

Microsoft PowerPoint - hy2-12.pptx

PowerPoint Presentation

1_12-53(김동희)_.hwp

Microsoft PowerPoint - Chapter 8_USART Serial Communication

Microsoft Word doc

Microsoft Word - Lab.7

매뉴얼

Microsoft PowerPoint - CPLD_수정1.pptx

슬라이드 1

DE1-SoC Board

실험 5

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

Microsoft PowerPoint UNIX Shell.ppt

(b) 연산증폭기슬루율측정회로 (c) 연산증폭기공통모드제거비측정회로 그림 1.1. 연산증폭기성능파라미터측정회로

KMC.xlsm

Implementation of FreeRTOS on LM3S811

03_원격제어반_IDAC-2W

<4D F736F F F696E74202D203131C1D6C2F7202D E6FB8A620C0CCBFEBC7D120C4B3B8AFC5CD204C43442C C1A6BEEEC7CFB1E2205

슬라이드 1

ADP-2480

2주차: 입출력 제어 복습

Microsoft Word - AM-GYRO-P V02 메뉴얼.doc

PowerPoint 프레젠테이션

BY-FDP-4-70.hwp

Dr.Kim ATmega128 Training Kit (SAT ).hwp

AN2629

Microsoft Word - PIC16x_Section17_MSSP_31017a.doc

<4D F736F F F696E74202D2037C0E55FC0CCC0C0C7F55FBFCFBCBA205BC8A3C8AF20B8F0B5E55D>

개요

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

학습목차 r컴퓨터분해를통한본체살펴보기 r컴퓨터구성요소 r컴퓨터의기능 r버스와상호연결 컴퓨터구조 2 4. 컴퓨터시스템의구성과기능

실험 5

Mango-IMX6Q mfgtool을 이용한 이미지 Write하기

<4D F736F F F696E74202D2037C0E55FC0CEC5CDB7B4C6AEC0C720B5BFC0DB2E707074>

T100MD+

Transcription:

Microchip Mid-Range MCU Family Reference Manual Section 9. I/O

목차 Section 2. Oscillator Section 3. Reset Section 4. Architecture Section 5. CPU and ALU Section 6. Memory organization Section 7. Data EEPROM Section 8. Interrupt Section 9. I/O Port Section 11. Timer0 Section 12. Timer1 Section 13. Timer2 Section 14. Compare / Capture / PWM (CCP) Section 17. Master Synchronous Serial Port (MSSP) Section 18. USART Section 19. Voltage Reference Section 20. Comparator Section 21. 8 bit A/D Converter Section 22. Basic 8 bit A/D Converter Section 23. 10 bit A/D Converter Section 25. LCD Section 26. Watchdog Timer and Sleep Mode Section 27. Device Configuration Bits Section 28. In-Circuit Serial Programming (ICSP) Section 29. Instruction Set

Agenda 1. 소개 2. PORTA 와 TRISA 레지스터 3. PORTB 와 TRISB 레지스터 4. PORTC 와 TRISC 레지스터 5. PORTD 와 TRISD 레지스터 6. PORTF 와 TRISF 레지스터 7. GPIO 와 TRISGP 레지스터 8. 입출력포트의연속동작

1. 소개 GPIO 핀 (General purpose Input Output Pin) 들은주변장치의가장단순한형태라고생각할수있다. 이핀들은다른디바이스를컨트롤하거나모니터하는것이가능하다. 일부핀들은대체기능들로선택이가능하다. 이러한기능들은디바이스에따라다르다. 일반적으로주변장치기능들이활성화됐을때, GPIO 핀으로써는사용이되지않는다. 대부분의포트들에서, 입출력핀의방향은 TRIS라고불리는데이터방향레지스터에의해서컨트롤된다. 이 TRIS 레지스터의해당비트를 1로설정하면입력이되고, 0으로설정하면출력으로설정이된다. 비트설정시 Input의 I가입력설정 1과유사하고, Output 의 O가출력설정인 0과유사하다 로기억하면쉽게기억할수있다. PORT 레지스터는출력이될데이터를위한래치 (Latch) 이다. PORT가읽힐때는, 디바이스는래치가아닌현재 I/O의레벨상태를읽는다. 이것은핀의방향을입력에서출력으로바꿀때포트에읽기-변경-쓰기 (Read-Modify-Write) 명령이이루어지는것을주의해야하는것을의미한다. 위그림은주변장치의기능을제외한전형적인입출력포트의구성이다. 포트를쓸때 (BSF 나 BCF 명령어로 ) 는읽기 - 변경 - 쓰기동작을수행한다. 이방식은현재포트상태를 읽고그값을변경하고포트데이터래치에데이터를쓰는과정으로이루어진다. 주변장치기능을일반입출력포트에선택을하게되면입출력포트의기능은주변장치의모듈을수용하여기능이수행된다. 예를들어, ADC 컨버터나 LCD 모듈의기능을활성화시키게되면, 디바이스리셋후에입출력핀이 ADC나 LCD의기능을수행한다. ADC의기능을선택했을경우주변장치기능들이따로 On 되어있지않기때문에전류가초과되어소모되는것을막을수있다. PORT 핀은아날로그입력핀들과 Vref 입력핀과선택적으로연결될수있다. 아날로그입력으로쓸지, 디지털입출력으로사용할지는 ADCON1 레지스터에있는컨트롤비트를통해서이루어진다. 아날로그비트로써선택이되었을때, 이러한핀들은 0으로써읽

힌다. TRIS 레지스터들은포트핀들의방향을컨트롤한다. 핀을아날로그입력핀으로사용하려고할때에도 TRIS를입력으로명시해야한다. 왜냐하면아날로그입력핀으로사용한다고하더라도 TRIS를출력으로설정하면핀은출력으로설정이적용되기때문이다. 따라서반드시포트방향을확인해줘야한다. MPLAB X IDE 에서 ADCON1 레지스터를통해서아날로그입력으로사용한다고설정한 다음 TRISA 를출력으로설정하였더니그대로설정되었다. 따라서반드시입출력방향설 정에주의해야한다. I. 만약아날로그핀으로핀을선택했다면, 파워 - 온리셋때핀들은 ADCON1 레지스 터에의해서아날로그입력으로설정된다. 이포트핀들을읽으면아날로그입력 이 0 으로읽힌다. II. 만약핀들이비교기의입력으로설정되었다면, CMCON 레지스터에의해서설정 이되고아날로그입력으로읽으면 0 으로읽힌다. III. 만약핀들을 LCD를표현하는기능으로썼다면, 파워-온리셋때이핀들은 LCD 드라이버를구동하는데쓰인다, LCDSE 레지스터를이용하여서설정을한다. 이핀들을디지털포트로사용하기위해서는 LCDSE 레지스터들은반드시클리어되어야한다. LCDSE 레지스터를셋으로설정하면해당포트의 TRIS 레지스터가셋된다. IV. 핀들을 Parallel Slave Port(PSP) 로설정하였다면, PSPMODE 비트가셋되어야하 고, I/O 핀을디지털입력으로설정해야한다. V. 위에서언급된 PSP 기능으로사용을하려면 PORTD 와 PORTE 만사용해야한다. PSPMODE 비트를셋해야 PSP 기능을사용할수있다. 이모드에서, 사용자는 반드시 TRISE 비트들을셋되었는지확인해야한다. PSP 기능은디지털입력일

때동작하기때문이다. 그리고 PORTE가디지털입출력핀으로설정되어야한다. PORTD는 TRISD 레지스터에있는변수값이쓰일것이다. 이모드에서는 PORTD 와 PORTE 입력버퍼가 TTL이다. PSP동작을위한컨트롤비트들은 TRISE에위치해있다. 2. PORTA 와 TRISA 레지스터 RA4 핀은슈미트트리거입력이고오픈드레인출력이다. 나머지 RA 포트핀들은 TTL 입력레벨과 CMOS 출력드라이버이다. 모든핀들은핀들을입력혹은출력으로설정할데이터방향비트들 (TRIS) 을갖고있다. 위그림은슈미트트리거의동작을표현한그래프와로직에서의기호를나타낸다. 히스테리시스의특성을적용하여위오른쪽과같이내부회로가꾸며진로직이나디바이스를사용한다. Low to High 상태변화할때의문턱전압 (Threshold) 은 1.8V에서상태가변하고 High to Low로변할때는 0.8V에서변하는차이가있다. 이렇게문턱상태변화할때의문턱전압의차이는센서나입력신호의 High인상태와 Low인각각의상태에서전압이흔들리는노이즈가많을때사용하면효과적이다. PORTA 초기화 CLRF STATUS ; Bank0 CLRF PORTA ; Initialize PORTA by clearing output ; data latches BSF STATUS, RP0 ; Select Bank1 MOVLW 0xCF ; Value used to initialize data direction MOVWF TRISA ; PORTA<3:0> = inputs PORTA<5:4> = outputs ; TRISA<7:6> always read as '0' 위어셈블리코드는 Bank0 에있는 PORT 를 0x00 으로초기화하고 TRISA 를 0xCF 로초기 화하는코드이다.

위블록다이어그램은 RA0~RA3 번그리고 RA5 번핀에해당되는다이어그램이다. 입력레벨은 TTL 로동작하고출력에 Vdd 와 Vss 모두다이오드로보호된다. 위다이어그램은 RA4 번핀에만해당되는다이어그램이다. 입력버퍼는슈미트트리거입 력버퍼이며출력은오픈드레인이다.

3. PORTB 와 TRISB 레지스터 PORTB는 8비트양방향성 (bi-directional port) 포트이다. 이는 TRISB 레지스터에따라바뀐다. 선택한핀의 TRIS를클리어시켜서출력래치핀으로사용할수있다. TRISB 레지스터를셋하여서하이인피던스입력모드로사용할수있다. CLRF STATUS ; Bank0 CLRF PORTB ; Initialize PORTB by clearing output ; data latches BSF STATUS, RP0 ; Select Bank1 MOVLW 0xCF ; Value used to initialize data direction MOVWF TRISB ; PORTB<3:0> = inputs, PORTB<5:4> = outputs ; PORTB<7:6> = inputs 위어셈블리예제코드는 Bank0 에있는 STATUS 레지스터를초기화하고포트 B 를 0 으로 초기화하고상태레지스터의뱅크선택비트 RP0 를셋하여서 Bank 1 을선택한다. 워킹레지스터에 0xCF 값을써주고이값을 TRISB 에저장한다. 그러면 PORTB 의 4,5 번 비트만출력으로설정이되고나머지값들은 1 로셋팅하였기때문에입력으로설정이된 다. 위다이어그램은 RB0번부터 RB3번까지의핀에대한다이어그램이다. PORTB의각각의핀들은내부풀업을갖고있다. 하나의컨트롤비트는전체풀업을변화시킨다. 이기능은 OPTION 레지스터의최상위비트 RBPU를 0으로초기화하여서사용한다. 풀업기능은파워-온리셋에의해서비활성화되며, 각각의풀업은핀을출력으로설정하면자동적으로비활성화된다. PORTB 의상위 4 개의비트 RB7:RB4 는핀의상태변화에대하여인터럽트기능을갖고 있다. 입력으로핀을설정해야지만이기능을사용할수있다. 핀을출력으로사용하게 되면이상태변화인터럽트기능에서제외가된다. 이핀들은이전의읽은 PORTB 값과

가장마지막에리드 (Read) 값을비교하여서달라졌을경우에 RB 포트변화인터럽트플래그 RBIF를이용하여서인터럽트를발생시킨다. 또이인터럽트는디바이스를슬립모드로부터나올수있게한다. 사용자는 RBIF의플래그를인터럽트서비스루틴에서다음과같은수행에의해서클리어된다. a. 직접클리어시켜야한다. b. PORTB 에값을쓰거나읽으면불일치조건 (mismatch condition) 은끝난다. 상태변화인터럽트와함께소프트웨어적으로설정가능한이 4 개의핀에대한내부풀업에 대한특성은키패드와 wake-up 을위한키누름 (Key-depression) 을구현하는것을쉽게만들어 준다. 상태변화인터럽트는키누름으로 wake-up 하기위해서사용되는것에권장되고, PORTB 는상 태변화특징에대한인터럽트를위해서사용하는것을권장한다. 상태변화에대한인터럽트 를사용하고있을때 PORTB 를폴링해서사용하는것은권장하지않는다.

4. PORT C 와 TRIS C 레지스터 포트 C 도 8 비트의양방향포트이다. 각각의핀들은 TRIS 레지스터설정을통해서입력 또는출력으로사용할수있다. 포트 C 는슈미트트리거입력버퍼를갖고있다. 주변장치기능을사용하였을때, 각각의포트 C 핀에대한정의를하는것에주의를해야 한다. 일부주변장치는 TRIS 비트를출력으로만들어버릴수도있고, 또다른주변장치들 을 TRIS 핀을입력으로바꿔버릴수도있다. CLRF STATUS ; Bank0 CLRF PORTC ; Initialize PORTC by clearing output ; data latches BSF STATUS, RP0 ; Select Bank1 MOVLW 0xCF ; Value used to initialize data direction MOVWF TRISC ; PORTC<3:0> = inputs, PORTC<5:4> = outputs ; PORTC<7:6> = inputs 위는포트 C 초기화를위한어셈블리코드이다. 위의다른포트의초기화와같이뱅크에 서포트의출력을 0x00 으로초기화해주고, TRIS 를 5,4 비트만출력으로설정하고나머지 비트는 1 로셋하면서입력으로설정한다. 다음은포트 C 에대한블록다이어그램이다. 포트와주변장치선택신호선은포트데이터와주변장치출력을 Mux 를통해서선택한다. 주변장치출력활성화핀 (OE) 은주변장치선택핀이활성화되었을경우에만유효하다. 입출력핀의 Vdd 와 Vss 에보호를위한다이오드가달려있다. 5. PORT D 와 TRIS D 레지스터 PORTD 도슈미트트리거입력버퍼를갖은 8 비트폭의레지스터이다. 각각의핀들은개 별적으로입력과출력으로설정될수있다. CLRF STATUS CLRF PORTD ; Bank0 ; Initialize PORTD by clearing output ; data latches

BSF STATUS, RP0 ; Select Bank1 MOVLW 0xCF ; Value used to initialize data direction MOVWF TRISD ; PORTD<3:0> = inputs, PORTD<5:4> = outputs ; PORTD<7:6> = inputs 위예제역시 PORT B,C 와같이포트와 TRIS 레지스터명만바뀌었을뿐내용은같다. 6. PORTF 와 TRISF 레지스터 포트 F 는디지털입력으로만사용하는포트이다. 각각의핀은 LCD 구동드라이버에연결 되어있다. 이핀들은슈미트트리거입력버퍼를갖고있다. BCF STATUS, RP0 ; Select Bank2 BSF STATUS, RP1 ; BCF LCDSE, SE16 ; Make all PORTF BCF LCDSE, SE12 ; digital inputs 위어셈블리코드는 PORTF 를초기화하기위한코드이다. RP0 를 0 으로 RP1 을 1 로설정 하여뱅크 2 를선택하고 LCDSE SE16 과 LCDSE SE12 두비트를 0 으로설정하여준다. 포트 F 는기본입출력핀으로써는입력으로밖에쓰지못한다. 대신 LCD 드라이버구동 을위해서 LCD Segment data 를출력할수있게되어있다. 7. PORTG and TRISG 레지스터 포트 G 와 TRIS G 도내부구조나동작은포트 F 와비슷하지만초기화부분이다르다. BCF STATUS, RP0 ; Select Bank2 BSF STATUS, RP1 ; BCF LCDSE, SE27 ; Make all PORTG BCF LCDSE, SE20 ; and PORTE<7> digital inputs LCDSE 를클리어해주는부분이다르다. G 포트로설정을할때에는 SE27, SE 20 으로설정 을해준다.

디지털입출력으로써는입력으로만사용할수있고 LCD 구동의출력으로써사용된다. 8. GPIO 와 TRISGP 레지스터 GPIO핀은 8비트입출력레지스터이다. 하위 6비트만사용되고, 상위 2비트는사용되지않기때문에읽기시에 0으로써읽힌다. GP3번핀을제외한나머지핀들은프로그램을통해서개별적으로입력혹은출력으로사용할수있다. GP3번핀은입력으로만사용한다. GPIO레지스터는리셋을통한초기화에서모든핀을 1로초기화해서입력상태로초기화하고, GP3번핀은입력으로만사용하기때문에항상 TRISGP에서 1로읽힌다. 나머지핀들은입력으로사용할때에는 1로셋하면되고, 출력으로사용할때에는 0으로설정해주면된다. 위블록도는 GP5:GP0번핀에해당되는핀의블록다이어그램이다. GP3번핀은입력으로만사용되기때문에출력단에데이터래치가없다. 설정워드는일부입출력핀을대체기능으로설정한다. 대체기능으로동작할때, 핀은포트가읽히는동안 0으로읽힌다. GP0,GP1,GP3 핀은풀업기능과상태변화인터럽트기능을설정할수있다. 이기능들은선택적이지않다. 상태변화인터럽트의활성화는 INTCON<3> 비트를설정해서사용한다. 만약에디바이스가외부오실레이터모드중에한가지를사용했다면 GP4, 5번

핀은오실레이터를위해사용된다. 9. 입출력포트의연속동작실제로포트의쓰기는명령사이클의마지막인 Q4 사이클에이루어지고읽기는명령의시작사이클인 Q1 사이클에이루어진다. 따라서같은포트에대해서연속해서명령어수행이일어나는경우에는쓰기명령바로뒤에읽기명령이수행이이루어지기때문에주의사항이필요하다. 그명령어의순서는 CPU가레지스터를다시읽기전에핀의전압이안정화되어야한다. 그렇지않으면레지스터의상태가이전명령어에의해서사용자가의도한대로완전히바뀌지않은채읽히게될수있다. 이경우에는명령어사이에 NOP 명령으로지연을주거나같은입출력레지스터가아닌다른레지스터명령을수행한뒤에레지스터명령을주는방식을쓰는것이좋다. 아래의표는오실레이터발진사이클과내부동작사이클에따른핀의동작이다. T PD 는핀의정전용량 (capacitance) 때문에생긴다. 정전용량의충전및방전이빠르게이루어지면걱정없지만, 충전및방전이명령사이클보다늦게일어날경우에, PORT를쓸때 Read-Modified-Write 사이클을진행하기때문에, 동일입출력포트에관한명령이일어나서다시포트를읽어들일경우에사용자사생각한것과전혀다른출력결과가나올수있는것이다. 첫번째 PORTx 에서 PINy의명령을수행하고이것을다시 PORTx 에쓴다. 하지만이것이다음명령에서포트를읽어들이는 Q1 사이클보다전에이루어져야하는데그보다늦어지면문제가되는것이다. 이를해결하는데가장좋은방법은입출력핀에다가직렬로저항을연결하는것이다. 또다른방법으로는 NOP 명령을주는방법이있는데이는정전용량에따라서 NOP명령을많이줘야할수도있고, 디바이스의주파수가굉장히빨라서 NOP 명령을여러개주어야할수도있다.

포트를쓰기명령을수행할때읽기수정쓰기동작 (Read Modify Write) 을수행하는데위그림은첫명령 (PORTx 의핀y) 를셋하는명령을수행한다. 두번째명령에서동일한포트인 PORTx 의다른핀 PINz를셋하는명령을수행하는데이때포트쓰기위해현재상태를 Read 할때이전명령이하드웨어적으로핀의캐패시턴스때문에아직입력레벨의 High 상태에도달하지못하여 Low 상태인것으로읽힌다. 이는고속주파수클럭을사용하는 MCU에서발생한다. 이럴때위에서언급한것과같이, 해당포트를한번에변경하거나 NOP 명령을수행하여서명령어사이에약간의시간차이를두는것을권장한다.