1. I/O의 시뮬레이트
프로그램의 디벅을 시뮬레이터로 하는 경우 번거로운 것이 입출력을 수반하는 경우이다.
외부에서 신호를 넣을 수 없기 때문에 실제를 모의할 수 없기 때문이다.
그러나, MPLAB에서는 현명한 방법을 사용하고 있다.
(1) 출력의 경우
이것은 단순하며, 전항에서도 설명한 "File Register Window"에서 확인할 수 있다.
여기서는 출력 뿐만 아니라, 입력된 데이터의 상태도 나타내고 있다. 즉,
어드레스 포트
05 PORT A
06 PORT B
로 된다.
(2) 입력의 경우
입력 포트의 경우에는 "Modify"의 창에서 포트의 비트 기호를 지정하여 입력할 수 있다.
즉, 아랫 그림의 Modify 화면에서 알 수 있듯이 "Address"란에 포트의 기호를 지정하고, "Data"란에 0 아니면 1을
지정하여, "Write"로 하면 포트로부터의 입력한 것이 된다.
이 입력은 언제나 가능하기 때문에 편리하게 사용할 수 있다.
이 포트 지정 기호는 다음과 같이 되어 있다.
PORT A는 RA0 ∼RA7
PORT B는 RB0 ∼RB7
2. 인터럽트의 시뮬레이트
입출력보다 시뮬레이트가 번거로운 것은 인터럽트이다.
여기서도 MPLAB는 현명한 방법을 제공하고 있다.
즉, 만든 프로그램이 인터럽트를 접수하도록 작성되어 있으면 하기 인터럽트에 대해서는 조건이 성립하면 인터럽트가
들어간 것처럼 program counter를 stack에 저정하고, 4번지로 점프한다.
당연히 그때의 "INTCON" 레지스터도 정확하게 시뮬레이트되고 있다.
따라서, 하기와 같이 인터럽트가 들어가는 조건을 세트해 주면 되는 것이다.
인터럽트의 종류 |
인터럽트가 발생하는 조건 |
(1) 외부 INT핀에 입력 |
RB0이 외부 INT를 입력하는 포트이므로 상승 에지나 하강 에지의 조건이
맞으면 끼어든다. |
(2) TMR0 오버플로 |
이것은 타이머를 정확하게 동작시킬 수 있도록 설정되어 있으면 자동적으로
타이머 동작이 시뮬레이트되고 있기 때문에 타이머가 overflow로 되면
인터럽트가 발생한다. |
(3) PORT RB4~RB7의 변화 |
인터럽트가 들어가도록 포트 설정이 정확하게 되어 있으면 포트에 대한 입력 시뮬레이트, 즉 Modify로 RB4∼RB7의 어느 포트에 입력 변화를 주면 인터럽트 동작을 한다. |
(4) 데이터 EEPROM에 써넣기 종료 |
이것은 정확하게 EEPROM에 써넣기 동작을 하고, 그리고 인터럽트 발생을
허가하고 있으면 동작 시뮬레이트가 종료 시점에서 자동적으로 인터럽트
동작을 한다. |
[주의]
3. 워치도그 타이머
watchdog timer의 시뮬레이션도 정확하게 대응되고 있다.
우선 워치도그 타이머를 한다/하지 않는다를 설정한다.
이것에는 Options→Processor Setup→Hardware를 실행하면 아랫 그림의 설정 화면이 열린다. 여기서 WDT Reset
Enable을 지정하면 명령의 클록을 기반으로 시간이 시뮬레이트되고 time out하면 리셋이 발생하여 CPU가 다시
스타트한다.