Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;*******************************************************************************
- ; *
- ; Microchip licenses this software to you solely for use with Microchip *
- ; products. The software is owned by Microchip and/or its licensors, and is *
- ; protected under applicable copyright laws. All rights reserved. *
- ; *
- ; This software and any accompanying information is for suggestion only. *
- ; It shall not be deemed to modify Microchip?s standard warranty for its *
- ; products. It is your responsibility to ensure that this software meets *
- ; your requirements. *
- ; *
- ; SOFTWARE IS PROVIDED "AS IS". MICROCHIP AND ITS LICENSORS EXPRESSLY *
- ; DISCLAIM ANY WARRANTY OF ANY KIND, WHETHER EXPRESS OR IMPLIED, INCLUDING *
- ; BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS *
- ; FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT. IN NO EVENT SHALL *
- ; MICROCHIP OR ITS LICENSORS BE LIABLE FOR ANY INCIDENTAL, SPECIAL, *
- ; INDIRECT OR CONSEQUENTIAL DAMAGES, LOST PROFITS OR LOST DATA, HARM TO *
- ; YOUR EQUIPMENT, COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR *
- ; SERVICES, ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT LIMITED TO ANY *
- ; DEFENSE THEREOF), ANY CLAIMS FOR INDEMNITY OR CONTRIBUTION, OR OTHER *
- ; SIMILAR COSTS. *
- ; *
- ; To the fullest extend allowed by law, Microchip and its licensors *
- ; liability shall not exceed the amount of fee, if any, that you have paid *
- ; directly to Microchip to use this software. *
- ; *
- ; MICROCHIP PROVIDES THIS SOFTWARE CONDITIONALLY UPON YOUR ACCEPTANCE OF *
- ; THESE TERMS. *
- ; *
- ;*******************************************************************************
- ; *
- ; Filename: *
- ; Date: *
- ; File Version: *
- ; Author: *
- ; Company: *
- ; Description: *
- ; *
- ;*******************************************************************************
- ; *
- ; Notes: In the MPLAB X Help, refer to the MPASM Assembler documentation *
- ; for information on assembly instructions. *
- ; *
- ;*******************************************************************************
- ; *
- ; Known Issues: This template is designed for relocatable code. As such, *
- ; build errors such as "Directive only allowed when generating an object *
- ; file" will result when the 'Build in Absolute Mode' checkbox is selected *
- ; in the project properties. Designing code in absolute mode is *
- ; antiquated - use relocatable mode. *
- ; *
- ;*******************************************************************************
- ; *
- ; Revision History: *
- ; *
- ;*******************************************************************************
- ;*******************************************************************************
- ; Processor Inclusion
- ;
- ; TODO Step #1 Open the task list under Window > Tasks. Include your
- ; device .inc file - e.g. #include <device_name>.inc. Available
- ; include files are in C:\Program Files\Microchip\MPLABX\mpasmx
- ; assuming the default installation path for MPLAB X. You may manually find
- ; the appropriate include file for your device here and include it, or
- ; simply copy the include generated by the configuration bits
- ; generator (see Step #2).
- ;
- ;*******************************************************************************
- ; TODO INSERT INCLUDE CODE HERE
- ;*******************************************************************************
- ;
- ; TODO Step #2 - Configuration Word Setup
- ;
- ; The 'CONFIG' directive is used to embed the configuration word within the
- ; .asm file. MPLAB X requires users to embed their configuration words
- ; into source code. See the device datasheet for additional information
- ; on configuration word settings. Device configuration bits descriptions
- ; are in C:\Program Files\Microchip\MPLABX\mpasmx\P<device_name>.inc
- ; (may change depending on your MPLAB X installation directory).
- ;
- ; MPLAB X has a feature which generates configuration bits source code. Go to
- ; Window > PIC Memory Views > Configuration Bits. Configure each field as
- ; needed and select 'Generate Source Code to Output'. The resulting code which
- ; appears in the 'Output Window' > 'Config Bits Source' tab may be copied
- ; below.
- ;
- ;*******************************************************************************
- ; TODO INSERT CONFIG HERE
- ;*******************************************************************************
- ;
- ; TODO Step #3 - Variable Definitions
- ;
- ; Refer to datasheet for available data memory (RAM) organization assuming
- ; relocatible code organization (which is an option in project
- ; properties > mpasm (Global Options)). Absolute mode generally should
- ; be used sparingly.
- ;
- ; Example of using GPR Uninitialized Data
- ;
- ; GPR_VAR UDATA
- ; MYVAR1 RES 1 ; User variable linker places
- ; MYVAR2 RES 1 ; User variable linker places
- ; MYVAR3 RES 1 ; User variable linker places
- ;
- ; ; Example of using Access Uninitialized Data Section (when available)
- ; ; The variables for the context saving in the device datasheet may need
- ; ; memory reserved here.
- #include<P18F45K20.inc>
- INT_VAR UDATA_ACS
- TAB_LENGTH RES 1
- TAB_INCREMENT RES 1
- MIN RES 1
- MAX RES 1
- ; STATUS_TEMP RES 1 ; status used for context saving
- ; BSR_TEMP RES 1 ; bank select used for ISR context saving
- ;
- ;*******************************************************************************
- ; TODO PLACE VARIABLE DEFINITIONS GO HERE
- ;*******************************************************************************
- ; Reset Vector
- ;*******************************************************************************
- RES_VECT CODE 0x0000 ; processor reset vector
- GOTO MAIN ; go to beginning of program
- ;*******************************************************************************
- ; TODO Step #4 - Interrupt Service Routines
- ;
- ; There are a few different ways to structure interrupt routines in the 8
- ; bit device families. On PIC18's the high priority and low priority
- ; interrupts are located at 0x0008 and 0x0018, respectively. On PIC16's and
- ; lower the interrupt is at 0x0004. Between device families there is subtle
- ; variation in the both the hardware supporting the ISR (for restoring
- ; interrupt context) as well as the software used to restore the context
- ; (without corrupting the STATUS bits).
- ;
- ; General formats are shown below in relocatible format.
- ;
- ;------------------------------PIC16's and below--------------------------------
- ;
- ; ISR CODE 0x0004 ; interrupt vector location
- ;
- ; <Search the device datasheet for 'context' and copy interrupt
- ; context saving code here. Older devices need context saving code,
- ; but newer devices like the 16F#### don't need context saving code.>
- ;
- ; RETFIE
- ;
- ;----------------------------------PIC18's--------------------------------------
- ;
- ; ISRHV CODE 0x0008
- ; GOTO HIGH_ISR
- ; ISRLV CODE 0x0018
- ; GOTO LOW_ISR
- ;
- ; ISRH CODE ; let linker place high ISR routine
- ; HIGH_ISR
- ; <Insert High Priority ISR Here - no SW context saving>
- ; RETFIE FAST
- ;
- ; ISRL CODE ; let linker place low ISR routine
- ; LOW_ISR
- ; <Search the device datasheet for 'context' and copy interrupt
- ; context saving code here>
- ; RETFIE
- ;
- ;*******************************************************************************
- ; TODO INSERT ISR HERE
- ;*******************************************************************************
- ; MAIN PROGRAM
- ;*******************************************************************************
- MAIN_PROG CODE ; let linker place main program
- WRITE_ARRAY
- LFSR 0, h'100'
- MOVLW 0
- MOVWF TAB_LENGTH,0
- MOVLW d'25'
- MOVWF POSTINC0,0
- INCF TAB_LENGTH
- MOVLW d'4'
- MOVWF POSTINC0,0
- INCF TAB_LENGTH
- MOVLW d'2'
- MOVWF POSTINC0,0
- INCF TAB_LENGTH
- MOVLW d'15'
- MOVWF POSTINC0,0
- INCF TAB_LENGTH
- MOVLW d'16'
- MOVWF POSTINC0,0
- INCF TAB_LENGTH
- MOVLW d'101'
- MOVWF POSTINC0,0
- INCF TAB_LENGTH
- MOVLW d'33'
- MOVWF POSTINC0,0
- INCF TAB_LENGTH
- MOVLW d'3'
- MOVWF POSTINC0,0
- INCF TAB_LENGTH
- RETURN
- UPDATE_MIN_MAX
- MOVF POSTINC0, 0
- CPFSLT MIN
- MOVWF MIN
- CPFSGT MAX
- MOVWF MAX
- RETURN
- CHERCHE_MIN_MAX
- CLRF FSR0H,0
- LFSR 0, h'100'
- MOVLW 0xFF
- MOVWF MIN
- MOVLW 0x00
- MOVWF MAX
- LOOP
- CALL UPDATE_MIN_MAX
- INCF TAB_INCREMENT
- MOVF TAB_INCREMENT, 0
- CPFSLT TAB_LENGTH
- GOTO LOOP
- RETURN
- MAIN
- CALL WRITE_ARRAY
- CALL CHERCHE_MIN_MAX
- GOTO $ ; loop forever
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement