;; ;; mur.sat ;; ;; Somewhen in the year 2011, mur.at will have a nano satellite launched ;; into a low earth orbit (310 km above the surface of our planet). The ;; satellite itself is a TubeSat personal satellite kit, developed and ;; launched by interorbital systems. mur.sat is a joint venture of mur.at, ;; ESC im Labor and realraum. ;; ;; Please visit the project hompage at sat.mur.at for further information. ;; ;; ;; Copyright (C) 2011 Christian Pointner ;; ;; This file is part of mur.sat. ;; ;; mur.sat is free software: you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation, either version 3 of the License, or ;; any later version. ;; ;; mur.sat is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; ;; You should have received a copy of the GNU General Public License ;; along with mur.sat. If not, see . ;; ;; ------------------------------------- ;; PREAMBLE LIST p=16F887 include "p16f887.inc" ;; TODO: set correct configuration bits __config _DEBUG_OFF & _LVP_OFF & _FCMEN_OFF & _IESO_OFF & _BOR_OFF & _CPD_OFF & _CP_OFF & _MCLRE_OFF & _PWRTE_OFF & _WDT_OFF & _XT_OSC ;; ------------------------------------- ;; DEFINES ;; constants ;; I/O Pins LED EQU 5 ;; variables ;; page 0 only CNT0 EQU H'0020' CNT1 EQU H'0021' ;; all pages W_TEMP EQU H'007E' STATUS_TEMP EQU H'007F' ;; bits ;; ------------------------------------- ;; Reset Vector org 0 goto init ;; ------------------------------------- ;; Interrupt Vector org 4 ;; save context movwf W_TEMP swapf STATUS,W movwf STATUS_TEMP bcf STATUS,RP0 bcf STATUS,RP1 ;; TODO: implement interrupt service routines interrupt_end ;; restore context swapf STATUS_TEMP,W movwf STATUS swapf W_TEMP,F swapf W_TEMP,W retfie ;; ------------------------------------- ;; INIT init ;; bank 1 bsf STATUS,RP0 bcf STATUS,RP1 movlw b'11000111' movwf OPTION_REG clrf PSTRCON movlw b'00010000' movwf OSCCON movlw b'11011111' movwf TRISD bcf STATUS,RP0 ;; bank 0 bsf PORTD,LED clrf TMR0 goto main ;; ------------------------------------- ;; TABLES ;; TODO: add lookup tables if needed ;; ------------------------------------- ;; SUBROUTINES ;; TODO: add subroutines ;; ------------------------------------- ;; MAINLOOP main bcf INTCON,T0IF loop btfss INTCON,T0IF goto loop movlw b'00100000' xorwf PORTD,f goto main powerdown sleep nop goto main ;; ------------------------------------- ;; END end