자료실

뒤로가기
제목

[PIC 프로그래밍] 9. PIC16F887 핵심 SFR 레지스터

작성자 가치창조기술(ip:)

작성일 2011-08-16 16:54:37

조회 2478

평점 0점  

추천 추천하기

내용

 

핵심 SFR 레지스터

이번 게시물에서는 PIC16F887의 핵심 SFR 레지스터에 대해 설명합니다. SFR의 각각의 비트는 칩내부의 각각 다른 회로를 제어하고 이와 관련하여서도 설명을 하도록 하겠습니다.

 

STATUS Register

 

STATUS 레지스터는 W 레지스터에 있는 데이터의 산술적 상태와 RESET상태 및 데이터 메모리를 위한 뱅크 선택 비트 정보를 포함하고 있습니다.

  • IRP - 레지스터 뱅크를 선택하며, 간접 어드레싱에 사용됩니다.
    • 1 - Banks 0과 1 이 활성화됨 (memory locations 00h-FFh)
    • 0 - Banks 2 과 3이 활성화됨 (memory locations 100h-1FFh)
  • RP1,RP0 - 레지스터 뱅크를 선택하며, 직접 어드레싱에 사용됩니다.
RP1 RP0 Active Bank
0 0 Bank0
0 1 Bank1
1 0 Bank2
1 1 Bank3
  • TO - Time-out bit.
    • 1 - 전원이 들어오고 CLRWDT(와치독 타이머 리셋명령)이 실행된 후나 SLEEP(MCU를 슬립모드에 진입) 명령이 실행된 후에 셋팅됨
    • 0 - 와치독 타이머의 타임아웃이 발생하였을 경우 셋팅됨
  • PD - Power-down bit.
    • 1 - 전원이 들어오고 CLRWDT(와치독 타이머 리셋명령)이 실행된 후
    • 0 - SLEEP(MCU를 슬립모드에 진입) 명령이 실행된 후
  • Z - Zero bit
    • 1 - 산술/논리 연산의 결과값이 0일경우
    • 0 - 산술/논리 연산의 결과값이 0이 아닐 경우
  • DC - Digit carry/borrow bit은 가감연산시 결과값에서 "overflow"나 "borrow"가 발생할 경우
    • 1 - A carry-out from the 4th low-order bit of the result has occurred.
    • 0 - No carry-out from the 4th low-order bit of the result has occurred.
  • C - Carry/Borrow bit은 가감연산시 결과값에서 "overflow"나 "borrow"가 발생할 경우. 예를들어, 결과값이 255보다 크거나 0보다 작을때
    • 1 - A carry-out from the most significant bit (MSB) of the result has occurred.
    • 0 - No carry-out from the most significant bit (MSB) of the result has occurred.

OPTION_REG Register

용례: R/W - Readable/Writable Bit, (1) -reset 후, bit가 셋팅됨

 

OPTION_REG 레지스터는 Timer0/WDT prescaler, timer TMR0, 외부 인터럽트, PORTB pull-up등을 설정하기 위한 다양한 컨트롤 비트를 포함하고 있습니다.

 

RBPU Port B Pull up Enable bit
  • RBPU - Port B Pull up Enable bit.
    • 1 - PortB pull-up 비활성화.
    • 0 - PortB pull-up 활성화

 

RBPU Port B Pull up Enable bit
  • INTEDG - Interrupt Edge Select bit.
    • 1 - RB0/INT 핀 rising edge시 인터럽트.
    • 0 - RB0/INT 핀 falling edge시 인터럽트.
T0CS - TMR0 Clock Source Select bit
  • T0CS - TMR0 Clock Source Select bit.
    • 1 - Transition on TOCKI pin.
    • 0 - Internal instruction cycle clock (Fosc/4).
T0SE - TMR0 Source Edge Select bit
  • T0SE - TMR0 Source Edge Select bit RA4/T0CKI 핀을 통하여 TMR0가 카운트할 펄스 에지(rising or falling) 선택
    • 1 - Increment on high-to-low transition on TOCKI pin.
    • 0 - Increment on low-to-high transition on TOCKI pin.
PSA - Prescaler Assignment bit
  • PSA - Prescaler Assignment bit 타이머나 와치독 타이머에 프리스케일러 할당
    • 1 - Prescaler is assigned to the WDT.
    • 0 - Prescaler is assigned to the TMR0.

PS2, PS1, PS0 Prescaler Rate Select bits

프리스케일러 rate는 PS2, PS1, PS0 이 세 비트의 조합으로 선택합니다. 아래의 테이블에 보듯이 프리스케일러가 TMR0에 할당되었는지 WDT에 할당되었는지에 따라 값이 변합니다.

PS2 PS1 PS0 TMR0 WDT
0 0 0 1:2 1:1
0 0 1 1:4 1:2
0 1 0 1:8 1:4
0 1 1 1:16 1:8
1 0 1 1:64 1:32
1 1 0 1:128 1:64
1 1 1 1:256 1:128

TMR0에서 1:1의 RATE를 얻기위해서는 프리스케일러를 그냥 WDT에 할당하면 됩니다.

Let's do it in mikroC...

/* If the CLRWDT command is not executed, WDT will reset the microcontroller 
every 32.768 uS (f = 4 MHz) */

void main() {
OPTION_REG = 0b00001111; // Prescaler is assigned to WDT (1:128)

asm CLRWDT; // Assembly command to reset WDT
...
... // Time between these two CLRWDT commands must not
... // exceed 32.768 microseconds (128x256)


asm CLRWDT; // Assembly command to reset WDT
...
... // Time between these two CLRWDT commands must not
... // exceed 32.768 microseconds (128x256)


asm CLRWDT; // Assembly command to reset WDT
...

INTERRUPT SYSTEM REGISTERS

인터럽트요청이 도착한다고 해서, 인터럽트가 항상 자동적으로 발생하는 것은 아니며 해당 인터럽트가 사용자에 의해 ENABLE되어 있어야 합니다. 이를 위한 레지스터 비트가 존재하는데 이름에 포함된 IE(Interrupt Enable)로 쉽게 구별할 수가 있습니다. 그리고 각각의 인터럽트에는 인터럽트의 도착을 알려주는 flag 비트가 있어 인터럽트가 dsiable되어 있어도 인터럽트 발생유무를 확인할수있습니다. IF(Interrupt Flag)가 이름에 들어가 있어 쉽게 확인 할수 있습니다.

 

 

인터럽트가 들어오게 되면 제일먼저 플래그가 셋팅이 됩니다.

만약 IE bit이 0이라면 인터럽트는 무시되고 그렇지 않다면 인터럽트는 발생하게 됩니다. 만약 여러개의 인터럽트 소스가 enable되어 있다면 인터럽트 루틴을 실행하기 전에 어떤 소스에서 온것인지 플래그 비트를 검사해야합니다.

아셔야할 중요한 점 하나는 플래그 비트는 자동적으로 clear되지 않는다는 점입니다. 인터럽트 루틴 실행시에 클리어 해주어야 합니다. 그렇지 않을경우 인터럽트 루틴 종료 후 메인 프로그램으로 돌아갔을때 다른 인터럽트가 즉시 발생할 것입니다.

PIC16F887의 인터럽트 소스는 아래에 언급되었습니다.:

GIE 비트는 모든 unmasked interrupt를 활성화 시키고 동시에 모든 인터럽트를 비활성 시킵니다.

PEIE 비트는 모든 unmasked peripheral interrupt를 활성화 시키고 모든 peripheral interrupt를 비활성화 시킵니다. (타이머 TMR0, PORTB 인터럽트 소스 제외)

PORTB의 논리상태를 변경함으로써 발생하는 인터럽트를 활성화 시키기 위해서는 각각의 비트를 활성화 시키는 것이 필요합니다. 여기서는 IOCB 레지스터의 비트가 Control IE비트의 역활을 합니다.

 

INTCON Register

INTCON 레지스터는 TMR0 레지스터 오버플로우, PORTB 변화, 외부 INT PIN 인터럽트에 대한 호라성화 및 플래그 비트를 포함하고 있습니다.

 

용례: R/W - Readable/Writable Bit, (0) 리셋후에 비트가 클리어됨, (X) 리셋뒤 비트값을 알지 못함

  • GIE - Global Interrupt Enable bit - 모든 인터럽트 소스를 동시에 제어
    • 1 - 모든 unmasked interrupt를 활성화
    • 0 - 모든 인터럽트 비활성화.
  • PEIE - Peripheral Interrupt Enable bit GIE비트와 비슷하게 동작하지만 주변회로에 의해 발생한 인터럽트만을 제어. 타이머 TMR0나 PORTB의 상태변화에 의한 인터럽트, RB0/INT 핀은 제어하지 못함
    • 1 - 모든 unmasked peripheral interrupt를 활성화
    • 0 - 모든 peripheral interrupt를 비활성화
  • T0IE - TMR0 Overflow Interrupt Enable bit TMR0 오버플로 인터럽트를 제어
    • 1 - TMR0 interrupt를 활성화
    • 0 - TMR0 interrupt를 비활성화
  • INTE - RB0/INT External Interrupt Enable bit RB0/INT 입력핀(외부 인터럽트)의 로직상태변화에 의해 발생하는 인터럽트 제어
    • 1 - Enables the INT external interrupt.
    • 0 - Disables the INT external interrupt.
  • RBIE - RB Port Change Interrupt Enable bit. 입력으로 설정되었을때, PORTB 핀은 로직 상태변화시 인터럽트를 생성할 수 있습니다.
    • 1 - port B 변화시 인터럽트 발생 활성화.
    • 0 - port B 변화시 인터럽트 발생 비활성화.
  • T0IF - TMR0 Overflow Interrupt Flag bit 타이머 TMR0 register overflow가 발생했음을 기록
    • 1 - TMR0 register 오버플로우 발생(비트는 소프트웨어에서 클리어 시켜주어야 함).
    • 0 - TMR0 register 오버플로 미 발생
  • INTF - RB0/INT External Interrupt Flag bit RB0/INT 핀의 상태변화시 기록
    • 1 - INT external interrup 발생시(비트는 소프트웨어에서 클리어 시켜주어야 함).
    • 0 - INT external interrupt 미 발생시
  • RBIF - RB Port Change Interrupt Flag bit PORTB 입력 핀의 로직상태 변화시 기록함
    • 1 - 최소한 PORTB 범용 I/O핀중에 하나의 상태가 변했을 시. PORTB를 읽을 시 RBIF비트는 소프트웨어에서 클리어 시켜 주어야 함
    • 0 - PORTB 범용 I/O핀의 상태가 하나도 변한것이 없을 시.

Let's do it in mikroC...

// The PORTB.4 pin is configured as an input sensitive to logic state change

void initMain() {

ANSEL = ANSELH = 0; // All I/O pins are configured as digital
PORTB = 0; // All PORTB pins are cleared
TRISB = 0b00010000; // All PORTB pins except PORTB.4 are configured as outputs
RBIE = 1; // Interrupts on PORTB change are enabled
IOCB4 = 1; // Interrupt on PORTB pin4 change is enabled
GIE = 1; // Global interrupt is enabled
...
... // From this point, any change of the PORTB.4 pin logic state
// will cause an interrupt

...

PIE1 Register

PIE1 레지스터는 peripheral interrupt 활성화 비트를 포함하고 있습니다.

 

용례: (-) Unimplemented bit, (R/W) - Readable/Writable Bit, (0) 리셋후 비트 클리어

  • ADIE - A/D Converter Interrupt Enable bit.
    • 1 - ADC interrupt 활성화
    • 0 - ADC interrupt 비활성화.
  • RCIE - EUSART Receive Interrupt Enable bit.
    • 1 - EUSART receive interrupt 활성화
    • 0 - EUSART receive interrupt 비활성화
  • TXIE - EUSART Transmit Interrupt Enable bit.
    • 1 - EUSART transmit interrupt 활성화
    • 0 - EUSART transmit interrupt 비활성화
  • SSPIE - Master Synchronous Serial Port (MSSP) Interrupt Enable bit - 동기식 시리얼통신 모듈(SPI, I2C 모드)에서 발생하는 인터럽트 활성화
    • 1 - MSSP interrupt 활성화
    • 0 - MSSP interrupt 비활성화
  • CCP1IE - CCP1 Interrupt Enable bit PWM 신호처리에서 사용되는 CCP1 모듈에서 생성되는 인터럽트 활성화
    • 1 - CCP1 interrupt 활성화
    • 0 - CCP1 interrupt 비활성화
  • TMR2IE - TMR2 to PR2 Match Interrupt Enable bit
    • 1 - TMR2 to PR2 match interrupt 활성화
    • 0 - TMR2 to PR2 match interrupt 비활성화
  • TMR1IE - TMR1 Overflow Interrupt Enable bit 타이머 TMR1 레지스터 오버플러우 인터럽트 활성화
    • 1 - TMR1 overflow interrupt 활성화
    • 0 - TMR1 overflow interrupt 비활성화

Let's do it in mikroC...

/* Each overflow in the Timer1 register consisting of TMR1H and TMR1L, causes an interrupt
to occur. In every interrupt rutine, variable cnt will be incremented by 1. */


unsigned short cnt; // Define variable cnt

void interrupt() {
cnt++ ; // Interrupt causes cnt to be incremented by 1
PIR1.TMR1IF = 0; // Reset bit TMR1IF
TMR1H = 0x80; // TMR1H and TMR1L timer registers are returned
TMR1L = 0x00; // their initial values
}

void main() {
ANSEL = ANSELH = 0; // All I/O pins are configured as digital
T1CON = 1; // Turn on timer TMR1
PIR1.TMR1IF = 0; // Reset the TMR1IF bit
TMR1H = 0x80; // Set initial value for timer TMR1
TMR1L = 0x00;
PIE1.TMR1IE = 1; // Enable an interrupt on overflow
cnt = 0; // Reset variable cnt
INTCON = 0xC0; // Enable interrupt (bits GIE and PEIE)
...

PIE2 Register

PIE2 레지스터는 다양한 인터럽트 활성화 비트를 가지고 있습니다.

 

Legend: (-) Unimplemented bit, (R/W) - Readable/Writable Bit, (0) 리셋시, 비트 클리어

  • OSFIE - Oscillator Fail Interrupt Enable bit.
    • 1 - oscillator fail interrupt 활성화
    • 0 - oscillator fail interrupt 비활성화
  • C2IE - Comparator C2 Interrupt Enable bit.
    • 1 - Comparator C2 interrupt 활성화
    • 0 - Comparator C2 interrupt 비활성화
  • C1IE - Comparator C1 Interrupt Enable bit.
    • 1 - Comparator C1 interrupt 활성화
    • 0 - Comparator C1 interrupt 비활성화
  • EEIE - EEPROM Write Operation Interrupt Enable bit.
    • 1 - EEPROM write operation interrupt 활성화
    • 0 - EEPROM write operation interrupt 비활성화
  • BCLIE - Bus Collision Interrupt Enable bit.
    • 1 - bus collision interrupt 활성화
    • 0 - bus collision interrupt 비활성화
  • ULPWUIE - Ultra Low-Power Wake-up Interrupt Enable bit.
    • 1 - Ultra Low-Power Wake-up interrupt 활성화
    • 0 - Ultra Low-Power Wake-up interrupt 비활성화
  • CCP2IE - CCP2 Interrupt Enable bit.
    • 1 - CCP2 interrupt 활성화
    • 0 - CCP2 interrupt 비활성화

Let's do it in mikroC...

/* Comparator C2 is configured to use pins RA0 and RA2 as inputs. 
Every change on the comparator's output will cause the PORTB.1 output pin
to change its logic state in interrupt routine. */


void interrupt() {
PORTB.F1 = ~PORTB.F1 ; // Interrupt will invert logic state of the PORTB.1 pin
PIR2.C2IF = 0; // Interrupt flag bit C2IF is cleared
}

void main() {
TRISB = 0; // All PORTB pins are configured as outputs
PORTB.1 = 1; // The PORTB.1 pin is set
ANSEL = 0b00000101; // RA0/C12IN0- and RA2/C2IN+ pins are analog inputs
ANSELH = 0; // All other I/O pins are configured as digital
C2CH0 = C2CH1 = 0; // The RA0 pin is selected to be C2 inverting input
C2IE = 1; // Enables compatator C2 interrupt
GIE = 1; // Global interrupt is enabled
C2ON = 1; // Comparator C2 is enabled
...
...

PIR1 Register

PIR1 레지스터는 인터럽트 플래그를 포함하고 있습니다.

 

Legend: (-) Unimplemented bit, (R/W) - Readable/Writable Bit, (R) - Readable Bit, (0) 리셋시 비트 클리어

  • ADIF - A/D Converter Interrupt Flag bit.
    • 1 - A/D conversion 완료 시(비트는 소프트웨어에서 클리어되어야 함).
    • 0 - A/D conversion 미완료나 시작되지 않았을 시
  • RCIF - EUSART Receive Interrupt Flag bit.
    • 1 - EUSART receive buffer가 꽉 차있을 경우. 비트는 RCREG register를 읽으면 클리어됨
    • 0 - EUSART receive buffer가 꽉 차있지 않을 경우
  • TXIF - EUSART Transmit Interrupt Flag bit.
    • 1 - EUSART transmit buffer가 비어있을 경우. TXREG 레지스터에 데이터를 쓰면 비트가 클리어됨
    • 0 - EUSART transmit buffer is full.
  • SSPIF - Master Synchronous Serial Port (MSSP) Interrupt Flag bit.
    • 1 - 데이터 송수신중 MSSP 인터럽트 조건이 발생했을때. MSSP 동작모드(SPI or I2C)와는 다름. 인터럽트 서비스루틴 종료시 비트를 클리어해주어야 함
    • 0 - MSSP 인터럽트 조건이 발생하지 않았을 시
  • CCP1IF - CCP1 Interrupt Flag bit.
    • 1 - CCP1 인터럽트 조건이 발생했을시 (CCP1은 PWM신호를 잡아내고 비교하고 생성하는 유닛입니다.)
    • 0 - CCP1 인터럽트 조건이 발생하지 않을 시
  • TMR2IF - Timer2 to PR2 Interrupt Flag bit
    • 1 - TMR2 (8-bit register) to PR2 match 발생시. 인터럽트 루틴 종료시 비트는 클리어 되어야함
    • 0 - TMR2 to PR2 match 가 발생하지 않았을 시
  • TMR1IF - Timer1 Overflow Interrupt Flag bit
    • 1 - TMR1 register가 오버플로시. 비트는 소프트웨어에서 클리어 해야함.
    • 0 - TMR1 register가 오버플로하지 않았을 시

PIR2 Register

PIR2 레지스터는 인터럽트 플래그 비트를 포함하고 있습니다.

 

Legend: (-) Unimplemented bit, (R/W) - Readable/Writable Bit, (0) 리셋후 비트클리어

  • OSFIF - Oscillator Fail Interrupt Flag bit.
    • 1 - System oscillator가 fail 되었거나 클럭입력이 내부 오실리에이터 INTOSC로 변경되었을 경우. 비트는 사용후 클리어 되어야함
    • 0 - System oscillator가 정상적으로 동작시
  • C2IF - Comparator C2 Interrupt Flag bit.
    • 1 - Comparator C2 출력이 변경시(bit C2OUT). 비트는 사용후 클리어 되어야 함
    • 0 - Comparator C2 출력이 변경되지 않았을 경우
  • C1IF - Comparator C1 Interrupt Flag bit.
    • 1 - Comparator C1 출력이 변경되었을 경우(bit C1OUT). 비트는 사용후 클리어 되어야 함
    • 0 - Comparator C1 출력이 변경되지 않았을 경우
  • EEIF - EE Write Operation Interrupt Flag bit.
    • 1 - EEPROM 쓰기 완료시. 비트는 사용후 클리어 되어야 함
    • 0 - EEPROM 쓰기 미완료시나 쓰기시작을 하지 않았을 시
  • BCLIF - Bus Collision Interrupt Flag bit.
    • 1 - MSSP(I2C마스터 모드)에서 BUS 충돌 발생시. 비트는 사용후 클리어 되어야 함
    • 0 - 충돌 미발견시
  • ULPWUIF - Ultra Low-power Wake-up Interrupt Flag bit.
    • 1 - Wake-up 조건 발생시. 비트는 사용후 클리어 되어야 함
    • 0 - Wake-up 조건 미발생시
  • CCP2IF - CCP2 Interrupt Flag bit.
    • 1 - CCP2 interrupt 조건 발생시
    • 0 - CCP2 interrupt 조건 미발생시

Let's do it in mikroC...

// Module ULPWU activation sequence

void main() {
PORTA.0 = 1; // PORTA.0 pin is set
ANSEL = ANSELH = 0; // All I/O pins are configured as digital
TRISA = 0; // PORTA pins are configured as outputs
Delay_ms(1); // Charge capacitor
ULPWUIF = 0; // Clear flag
PCON.ULPWUE = 1; // Enable ULP Wake-up
TRISA.0 = 1; // PORTA.0 is configured as an input
ULPWUIE = 1; // Enable interrupt
GIE = PEIE = 1; // Enable peripheral interrupt
asm SLEEP; // Go to sleep mode
...
...

PCON register

PCON 레지스터 Power-on reset, Brown-out reset, Watchdog Timer reset 그리고 MCLR핀을 통한 외부 리셋을 구별하기 위한 비트를 포함하고 있습니다.

 

Legend: (-) Unimplemented bit, (R/W) - Readable/Writable Bit, (1) - 리셋후 비트 셋팅, (0) 리셋후 비트 클리어

  • ULPWUE - Ultra Low-Power Wake-up Enable bit
    • 1 - Ultra Low-Power Wake-up 활성화.
    • 0 - Ultra Low-Power Wake-up 비활성화.
  • SBOREN - Software BOR Enable bit
    • 1 - Brown-out Reset 활성화.
    • 0 - Brown-out Reset 비활성화.
  • POR - Power-on Reset Status bit
    • 1 - Power-on reset 미발생시
    • 0 - Power-on reset 발생시. Power-on Reset발생후 비트는 1로 셋팅되어야 함.
  • BOR - Brown-out Reset Status bit
    • 1 - Brown-out reset 미 발생시
    • 0 - Brown-out reset 발생시. Brown-out Reset 후 비트는 1로 셋팅되어야 함.

PCL와 PCLATH REGISTERS

프로그램 메모리는 8K이며 프로그램 저장을 위해 8192 개의 주소 공간을 가지고 있습니다. 이러한 이유로, 프로그램 카운터는 반드시 13비트(213 = 8192)이여야 합니다. 연산중 프로그램 메모리상의 어떠한 위치라도 접근하기 위하여서는, SFR레지스터를 통해 그것의 주소를 접근하는 것이 필요합니다.모든 SFR레지스터는 8비트 이기 때문에 이 주소연산 레지스터는 13비트를 둘로 쪼갠 두개의 독립적인 레지스터 PCLATH와 PCL로 인공적으로 만들었습니다.

 

 

 

만약 프로그램 카운터를 변경하였다면 문제를 피하기 위해 기억해야할 여러가지 것들이 있습니다.:

  • 하위 여덟 비트는 PCL레지스터에 있으면 읽고 쓸수 있지만 상위 5비트는 PCLATH레지스터에 있으며 쓸수만 있습니다.
  • PCLATH 레지스터는 리셋시 클리어 됩니다.
  • 어셈블리어에서는 프로그램 카운터의 값은 PCL레지스터로만 표기되고 8비트만 참조 할수 있습니다. ‘ADDWF PCL’ 인스트럭션을 사용하실때는 주의 하셔야 합니다. 현재의 주소에 어떤 숫자를 더하여 원하는 위치로 점프하라는 명령이 되며, 종종 Lookup 테이블이나 프로그램 브랜치 테이블로 점프하는데 사용됩니다. 문제는 그러한 더하기 연산이 PCLATH레지스터에 속한 상위비트의 변경을 초래할때 생깁니다.

    PCL레지스터상의 인스트럭션을 실행하는 것은 프로그램카운터 비트를 PCLATH레지스터의 값으로 대치시키는 결과를 가져올수있습니다. PCL 레지스터는 인스트럭션 결과값의 하위 8비트만을 접근할수 있고, 이어 지는 점프연산은 완전히 틀려지게 됩니다. 이러한 문제는 더하기 연산의 주소 끝에 xx00h를 셋팅함으로써 해결할 수 있습니다. 이것은 프로그램 255개의 위치로 점프할수 있게 하여줍니다. 만약 이 이상의 주소에 대해 점프가 실행되어 진다면, PCLATH레지스터는 PCL레지스터가 오버플로우 될때마다 1씩 증가시켜주어야 합니다.
  • 서브루틴 호출이나 점프 인스트럭션 같은 경우에 (instructions CALL, GOTO), MCU는 11비트 어드레싱만 제공할 수 있습니다. 뱅크로 나뉘어 있는 RAM과 비슷하게 ROM은 2K크기의 4개의 페이지로 나뉘어 있습니다. 언급한 명령은 페이지 내에서는 아무런 문제가 없습니다. 아래의 그림은 서브루틴 PP1으로 점프하는 것을 설명한 그림입니다.

    하지만 다른 페이지로 점프하려고 한다면 PCLATH레지스터에 모자란 주소 두 비트를 더 써주어야 합니다.

가치창조기술 | www.ubiquitics.co.kr | www.vctec.co.kr

개발용 보드

제품특징

  • PIC, dsPIC, PIC24, PIC32MX, AVR, PSoC, 8051, ARM 마이크로프로세서 지원
  • 프로그래머 및 ICD 디버거가 개발보드에 내장되어 있어 경제적
  • COG/LCD/GLCD 장착
  • MCU의 모든 핀들은 개발보드상의 인터페이스 핀에 연결되어 있음
  • 개발보드상의 DIP스위치를 이용하여 개발보드를 설정
  • MCU 핀에 LED 및 푸시버튼이 보드상에 연결되어 있음
  • 즉시 사용가능한 다양한 예제 지원
  • 마이크로일렉트로니카 컴파일러 지원
  • 다양한 개발용 악세사리를 개발보드상에 연결하여 사용이 가능

제품군:

제품군 설명
Microchip PIC

Microchip PIC용 개발보드 제품군

Microchip dsPIC Microchip dsPIC용 개발보드 제품군
Microchip dsPIC24-33 Microchip dsPIC24-dsPIC33용 개발보드 제품군
Microchip PIC32MX Microchip PIC32MX용 개발보드 제품군
Atmel AVR 및 XMega Atmel AVR 및 XMega용 개발보드 제품군
Cypress PSoC Cypress PSoC용 개발보드 제품군
Atmel 8051 Atmel 8051용 개발보드 제품군
NXP ARM NXP ARM용 개발보드 제품군
GPS 개발보드 GPS 개발보드 제품군
MCU 컴파일러

제품특징

  • PIC, dsPIC, PIC24, PIC32, AVR, 8051 마이크로프로세서 지원
  • 편리하고 직관적인 IDE환경
  • 500개 이상의 라이브러리 함수지원으로 개발시간 절약
  • 다양한 개발용 툴 지원
  • mikroProg 하드웨어 In-Circuit Debugging 지원
  • 즉시 사용가능한 예제 지원

제품 모델:

제품 설명
PIC용 컴파일러 Microchip PIC용 컴파일러
AVR용 컴파일러 Atmel AVR용 컴파일러
dsPIC30/33 및 PIC24용 컴파일러 Microchip dsPIC30/33 및 PIC24용 컴파일러
PIC32용 컴파일러 Microchip PIC32용 컴파일러
8051용 컴파일러 Atmel 및 Silicon Labs 8051용 컴파일러

개발용 악세사리보드

제품특징

  • 악세사리보드로 다양한 MCU와 주변장치의 기능을 테스트
  • 통신/저장/시간측정/디스플레이/측정/오디오/전원공급/기타 등의 악세사리보드
  • Mikroelektronika 개발보드에 연결하여 사용 가능
  • 즉시 사용 가능한 예제 제공

제품군:

제품군 설명
통신용 보드 통신용 악세사리보드
스토리지 보드 스토리지용 악세사리보드
시간측정용 보드 시간측정용 악세사리보드
디스플레이 보드 디스플레이용 악세사리보드
센서 및 측정보드 센서 및 측정용 악세사리보드
오디오 및 보이스 보드 오디오 및 보이스용 악세사7리보드
전원제어보드 전원제어용 악세사리보드
기타보드 릴레이, RFID, 센서 등의 다양한 악세사리보드

MCU 개발용 키트

제품특징

  • PIC, dsPIC, PIC24, PIC32, AVR, 8051 마이크로프로세서 지원 개발용 키트
  • 개발에 필요한 개발보드, 컴파일러 및 악세사리보드 포함
  • 개발용 키트 묶은 구매로 개별구매보다 저렴

제품군:

Part Number 모델 설명
PIC 개발용 키트 Microchip PIC 개발용 키트
dsPIC30 개발용 키트 Microchip dsPIC30 개발용 키트
dsPIC33-PIC24 개발용키트 Microchip dsPIC33-PIC24 개발용 키트
AVR 및 XMega 개발용키트 Atmel AVR 및 XMega 개발용 키트

8051 개발

용 키트

Atmel 및 Silicon Labs 8051 개발용 키트        

 

첨부파일

비밀번호
수정

비밀번호 입력후 수정 혹은 삭제해주세요.

댓글목록

등록된 댓글이 없습니다.

댓글 수정

이름

비밀번호

내용

/ byte

수정 취소

비밀번호

확인 취소

댓글 입력

이름

비밀번호

내용

/ byte

평점

관리자에게만 댓글 작성 권한이 있습니다.