Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;******************************************************************************
- ; This file is a basic template for creating relocatable assembly code for *
- ; a PIC18F2520. Copy this file into your project directory and modify or *
- ; add to it as needed. *
- ; *
- ; 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 PIC18Fxx20 Data Sheet for additional *
- ; information on the architecture and instruction set. *
- ; *
- ;******************************************************************************
- ; *
- ; Filename: *
- ; Date: *
- ; File Version: *
- ; *
- ; Author: *
- ; Company: *
- ; *
- ;******************************************************************************
- ; *
- ; Files required: P18F2520.INC *
- ; *
- ;******************************************************************************
- LIST P=18F2520, F=INHX32 ;directive to define processor and file format
- #include <P18F2520.INC> ;processor specific variable definitions
- ;******************************************************************************
- ;Configuration bits
- ;Microchip has changed the format for defining the configuration bits, please
- ;see the .inc file for futher details on notation. Below are a few examples.
- ; Oscillator Selection:
- CONFIG OSC = LP ;LP
- ;******************************************************************************
- ;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
- TMP RES 1
- TMP1 RES 1 ;NEW VARIABLES
- TMP2 RES 1
- STEP RES 1
- ;******************************************************************************
- ;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 ***
- movlw .64 ; ????????
- movwf STEP
- movlw 0x02
- movwf FSR0H
- movlw 0x00
- movwf FSR0L
- movlw .64
- M1:
- movwf INDF0
- incf WREG
- incf FSR0L
- decf STEP
- BNZ M1 ;??????? ?? 0
- movlw .64
- movwf STEP
- movlw .128
- M2:
- movwf INDF0
- decf WREG
- incf FSR0L
- decf STEP
- BNZ M2
- movlw .64
- movwf STEP
- movlw .64
- M3:
- movwf INDF0
- incf WREG
- incf WREG
- incf WREG
- incf FSR0L
- decf STEP
- BNZ M3
- movlw .64
- movwf STEP
- movlw .255
- M4:
- movwf INDF0
- decf WREG
- incf FSR0L
- decf STEP
- BNZ M4
- movlw .64
- movwf STEP
- movlw .64
- STOP: bra STOP
- nop
- END
- ;******************************************************************************
- ;End of program
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement