; setup.asm
;
; Copyright (C) 2006,2007 Nuno Sucena Almeida
;
; 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; either version 2 of the License, or
; (at your option) any later version.
;
; 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., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
;


        include <proc.inc>

;	16F88 CPU configuration, page 130 and 131.
ifdef	__16F88
;	check the p16f88.inc header file for this:
;	BOREN, BODEN??
	__CONFIG	_CONFIG1,_CP_OFF & _DEBUG_OFF & _WRT_PROTECT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF &  _MCLR_OFF & _PWRTE_OFF & _WDT_OFF & _HS_OSC
	__CONFIG	_CONFIG2,_IESO_OFF & _FCMEN_OFF 
endif

;       16F648A CPU Configuration (see page 94 of datasheet)
ifdef   __16F648A
        __CONFIG _CP_OFF & _LVP_OFF & _WDT_OFF & _PWRTE_OFF & _HS_OSC & _BOREN_OFF & _DATA_CP_OFF & _MCLRE_OFF
endif
;       16F628 CPU Configuration (see page 94 of datasheet)
ifdef   __16F628
        __CONFIG _CP_OFF & _LVP_OFF & _WDT_OFF & _PWRTE_OFF & _HS_OSC & _BODEN_OFF & _DATA_CP_OFF & _MCLRE_OFF
endif

        udata

        code

; *********************** Setup *****************
setup:
;	OPTION_REG, page 18
	clrwdt
	banksel	OPTION_REG
	movlw	B'11001000'
	movwf	OPTION_REG

;	INTCON, page 19
	banksel	INTCON
	movlw	B'00000000'
	movwf	INTCON

;	PIE1, page 20
	banksel	PIE1
	movlw	B'00000000'
	movwf	PIE1

;	PIR1, page 21
	banksel PIR1
	movlw	B'00000000'
	movwf	PIR1

;	PIE2, page 22
	banksel	PIE2
	movlw	B'00000000'
	movwf	PIE2

; 	PIR2, page 23
	banksel PIR2
	movlw	B'00000000'
	movwf	PIR2

;	PCON, page 24


;	PORT A configuration, page 51ff
	banksel	PORTA
	clrf	PORTA
;	set all for digital I/O, see page 113
	banksel	ANSEL
	movlw	0x00
	movwf	ANSEL
; 0=output 1=input
	movlw	B'11111110'
;	movlw	B'11111111'
	banksel	TRISA
	movwf	TRISA

;	PORT B configuration, page 57ff
	banksel	PORTB
	clrf	PORTB
	banksel	TRISB
; 0=output 1=input
	movlw	B'11011111'
	movwf	TRISB

	return

	global	setup
	end