;********************************************************************** ;* Filename: main.asm ;* Project: EPROM emulator ;* Date: 05 June 2005 ;* Version: 0.1 ;* Author: Philip Pemberton ;* ;* Startup code for EPROM emulator. ;********************************************************************** include "config.inc" ; Device configuration __CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _HS_OSC & _WRT_OFF & _LVP_OFF & _CPD_OFF ;********************************************************************** ;** HEADERS ;********************************************************************** include "pins.inc" ; Pin definitions ;********************************************************************** ;** CONSTANTS ;********************************************************************** lbank equ 0 ;register bank for the local state of this module lbankadr equ bankadr(lbank) ;address within local state register bank ;********************************************************************** ;** RAM VARIABLES ;********************************************************************** ; Global state. defram gbankadr ; Local state defram lbankadr tmpx RES 1 ;********************************************************************** ;** RESET VECTOR ;********************************************************************** .reset CODE 0x000 ; processor reset vector NOP ; Required for ICD MOVLW HIGH START ; Load upper byte of 'start' label MOVWF PCLATH ; initialise PCLATH GOTO START ; go to beginning of program ;********************************************************************** ;** MAIN PROGRAM ;********************************************************************** .strt CODE START: unbank ; Discard all banking assumptions dbankif ADCON1 ; Start by killing the A/D converter MOVLW B'00000111' MOVWF ADCON1 ;-------------------------------------- dbankif PORTA ; Initial port state for PORTA MOVLW porta_state MOVWF PORTA dbankif PORTB ; Initial port state for PORTB MOVLW portb_state MOVWF PORTB dbankif PORTC ; Initial port state for PORTC MOVLW portc_state MOVWF PORTC dbankif PORTD ; Initial port state for PORTD MOVLW portd_state MOVWF PORTD dbankif PORTE ; Initial port state for PORTE MOVLW porte_state MOVWF PORTE ;-------------------------------------- dbankif TRISA ; Initial TRIS state for PORTA MOVLW porta_tris MOVWF TRISA dbankif TRISB ; Initial TRIS state for PORTB MOVLW portb_tris MOVWF TRISB dbankif TRISC ; Initial TRIS state for PORTC MOVLW portc_tris MOVWF TRISC dbankif TRISD ; Initial TRIS state for PORTD MOVLW portd_tris MOVWF TRISD dbankif TRISE ; Initial TRIS state for PORTE MOVLW porte_tris MOVWF TRISE ;-------------------------------------- gcall intr_Init ; Initialise the interrupt handlers gcall uart_Init ; Initialise the UART ;-------------------------------------- gcall main_Run ; Call main program loop CLRF PCLATH ; Oh dear. main() returned. RESET! GOTO 0 END