마하전자기술연구소 LOGO

제품검색 고객센터053-604-2355
기술자료실

Home > 기술자료실 기술자료실

제 목 3) 새치기의 사용법
첨부파일


새치기의 사용법


1. 새치기란?

  프로그램으로 사용하는 「새치기」란 그 이름과 같이 통상의 프로그램의
  실행중에 비율 붐비어 다른 처리를 시킬 때에 사용합니다.
  목적은, 통상은 반복으로 무엇인가 실행하고 있어, 어느 사상이 발생하면(자)
  곧 그 처리를 시키고 싶다고 하는 것 같은 때나, 타이머의 같은 항상 일정한
  타이밍을 만들고 싶을 때에 사용합니다.

 (1) PIC의 새치기 요인의 종류
  PIC로 사용할 수 있는 새치기에는 아래와 같은 4 종류가 있습니다.
   ①포토 B의 RB0/INT 핀의 입력에 의한 외부 새치기
   ②포토 B의 RB4로부터 RB7까지의 입력 변화시의 새치기
   ③TMR0의 타이머/카운터의 오버플로우시의 새치기
   ④데이터 EEPROM에의 기입해 종료시의 새치기

 (2) 새치기때의 동작 상세
  PIC로 새치기가 발생했을 때의 동작은 아래와 같은 같은 순서가 됩니다.

   ·새치기를 허가하도록(듯이) INTCON 레지스터의 GIE 비트에
    BSF 명령으로 「1」을 세트 합니다.
           ↓
   ·새치기가 발생하면(자) 이후의 다른 새치기를 금지하기 위해(때문에)
    INTCON 레지스터의 GIE 비트를 클리어
           ↓
   ·실행중의 명령의 다음의 명령의 주소를 스택에 보존
    (다른 레지스터는 보존되지 않는다)
           ↓
   ·강제적으로 프로그램 카운터에 0004 H가 세트 되고
    4번지에 점프 한다
           ↓
   ·새치기 처리 프로그램을 개시. 필요하면 그 직전
    의 레지스터를 보존합니다
           ↓
   ·새치기의 요인을 조사하기 (위해)때문에, INTCON 레지스터의 새치기 플래그
    (을)를 조사해 플래그가 「1」의 요인의 처리를 실행합니다.
    그리고 그 플래그를 BCF 명령으로 「0 클리어」해 둡니다.
           ↓
   ·복수의 새치기 플래그가 「1」이 되어 있으면 모든 관련
    새치기 처리를 실행합니다.
           ↓
   ·새치기 처리 종료. 직전에 비율 붐비어졌을 때의 레지스터를 복귀
    시킨다. 마지막에 RETFIE 명령을 실행한다.
           ↓
   ·RETFIE 명령의 실행에 의해, 스택에 보존되고 있던 새치기
    때의 주소에 점프 해 복귀한다. 동시에 다음의 새치기를
    허가하기 위해(때문에) INTCON 레지스터의 GIE 비트가 재세트 된다.

2. 새치기를 사용할 수 있는 것처럼 하려면?

 PIC로 새치기가 들어가는 것처럼 하려면 아래와 같은 작업을 해 두는 것이 필요합니다.

 (1) INTCON 레지스터세트
  프로그램의 최초로 INTCON 레지스터의 조건을 세트 해 두는거야
  차면 되지 않습니다.
  INTCON 중(안)에서 반드시 세트 해야 하는 것은, 새치기를
  기다리는 종류의 새치기 허가 비트와 전체 새치기 허가 비트입니다

  【INTCON 레지스터의 상세】
   비트 No 라벨 역할
     0   RBIF   RB4~RB7 상태 변화 새치기 플래그
     1   INTF   RB0/INT의 새치기 플래그
     2   T0IF   TMR0 타이머 인터럽션 보고 플래그
     3   RBIE   RB4~RB7의 새치기 허가 비트
     4   INTE   RB0/INT의 새치기 허가 비트
     5   T0IE   TMR0 타이머의 새치기 허가 비트
     6   EEIE   데이터 EEPROM 기입 완료 새치기 허가
     7   GIE    전체 새치기 허가 비트


 (2) 새치기 처리 프로그램의 준비
  다음에 필요한 것은 새치기가 들어갔을 때 실행시키는 새치기 처리 프로그램
  입니다. 이것은 통상의 프로그램과 기본적으로는 함께입니다만
  반드시 아래와 같이 조건이 되지 않으면 안됩니다.

   ·개시 번지는 4번지로부터 점프 하도록(듯이) 한다.
   ·INTCON 레지스터의 새치기 플래그를 클리어 한다.
   ·최후는 RETFIE로 종료한다.
   ·필요한 때에는 최초로 레지스터를 보존해, 마지막에 복귀시켜
    새치기가 들어간 곳으로 돌아왔을 때에 레지스터를 바탕으로 되돌려 정상적으로
    처리가 계속하도록(듯이) 해 둘 필요가 있습니다.
    어떤 상태로 돌아와도 좋을 때에는 이것은 필요 없습니다.

    【예】W레지스터와 STATUS 레지스터의 대피와 복구

(0004) 번지
    GOTO   PUSH    ;새치기 점프
    |
    |
PUSH  MOVWF  W_TEMP    ;W레지스터 대피
    SWAPF  STATUS, W  ;STATUS 꺼내
    MOVWF  ST_TEMP   ;STATUS 대피
    |
    |(새치기 처리)
     |
    SWAPF  ST_TEMP, W  ;STATUS를 되돌린다
    MOVWF  STATUS   ;
    SWAPF  W_TEMP, F  ;W레지스터를 되돌린다
    SWAPF  W_TEMP, W
    RETFIE       ;새치기 허가 리턴

3. RB0/INT 새치기의 사용법

 이것의 동작은, RB0 포토의 입력 신호의 첫 시작(또는 서 내려감)
 의 엣지에서 새치기를 발생합니다.
 사용법으로서는, 외부로부터의 신호로, ON인가 OFF인가 어느 쪽인지 한편이 되었다
 때만 처리하고 싶은 것 같은 때에 사용합니다.

   (1) 첫 시작/하강 모서리의 지정
   이것은 OPTION 레지스터의 INTEDG 비트로 실시합니다.
     INTEDG=0:하강 모서리로 새치기
     INTEDG=1:상승 모서리로 새치기
  (2) 새치기의 허가
    INTCON 레지스터의 INTE 비트를 「1」으로 해 새치기를 허가해
   (이)라고 일어납니다. 그 후 GIE 비트를 「1」으로 하면 새치기 대기
    됩니다.
  (3) 비율 붐비면(자) 플래그의 클리어
   새치기 처리에 점프 해 오면(자), INTCON 레지스터의 INTF 플래그
   (을)를 클리어 해 다음의 새치기에 대비합니다.


4. PORTB 새치기의 사용법

 이것의 동작은, RB4~RB7의 몇개의 입력에 변화가 있으면(자) 그 시점에서
 새치기를 발생합니다.
 사용법으로서는, 스윗치로 어떠한 동작을 바꾸는 것 같은 때에 사용합니다.

  (1) 입력 모드의 설정
   우선, PORTB의 RB4~RB7를 입력으로 합니다.
  (2) 새치기의 허가
   INTCON 레지스터의 RBIE 비트를 「1」에 세트 해 새치기를 허가
   해 둡니다.
  (3) 비율 붐비면(자) 플래그의 클리어
   새치기 처리에 점프 해 오면(자), INTCON 레지스터의 RBIF 플래그
   (을)를 클리어 해 다음의 새치기에 대비합니다.


5. 타이머 인터럽션 보고의 사용법

 타이머 인터럽션 보고는, TMR0 카운터가 FF로부터 00이 될 때에 발생합니다.
 이 사용법은 일정 간격 마다 비율 붐비게 하는 인터벌 타이머나,
 정확한 타이밍용의 one-shot 타이머로서 사용합니다.
 사용법의 자세한 것은 차장으로 설명하고 있습니다.


6. 데이터 EEPROM 새치기의 사용법

 PIC에는 64바이트의 데이터용 EEPROM가 준비되어 있어 전원이 없고
 되어도 사라지는 것이 없는 메모리로서 편리하게 사용할 수 있습니다.
 그러나, 이 EEPROM는 읽기는 매우 고속으로 프로그램으로 직접 읽기
 내도 문제 없습니다만, 기입은 약 10 msec를 필요로 하기 (위해)때문에
 그대로는 기다리고 있을 시간이 아깝게 됩니다.
 거기서 기입을 스타트 시키면(자) 새치기 대기로 해, 그 사이에 다른
 처리를 실행할 수가 있습니다.
 그러나, 새치기로 EEPROM를 기입하는 것은 우선 없을 것입니다.
 우선 루프로 다 쓰는 것 를 기다리고 있어도 괜찮은 일이 대부분
 (이)라고 생각합니다.

 (1) 새치기를 허가한다
  INTCON 레지스터의 EEIE 비트를 「1」에 세트 해 새치기를 허가
  해 둡니다.
 (2) 기입을 스타트 시킵니다.
  기입의 순서는 아래와 같이가 됩니다. 그리고 이 순서를 끝낸 뒤
  다른 처리에 점프 해도 괜찮습니다.

WR_EEPROM
   BCF    INTCON, GIE   ;새치기 금지
   MOVF    E_ADRS, W    ;주소 데이터→EEADR
   MOVWF   EEADR      ;Address set
   MOVF    E_DATA, W    ;기입하는 데이터→EEDATA
   MOVWF   EEDATA     ;Data set
   BSF    STATUS, RP0   ;Bank1에 변환
   BSF    EECON1, WREN   ;기입 허가
   MOVLW   55H       ;
   MOVWF   EECON2     ;기입 개시 준비
   MOVLW   0AAH
   MOVWF   EECON2
   BSF    EECON1, WR    ;기록 개시
   BSF    INTCON, GIE   ;새치기 허가
   GOTO    ???       ;다른 처리에

 (3) 새치기 플래그를 클리어 한다
  새치기가 들어 오면(자), 우선 새치기 플래그를 클리어 합니다.
  EEPROM의 새치기 플래그만은, EECON1 레지스터의 EEIF 비트이므로
  Bank1에 변환이라고 클리어 할 필요가 있습니다.
  그 후는, 다음의 주소에 기입하든지, 종료하자 마자 해 새치기
  처리를 RETFIE로 완료합니다.


그런데 다음은 타이머의 사용법의 설명입니다.

목록보기

www.1chip.com, www.1chip.co.kr
www.micom114.com
자료실바로가기

대구광역시 북구 산격2동 1629 산업용재관 10동 13호 (2층) / Tel. 053-604-2355 / Fax. 053-383-2354 / E-mail. maha@paran.com