0% found this document useful (0 votes)
20 views3 pages

Example 2-6

This document provides a template for creating relocatable assembly code for a PIC18F1320 microcontroller. It includes configuration bits, interrupt vectors, and placeholders for main code and interrupt service routines.

Uploaded by

tarelkoden
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
20 views3 pages

Example 2-6

This document provides a template for creating relocatable assembly code for a PIC18F1320 microcontroller. It includes configuration bits, interrupt vectors, and placeholders for main code and interrupt service routines.

Uploaded by

tarelkoden
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 3

;******************************************************************************

; This file is a basic template for creating relocateable assembly code for *
; a PIC18F1320. Copy this file into your project directory and modify or *
; add to it as needed. Create a project with MPLINK as the language tool *
; for the hex file. Add this file and the 18F1320.LKR file to the project. *
; *
; The PIC18FXXXX architecture allows two interrupt configurations. This *
; template code is written for priority interrupt levels and the IPEN bit *
; in the RCON register must be set to enable priority levels. If IPEN is *
; left in its default zero state, only the interrupt vector at 0x008 will *
; be used and the WREG_TEMP, BSR_TEMP and STATUS_TEMP variables will not *
; be needed. *
; *
; Refer to the MPASM User's Guide for additional information on the *
; features of the assembler and linker. *
; *
; Refer to the PIC18F1220/1320 Data Sheet for additional information on the *
; architecture and instruction set. *
; *
;******************************************************************************
; *
; Filename: *
; Date: *
; File Version: *
; *
; Author: *
; Company: *
; *
;******************************************************************************
; *
; Files required: P18F1320.INC *
; 18F1320.LKR *
; *
;******************************************************************************

LIST P=18F1320, F=INHX32 ;directive to define processor and file format


#include <P18F1320.INC> ;processor specific variable definitions

;******************************************************************************
;Configuration bits
; The __CONFIG directive defines configuration data within the .ASM file.
; The labels following the directive are defined in the P18F1320.INC file.
; The PIC18F1220/1320 Data Sheet explains the functions of the configuration
; bits. Change the following lines to suit your application.

__CONFIG _CONFIG1H, _IESO_OFF_1H & _FSCM_OFF_1H & _HS_OSC_1H


__CONFIG _CONFIG2L, _BOR_OFF_2L & _PWRT_OFF_2L
__CONFIG _CONFIG2H, _WDT_OFF_2H
__CONFIG _CONFIG3H, _MCLRE_OFF_3H
__CONFIG _CONFIG4L, _DEBUG_OFF_4L & _LVP_OFF_4L & _STVR_OFF_4L
__CONFIG _CONFIG5L, _CP0_OFF_5L & _CP1_OFF_5L
__CONFIG _CONFIG5H, _CPB_OFF_5H & _CPD_OFF_5H
__CONFIG _CONFIG6L, _WRT0_OFF_6L & _WRT1_OFF_6L
__CONFIG _CONFIG6H, _WRTC_OFF_6H & _WRTB_OFF_6H & _WRTD_OFF_6H
__CONFIG _CONFIG7L, _EBTR0_OFF_7L & _EBTR1_OFF_7L
__CONFIG _CONFIG7H, _EBTRB_OFF_7H

;******************************************************************************
;Variable definitions
; These variables are only needed if low priority interrupts are used.
; More variables may be needed to store other special function registers used
; in the interrupt routines.

UDATA

WREG_TEMP RES 1 ;variable in RAM for context saving


STATUS_TEMP RES 1 ;variable in RAM for context saving
BSR_TEMP RES 1 ;variable in RAM for context saving

UDATA_ACS

EXAMPLE RES 1 ;example of a variable in access RAM

;******************************************************************************

;EEPROM data
; Data to be programmed into the Data EEPROM is defined here

DATA_EEPROM CODE 0xf00000

DE "Test Data",0,1,2,3,4,5

;******************************************************************************

;Reset vector
; This code will start executing when a reset occurs.

RESET_VECTOR CODE 0x0000

goto Main ;go to start of main code

;******************************************************************************

;High priority interrupt vector


; This code will start executing when a high priority interrupt occurs or
; when any interrupt occurs if interrupt priorities are not enabled.

HI_INT_VECTOR CODE 0x0008

bra HighInt ;go to high priority interrupt routine

;******************************************************************************

;Low priority interrupt vector


; This code will start executing when a low priority interrupt occurs.
; This code can be removed if low priority interrupts are not used.

LOW_INT_VECTOR CODE 0x0018

bra LowInt ;go to low priority interrupt routine

;******************************************************************************

;High priority interrupt routine


; The high priority interrupt code is placed here.

CODE

HighInt:

; *** high priority interrupt code goes here ***

retfie FAST

;******************************************************************************

;Low priority interrupt routine


; The low priority interrupt code is placed here.
; This code can be removed if low priority interrupts are not used.

LowInt:
movff STATUS,STATUS_TEMP ;save STATUS register
movff WREG,WREG_TEMP ;save working register
movff BSR,BSR_TEMP ;save BSR register

; *** low priority interrupt code goes here ***

movff BSR_TEMP,BSR ;restore BSR register


movff WREG_TEMP,WREG ;restore working register
movff STATUS_TEMP,STATUS ;restore STATUS register
retfie

;******************************************************************************
;Start of main program
; The main program code is placed here.

Main:

; *** main code goes here ***

;******************************************************************************
;End of program

END

You might also like