You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
3.6 KiB
NASM
79 lines
3.6 KiB
NASM
;**********************************************************************
|
|
; *
|
|
; Filename: main.asm *
|
|
; Date: *
|
|
; File Version: *
|
|
; *
|
|
; Author: *
|
|
; Company: *
|
|
; *
|
|
; *
|
|
;**********************************************************************
|
|
; *
|
|
; Files required: *
|
|
; *
|
|
; *
|
|
; *
|
|
;**********************************************************************
|
|
; *
|
|
; Notes: *
|
|
; *
|
|
; *
|
|
; *
|
|
; *
|
|
;**********************************************************************
|
|
|
|
;; basic setup
|
|
list p=16f676 ; list directive to define processor
|
|
#include <p16F676.inc> ; processor specific variable definitions
|
|
|
|
errorlevel -302 ; suppress message 302 from list file
|
|
|
|
__CONFIG _CP_OFF & _CPD_OFF & _BODEN_OFF & _MCLRE_OFF & _WDT_OFF & _PWRTE_ON & _INTRC_OSC_NOCLKOUT
|
|
|
|
; '__CONFIG' directive is used to embed configuration word within .asm file.
|
|
; The lables following the directive are located in the respective .inc file.
|
|
; See data sheet for additional information on configuration word settings.
|
|
|
|
w_temp EQU 0x20 ; variable used for context saving
|
|
status_temp EQU 0x21 ; variable used for context saving
|
|
|
|
ORG 0x000 ; processor reset vector
|
|
goto main ; go to beginning of program
|
|
|
|
|
|
ORG 0x004 ; interrupt vector location
|
|
movwf w_temp ; save off current W register contents
|
|
movf STATUS,w ; move status register into W register
|
|
movwf status_temp ; save off contents of STATUS register
|
|
|
|
; isr code can go here or be located as a call subroutine elsewhere
|
|
|
|
movf status_temp,w ; retrieve copy of STATUS register
|
|
movwf STATUS ; restore pre-isr STATUS register contents
|
|
swapf w_temp,f
|
|
swapf w_temp,w ; restore pre-isr W register contents
|
|
retfie ; return from interrupt
|
|
|
|
|
|
; these first 4 instructions are not required if the internal oscillator is not used
|
|
main
|
|
; call 0x3FF ; retrieve factory calibration value
|
|
; bsf STATUS,RP0 ; set file register bank to 1
|
|
; movwf OSCCAL ; update register with factory cal value
|
|
; bcf STATUS,RP0 ; set file register bank to 0
|
|
|
|
|
|
;; remaining code goes here
|
|
|
|
|
|
|
|
;; initialize eeprom locations
|
|
|
|
ORG 0x2100
|
|
DE 0x00, 0x01, 0x02, 0x03
|
|
|
|
|
|
END ; directive 'end of program'
|
|
|