-//
-// Firmware for the PIC on the TeleTerra ground station board for
-// TeleMetrum, see http://altusmetrum.org/TeleTerra for more info.
-//
-// Copyright © 2010 Bdale Garbee <bdale@gag.com>
-//
-// This program 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; version 2 of the License.
-//
-// This program 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 this program; if not, write to the Free Software Foundation, Inc.,
-// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
-//
-//************************************************************
-// Processor: PIC16F886 using internal oscillator
-//************************************************************
-
-// FIXME - cloned from clock4robert project, not ready for use yet!
-
-#include "pic16f886.h"
-// #include "signal.h" // interrupt handler / signal techniques
-
-
-// FIXME - these are probably not correct!
-code char at _CONFIG1 conf1 = 0x22; // select HS OSC
-code char at _CONFIG2 conf2 = 0x0e; // disable WDT
-
-#define LED_TRIS TRISA7
-#define LED_PIN RA7
-
-// a simple delay function
-void delay_ms(long ms)
-{
- long i;
-
- while (ms--)
- for (i=0; i < 330; i++)
- ;
-}
-
-
-void main()
-{
-
- // set pins to output to wiggle LEDs
- LED_TRIS = 0;
-
-// // Enable high and low priority interrupts
-// RCON = 0;
-// RCONbits.IPEN = 1;
-//
-// // Configure timer0
-// T0CON = 0x88; // enable 16 bit timer, no prescaler
-//
-// // enable timer0 interrupt as a high priority source
-// INTCON2bits.TMR0IP = 1;
-// INTCONbits.TMR0IE = 1;
-//
-// // Enable interrupts
-// INTCONbits.GIE = 1;
-
- // sit in an endless loop blinking the alarm led
- for (;;)
- {
- LED_PIN = 0;
- delay_ms(250);
- LED_PIN = 1;
- delay_ms(250);
- }
-}
-
-// ; ; -----------
-// ; ; Vectors
-// ; ; -----------
-// ;
-// ; ORG 0x0800
-// ; GOTO Start
-// ;
-// ; ORG 0x0808
-// ; CALL H_PRIO_ISR
-// ; RETFIE
-// ;
-// ; ORG 0x0818
-// ; RETFIE
-// ;
-// ; ; -----------
-// ; ; INITIALIZE
-// ; ; -----------
-// ;
-// ; Start
-// ; CLRF PORTA ; Initialize port A
-// ; CLRF PORTD ; Initialize port D
-// ; CLRF PORTE ; Initialize port E
-// ;
-// ; CLRF TRISA ; All pins port A output
-// ; CLRF TRISD ; All pins port D output
-// ; CLRF TRISE ; All pins port E output
-// ;
-// ; ; CLRF WDTCON
-// ;
-// ; ; -----------
-// ; ; Timer0
-// ; ; -----------
-// ;
-// ; CLRF TMR0H ; clear timer 0
-// ; CLRF TMR0L
-// ;
-// ; ; this works out to about 1.4 seconds per tick
-// ; ; MOVLW b'10000111' ; enable 16 bit timer, 256:1 prescaler
-// ; ; this works out to about 350ms per tick
-// ; ; MOVLW b'10000101' ; enable 16 bit timer, 64:1 prescaler
-// ; ; this works out to about 10.4ms per tick, or 91.6hz
-// ; ; MOVLW b'10000000' ; enable 16 bit timer, 2:1 prescaler
-// ; ; this works out to 5.46ms per tick, 183.32hz
-// ; MOVLW b'10001000' ; enable 16 bit timer, no prescaler
-// ; MOVWF T0CON
-// ;
-// ; BCF INTCON, TMR0IF ; clear Timer0 interrupt flag
-// ; BSF INTCON, TMR0IE ; enable Timer0 interrupt
-// ; BSF INTCON, GIE ; enable interrupts
-// ;
-// ; ; ------------------------
-// ; ; FUNCTION OF PORT A PINS
-// ; ; ------------------------
-// ; ;
-// ; ; MOVLW 7
-// ; ; MOVWF CMCON ; Comparators off, all pins digital I/O
-// ; ;
-// ; ; ----------
-// ; ; MAIN LOOP
-// ; ; ----------
-// ; Main CALL LpmOn ; light PM
-// ; CALL LamOff
-// ; CALL LsaOn ; light segment A
-// ; CALL LsbOn ; light segment B
-// ; CALL LscOn ; light segment C
-// ; CALL LsdOn ; light segment D
-// ; CALL LseOn ; light segment E
-// ; CALL LsfOn ; light segment F
-// ; CALL LsgOn ; light segment G
-// ; CALL LcOn ; colon on
-// ; CALL Drv0On
-// ; CALL Drv1Off
-// ; CALL Drv2Off
-// ; CALL Drv3Off
-// ; CALL delay
-// ; CALL LcOff ; colon off
-// ; CALL Drv0Off
-// ; CALL Drv1On
-// ; CALL Drv2Off
-// ; CALL Drv3Off
-// ; CALL delay
-// ; CALL LcOn ; colon on
-// ; CALL LamOn
-// ; CALL LpmOff
-// ; CALL Drv0Off
-// ; CALL Drv1Off
-// ; CALL Drv2On
-// ; CALL Drv3Off
-// ; CALL delay
-// ; CALL LcOff ; colon off
-// ; CALL Drv0Off
-// ; CALL Drv1Off
-// ; CALL Drv2Off
-// ; CALL Drv3On
-// ; CALL delay
-// ; GOTO Main
-// ;
-// ; ; digit select 0
-// ; Drv0On BSF LATA,2
-// ; RETURN
-// ;
-// ; Drv0Off BCF LATA,2
-// ; RETURN
-// ;
-// ; ; digit select 1
-// ; Drv1On BSF LATA,3
-// ; RETURN
-// ;
-// ; Drv1Off BCF LATA,3
-// ; RETURN
-// ;
-// ; ; digit select 2
-// ; Drv2On BSF LATA,4
-// ; RETURN
-// ;
-// ; Drv2Off BCF LATA,4
-// ; RETURN
-// ;
-// ; ; digit select 3
-// ; Drv3On BSF LATA,5
-// ; RETURN
-// ;
-// ; Drv3Off BCF LATA,5
-// ; RETURN
-// ;
-// ; ; control digit segment A
-// ; LsaOn BSF LATD,0
-// ; RETURN
-// ;
-// ; LsaOff BCF LATD,0
-// ; RETURN
-// ;
-// ; ; control digit segment B
-// ; LsbOn BSF LATD,1
-// ; RETURN
-// ;
-// ; LsbOff BCF LATD,1
-// ; RETURN
-// ;
-// ; ; control digit segment C
-// ; LscOn BSF LATD,2
-// ; RETURN
-// ;
-// ; LscOff BCF LATD,2
-// ; RETURN
-// ;
-// ; ; control digit segment D
-// ; LsdOn BSF LATD,3
-// ; RETURN
-// ;
-// ; LsdOff BCF LATD,3
-// ; RETURN
-// ;
-// ; ; control digit segment E
-// ; LseOn BSF LATD,4
-// ; RETURN
-// ;
-// ; LseOff BCF LATD,4
-// ; RETURN
-// ;
-// ; ; control digit segment F
-// ; LsfOn BSF LATD,5
-// ; RETURN
-// ;
-// ; LsfOff BCF LATD,5
-// ; RETURN
-// ;
-// ; ; control digit segment G
-// ; LsgOn BSF LATD,6
-// ; RETURN
-// ;
-// ; LsgOff BCF LATD,6
-// ; RETURN
-// ;
-// ; ; control the "AM" LED
-// ; LamOn BSF LATE,1
-// ; RETURN
-// ;
-// ; LamOff BCF LATE,1
-// ; RETURN
-// ;
-// ; ; control the "PM" LED
-// ; LpmOn BSF LATE,2
-// ; RETURN
-// ;
-// ; LpmOff BCF LATE,2
-// ; RETURN
-// ;
-// ; ; control the "colon" LED
-// ; LcOn BSF LATD,7
-// ; RETURN
-// ;
-// ; LcOff BCF LATD,7
-// ; RETURN
-// ;
-// ; ; control the "alarm" LED
-// ; LaOn BSF LATE,0
-// ; RETURN
-// ;
-// ; LaOff BCF LATE,0
-// ; RETURN
-// ;
-// ; ; ---------------
-// ; ; DELAY 0.5 SEC
-// ; ; ---------------
-// ; ;
-// ; ;delay MOVLW 20
-// ; delay MOVLW 10
-// ; MOVWF Loop1
-// ; Outer MOVLW 250
-// ; MOVWF Loop2
-// ; Middle MOVLW 239
-// ; MOVWF Loop3
-// ; Inner NOP
-// ; NOP
-// ; DECFSZ Loop3,F
-// ; GOTO Inner
-// ; DECFSZ Loop2,F
-// ; GOTO Middle
-// ; DECFSZ Loop1,F
-// ; GOTO Outer
-// ; RETURN
-// ;
-// ; ; ---------------
-// ; ; High priority interrupt service route
-// ; ; ---------------
-// ; H_PRIO_ISR
-// ; BCF INTCON, TMR0IF ; clear Timer0 interrupt flag
-// ; INCF Counter,1
-// ; BTFSC Counter,6 ; test bit 6
-// ; GOTO TurnItOn
-// ; CALL LaOff ; turn alarm LED off
-// ; GOTO End_ISR
-// ; TurnItOn
-// ; CALL LaOn ; turn alarm LED on
-// ; End_ISR
-// ; RETURN
-//
-// END