;---------------------------------------------------------------------------------------------------------------- ; ; FM8P MCU 인터럽트 루틴 프로그램 소스 코드 V.1.0 ; |
| ; |
|
(주)이지플로우 기술지원팀 |
;----------------------------------------------------------------------------------------------------------------
;---------------------------------------------------------------------------------------------------------------- ; 전 지역에서 사용할 공용 심벌을 정의합니다.
; 데이터 전송 방향을 지정합니다. |
| W |
|
EQU |
|
00 |
|
| R |
|
EQU |
|
01 |
|
;---------------------------------------------------------------------------------------------------------------- ; STATUS 레지스터를 정의합니다.
|
| STATUS |
|
EQU |
|
03H |
|
| bC |
|
EQU |
|
00 |
|
| bDC |
|
EQU |
|
01 |
|
| bZ |
|
EQU |
|
02 |
|
| bPD |
|
EQU |
|
03 |
|
| bTO |
|
EQU |
|
04 |
|
| bGP0 |
|
EQU |
|
05 |
|
| bGP1 |
|
EQU |
|
06 |
|
| bRST |
|
EQU |
|
07 |
|
|
|
|
|
|
|
|
|
|
|
|
|
;---------------------------------------------------------------------------------------------------------------- ; 인터럽트 설정 레지스터를 정의합니다.
|
| INTEN |
|
EQU |
|
0EH |
|
| bT0IE |
|
EQU |
|
00 |
; 각 비트 0,1,2,7 정의. |
| bPBIE |
|
EQU |
|
01 |
|
| bINTIE |
|
EQU |
|
02 |
|
| bGIE |
|
EQU |
|
07 |
|
| bvT0IE |
|
EQU |
|
01H |
; 각 비트 값 0,1,2,7 정의. |
| bvPBIE |
|
EQU |
|
02H |
|
| bvINTIE |
|
EQU |
|
04H |
|
| bvGIE |
|
EQU |
|
080H |
|
;---------------------------------------------------------------------------------------------------------------- ; 인터럽트 상태 레지스터를 정의합니다.
|
| INTFLAG |
|
EQU |
|
0FH |
|
| bT01F |
|
EQU |
|
00 |
; 각 비트 0,1,2 정의. |
| bPBIF |
|
EQU |
|
01 |
|
| bINTIF |
|
EQU |
|
02 |
|
| bvT0IF |
|
EQU |
|
01 |
; 각 비트 값 0,1,2 정의. |
| bvPBIF |
|
EQU |
|
02 |
|
| bvINTIF |
|
EQU |
|
04 |
|
| INTFLAG |
|
EQU |
|
0FH |
|
|
|
|
|
|
|
;---------------------------------------------------------------------------------------------------------------- ; 사용할 변수를 정의합니다.
|
| rACC |
|
EQU |
|
010H |
; 인터럽트에서 백업할 ACC 내용을 저장합니다. |
| rSTATUS |
|
EQU |
|
011H |
; 인터럽트에서 백업할 STATUS 내용을 저장합니다. |
|
|
|
|
|
;사용자가 필요한 변수를 정의합니다. |
;---------------------------------------------------------------------------------------------------------------- ; 여기부터 프로그램을 코딩합니다. ; 먼저 프로그램 및 인터럽트 시작 위치를 설정합니다. |
|
|
ORG |
|
000H |
|
|
|
GOTO |
|
Start |
; 프로그램 시작 위치를 지정합니다. |
|
|
|
|
|
;2K,4K 디바이스는 FGOTO 명령을 사용할 수 있습니다. |
|
|
|
|
|
|
|
|
ORG |
|
002H |
|
|
|
GOTO |
|
SoftINT |
; 소프트웨어 인터럽트 시작 위치를 지정합니다. |
|
|
|
|
|
;2K,4K 디바이스는 FGOTO 명령을 사용할 수 있습니다. |
|
|
|
|
|
|
|
|
ORG |
|
008H |
|
;---------------------------------------------------------------------------------------------------------------- ; 인터럽트 프로그램을 코딩합니다. |
| HardINT: |
|
|
|
|
|
|
|
MOVAR |
|
rACC |
; 메인에서 사용한 ACC를 백업합니다. |
|
|
SWAPR |
|
STATUS, W |
|
|
|
MOVAR |
|
rSTATUS |
; 메인에서 사용한 STATUS를 백업합니다. |
|
|
...
|
|
|
; 필요한 경우, 페이지 지정 레지스터 및 램 뱅크 레지스터를 백업합니다.
; CALL 명령을 사용하여 필요한 인터럽트 기능을 수행합니다.
; 저장한 레지스터가 있는경우 복원합니다.
|
|
|
BCR |
|
INTFLAG, bT01F |
; 사용한 인터럽트 플래그를 지웁니다(타이머 경우). |
|
|
|
|
|
|
|
|
SWAPR |
|
rSTATUS, W |
|
|
|
MOVAR |
|
STATUS |
; STATUS를 가져옵니다(복원). |
|
|
SWAPR |
|
rACC, R |
|
|
|
SWAPR |
|
rACC, W |
; ACC를 가져옵니다(복원). |
| |
|
RETFIE |
|
|
; 인터럽트 루틴에서 복귀합니다. |
|
|
|
|
|
|
| SoftINT: |
|
|
|
|
|
|
|
RETURN |
|
|
;필요한 기능을 정의하고 원래 위치로 돌아갑니다. |
;---------------------------------------------------------------------------------------------------------------- ; 시작 프로그램을 코딩합니다. |
| Start: |
|
|
|
|
|
|
|
|
|
|
; 리셋 또는 웨이크업 상태를 확인하여 처리합니다. |
|
|
|
|
|
|
|
|
|
|
|
; 필요한 포트 및 레지스터를 초기화 합니다. |
|
|
|
|
|
|
| MainLoop: |
|
|
|
|
|
|
|
...
|
|
|
; 반복적인 기능을 처리합니다. |
|
|
GOTO |
|
MainLoop |
|
;---------------------------------------------------------------------------------------------------------------- ; 여기에 프로그램 리셋 위치를 정의합니다.
|
|
|
ORG |
|
03FFH |
|
|
|
GOTO |
|
Start |
|
;----------------------------------------------------------------------------------------------------------------
|
|
|
|
|
|
|