From c257d5f90bce738aa8d94be443049566f2f740b3 Mon Sep 17 00:00:00 2001 From: "Dawid J. Kubis" Date: Mon, 20 Jun 2022 12:20:36 +0200 Subject: [PATCH] copied template, changed formatting --- src/main.asm | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 src/main.asm diff --git a/src/main.asm b/src/main.asm new file mode 100644 index 0000000..79c0c2a --- /dev/null +++ b/src/main.asm @@ -0,0 +1,78 @@ +;********************************************************************** +; * +; Filename: main.asm * +; Date: * +; File Version: * +; * +; Author: * +; Company: * +; * +; * +;********************************************************************** +; * +; Files required: * +; * +; * +; * +;********************************************************************** +; * +; Notes: * +; * +; * +; * +; * +;********************************************************************** + +;; basic setup + list p=16f676 ; list directive to define processor + #include ; 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' +