commit ee3158fa3f446b46a8924f93e8e29d1b5658e129 Author: David Gálvez Date: Mon Jan 3 08:10:50 2011 +0000 Moved source_fa into trunk diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..ed2943c --- /dev/null +++ b/Makefile @@ -0,0 +1,19 @@ +# MPLAB IDE generated this makefile for use with GNU make. +# Project: firebee1.mcp +# Date: Sun Oct 04 21:22:09 2009 + +AS = mpasmwin.exe +CC = mcc18.exe +LD = mplink.exe +AR = mplib.exe +RM = rm + +firebee1.cof : firebee1.o + $(LD) "..\MPASM Suite\LKR\18f4520i.lkr" "firebee1.o" /z__MPLAB_BUILD=1 /o"firebee1.cof" /M"firebee1.map" /W + +firebee1.o : firebee1.asm ../../../Programme/Microchip/MPASM\ Suite/P18f4520.inc + "C:\Programme\Microchip\MPASM Suite\MPASMWIN.exe" /q /p18F4520 "firebee1.asm" /l"firebee1.lst" /e"firebee1.err" /o"firebee1.o" + +clean : + $(RM) "firebee1.o" "firebee1.ERR" "firebee1.lst" "firebee1.cof" "firebee1.hex" + diff --git a/NMakefile b/NMakefile new file mode 100644 index 0000000..f0a9e54 --- /dev/null +++ b/NMakefile @@ -0,0 +1,19 @@ +# MPLAB IDE generated this makefile for use with Microsoft `nmake'. +# Project: firebee1.mcp +# Date: Sun Oct 04 21:22:09 2009 + +AS = mpasmwin.exe +CC = mcc18.exe +LD = mplink.exe +AR = mplib.exe +RM = del + +"firebee1.cof" : "firebee1.o" + $(LD) "..\MPASM Suite\LKR\18f4520i.lkr" "firebee1.o" /z__MPLAB_BUILD=1 /o"firebee1.cof" /M"firebee1.map" /W + +"firebee1.o" : "firebee1.asm" "..\..\..\Programme\Microchip\MPASM Suite\P18f4520.inc" + "C:\Programme\Microchip\MPASM Suite\MPASMWIN.exe" /q /p18F4520 "firebee1.asm" /l"firebee1.lst" /e"firebee1.err" /o"firebee1.o" + +"clean" : + $(RM) "firebee1.o" "firebee1.ERR" "firebee1.lst" "firebee1.cof" "firebee1.hex" + diff --git a/PS2Atari_v1_4.asm b/PS2Atari_v1_4.asm new file mode 100644 index 0000000..ee6c087 --- /dev/null +++ b/PS2Atari_v1_4.asm @@ -0,0 +1,619 @@ +;***************************************************************************** +; PS2Atari_v1_4.asm * +; PS2 PC mouse to Atari / Amiga mouse converter by Tom Kirk March 2010 * +; Version 1.3 * +;***************************************************************************** +; * +; Enables a PS2 PC mouse to be used with Atari / Amiga computers using * +; the circuit in circuit.bmp with a PIC16F84(A)/C84 micrcontroller. * +; * +; Assembled using Microchip MPLAB and MPASM. * +; Disable case sensitivity under build options. * +; * +;***************************************************************************** +; Version 1.4 July 2010 * +; Unused Pin RA4 now correctly set as an imput. * +; (Pin is tied to +5V on PCB for easier PCB routing.) * +; My oversight when transfering from prototype to PCB. * +; Thanks to Luciano for informing me. * +; * +; Version 1.3 March 2010 * +; Corrected a bug in button routine preventing both buttons being active * +; together under certain conditions. * +; Thanks to Oliver Fleischmann for informing me. * +; (Can't believe it taken 6 Years for this bug to show itself!!) * +; * +; Version 1.2 June 07 * +; Changed left/right button outputs to fake open collector. * +; Needed to stop conflits when using a joystick pluged into other port. * +; * +; Version 1.1 August 04 * +; Added support for Amiga. * +; * +;***************************************************************************** + + + ; list directive to define processor + list p=16F84A + + ; processor specific variable definitions + #include + + ; define config bits + __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC + + ;4 MHz Clock + +;************************ Input output usage ******************** + +; RA0 Atari / Amiga select i/p +; RA1 PS2 mouse data +; RA2 PS2 mouse clock +; RA3 Not used +; RA4 Not used + +; RB0 Atari XA / Amiga XA o/p +; RB1 Atari XB / Amiga YB o/p +; RB2 Atari YA / Amiga YA o/p +; RB3 Atari YB / Amiga XB o/p +; RB4 Left button o/p +; RB5 Right button o/p +; RB6 Not used +; RB7 Not used + +;******************************************************************* + + +;********** I/O port equates ************** + + +ps2data equ 1 ;ps2 mouse data signal +ps2clk equ 2 ;ps2 mouse clock signal + + +;********** User register equates ********* + +temp equ 0ch ;Temporary storage +byte1 equ 0dh ;Byte 1 store +byte2 equ 0eh ;Byte 2 store +byte3 equ 0fh ;Byte 3 store +xinc equ 010h ;last x increment read +yinc equ 011h ;last y increment read +xlow equ 012h ;low byte of 16 bit x counter +xhigh equ 013h ;high byte of 16 bit x counter +ylow equ 014h ;low byte of 16 bit y counter +yhigh equ 015h ;high byte of 16 bit y counter +xpat equ 016h ;x pattern position +ypat equ 017h ;y pattern position +bcnt equ 018h ;bit counter +brec equ 019h ;byte received +timer equ 01ah ;timer counter +parity equ 01bh ;parity store +flag equ 01ch ;flag bits (bit 0 = ack error flag) + ; (bit 1 = parity error flag) + ; (bit 2 = middle button pressed flag) + ; (bit 3 = middle state flag) + ; (bit 4 = left button flag) + +;***************************************************************************************** + +;***** initialise program ******* + +reset clrwdt + bcf status,rp0 ;set page0 + clrf intcon ;disable interupts + bsf status,rp0 + movlw 084h ;set tmr0 to int clk,prescale/32 + movwf option_reg + bcf status,rp0 + clrf porta ;all porta outputs will be low when enabled + movlw 0h ;set mouse buttons and x y start levels + movwf portb + bsf status,rp0 + movlw 017h ;set porta bit 3 as an unused output + movwf trisa + movlw 030h ;set portb bit 4 and 5 as inputs (left/right button o/ps open collector) + movwf trisb + bcf status,rp0 + + clrf byte1 ;set start up values + clrf byte2 + clrf byte3 + clrf xinc + clrf yinc + clrf xlow + clrf xhigh + clrf ylow + clrf yhigh + clrf xpat + clrf ypat + clrf flag + + +;***************** set up ps2 mouse ********************* + + +start call ps2read ;read power up self test report + btfsc flag,1 ;parity error? + goto restart ;yes so jump + movlw 0aah ;correct ? + subwf brec,w + btfss status,z + goto restart ;no so jump + + call ps2read ;read power up pc mouse id + btfsc flag,1 ;parity error? + goto restart ;yes so jump + movlw 0h ;correct ? + subwf brec,w + btfss status,z + goto restart ;no so jump + +restart movlw 0ffh ;send reset pc mouse command + call ps2wri + btfsc flag,0 ;ack bit? + goto restart ;no so jump + + call ps2read ;ack returned + btfsc flag,1 ;parity error? + goto restart ;yes so jump + movlw 0fah ;correct ? + subwf brec,w + btfss status,z + goto restart ;no so jump + + call ps2read ;read self test report + btfsc flag,1 ;parity error? + goto restart ;yes so jump + movlw 0aah ;correct ? + subwf brec,w + btfss status,z + goto restart ;no so jump + + call ps2read ;read pc mouse id + btfsc flag,1 ;parity error? + goto restart ;yes so jump + movlw 0h ;correct ? + subwf brec,w + btfss status,z + goto restart ;no so jump + + movlw 0f4h ;send enable reporting command + call ps2wri + btfsc flag,0 ;ack bit? + goto restart ;no so jump + + call ps2read ;ack returned + btfsc flag,1 ;parity error? + goto restart ;yes so jump + movlw 0fah ;correct ? + subwf brec,w + btfss status,z + goto restart + + movlw 0f3h ;send set sample rate command + call ps2wri + btfsc flag,0 ;ack bit? + goto restart ;no so jump + + call ps2read ;ack returned + btfsc flag,1 ;parity error? + goto restart ;yes so jump + movlw 0fah ;correct ? + subwf brec,w + btfss status,z + goto restart + + movlw 028h ;send sample rate (40) + call ps2wri + btfsc flag,0 ;ack bit? + goto restart ;no so jump + + call ps2read ;ack returned + btfsc flag,1 ;parity error? + goto restart ;yes so jump + movlw 0fah ;correct ? + subwf brec,w + btfss status,z + goto restart + +;******************* Main program loop **************************** + +main call ps2read ;read 3 byte pc mouse packet + btfsc flag,1 ;parity error? + goto restart ;yes so jump + movf brec,w + movwf byte1 + call ps2read + btfsc flag,1 ;parity error? + goto restart ;yes so jump + movf brec,w + movwf byte2 + call ps2read + btfsc flag,1 ;parity error? + goto restart ;yes so jump + movf brec,w + movwf byte3 + +;adjust the 16 bit x counter + + clrf temp ;use temp as high byte + btfsc byte1,4 ;extend sign bit into high byte + decf temp,f + + movf byte2,w ;add low bytes + addwf xlow,f + btfsc status,c ;add carry to high + incf xhigh,f + movf temp,w ;add high bytes + addwf xhigh,f + +;adjust the 16 bit y counter + + clrf temp ;use temp as high byte + btfsc byte1,5 ;extend sign bit into high byte + decf temp,f + + movf byte3,w ;add low bytes + addwf ylow,f + btfsc status,c ;add carry to high + incf yhigh,f + movf temp,w ;add high bytes + addwf yhigh,f + +;left button + + btfss byte1,0 ;is the left pc mouse button pressed + goto lbutt ;no so jump + bsf flag,4 ;set left button flag + goto nbutt +lbutt bcf flag,4 ;reset left button flag + +;right button + +nbutt btfss byte1,1 ;is the right pc mouse button pressed + goto rbutt ;no so jump + bcf portb,5 ;set right button as pressed + bsf status,rp0 ;by setting pin as a low output + bcf trisb,5 + bcf status,rp0 + goto mbut +rbutt bsf status,rp0 ;set right button as not pressed + bsf trisb,5 ;by setting pin as an input + bcf status,rp0 + +;middle button + +mbut btfss byte1,2 ;check if middle button pressed + goto mbutt ;jump if not + btfsc flag,2 ;check middle button pressed flag + goto mbex ;set so jump + movlw 08h ;toggle middle state flag + xorwf flag,f + bsf flag,2 ;set middle button pressed flag + goto mbex + +mbutt btfss flag,2 + goto mbex + bcf flag,2 ;reset middle button pressed flag +mbex + + btfsc flag,3 ;check middle state flag + goto setlb ;jump if set + btfsc flag,4 ;check left button flag + goto setlb ;jump if set + bsf status,rp0 ;no flags set so set left buuton not pressed + bsf trisb,4 ;by setting pin as an input + bcf status,rp0 + goto main +setlb bcf portb,4 ;set left button pressed + bsf status,rp0 ;by setting pin as a low output + bcf trisb,4 + bcf status,rp0 + goto main + + +;***************************** Subs ***************************************** + +;***** Read a byte from the ps2 mouse ****** + +ps2read btfss porta,ps2data ;data low ? + goto ps2r1 ;yes so start reading data + call trans ;no so do emulated mouse move + clrf tmr0 ;clear rtcc before delay + +oned btfss porta,ps2data ;data low ? + goto ps2r1 ;yes so start reading data + movlw 0dh ;delay between emulated mouse moves + subwf tmr0,w + btfss status,z + goto oned ;not done so jump + goto ps2read ;check again + +ps2r1 call wlow ;wait until clock goes low for start bit + + call whigh ;wait until clock is high + + movlw 08h ;read 8 data bits + movwf bcnt + clrf parity ;clear parity counter + +ps2r2 call wlow ;wait until clock is low + bcf status,c ;clear carry flag + btfss porta,ps2data ;data bit set ? + goto ps2r3 ;no so jump + incf parity,f ;yes so inc the parity counter + bsf status,c ;set carry bit +ps2r3 rrf brec,f ;shift carry into destination + + call whigh ;wait until clock is high + + decfsz bcnt,f ;finished the 8 bits? + goto ps2r2 ;no so do again + + call wlow ;for the parity bit + btfsc porta,ps2data ;parity bit set? + incf parity,f ;yes so inc the parity counter + bcf flag,1 ;clear flag (no error) + btfss parity,0 ;check calculated parity + bsf flag,1 ;set flag (parity error!) + call whigh + + call wlow ;for the stop bit + call whigh + + return ;and exit + +;***** Write a byte to the ps2 mouse ****** + +ps2wri movwf brec ;speed not important at this point so + movwf temp ;calculate parity seperate for sake of + movlw 08h ;clarity + movwf bcnt + clrf parity +ps2w1 rrf temp,f ;shift bit into carry + movlw 01h ;preset for bit set + btfss status,c ;test carry + clrw ;bit zero so no addition + addwf parity,f ;update parity + decfsz bcnt,f ;any more bits to do? + goto ps2w1 ;yes so jump + comf parity,f ;only intrested in bit 0. + ;parity bit is complement of bit 0 + + movlw 08h ;bit count to 8 + movwf bcnt + + call clkl ;set clock low + + movlw 021h ;wait 100 uS + movwf temp +ps2ww decfsz temp,f + goto ps2ww + + call datl ;set data low + nop ;wait 5 uS + nop + nop + nop + nop + call clkh ;set clock high + +ps2w2 call wlow ;wait for clock to go low + rrf brec,f ;rotate bit into carry for testing + btfss status,c + goto ps2w3 ;jump if bit is low + call dath ;set data high + goto ps2w4 +ps2w3 call datl ;set data low +ps2w4 call whigh ;wait for clock to go high + + decfsz bcnt,f ;any more bits to send? + goto ps2w2 ;yes so jump + + call wlow ;wait for clock to go low + btfss parity,0 ;send parity bit + goto ps2w5 + call dath + goto ps2w6 +ps2w5 call datl +ps2w6 call whigh + + call wlow ;send stop bit + call dath + call whigh + + call wlow ;read ack from mouse + bcf flag,0 + btfsc porta,ps2data + bsf flag,0 + call whigh + + return + + +;******* wait for ps2 clock to go low ********** + +wlow btfsc porta,ps2clk + goto wlow + return + + +;******* wait for ps2 clock to go high ********** + +whigh btfss porta,ps2clk + goto whigh + return + + +;******* set ps2 clock low ********************* + +clkl bsf status,rp0 + bcf trisa,ps2clk + bcf status,rp0 + return + + +;******* set ps2 clock high ******************** + +clkh bsf status,rp0 + bsf trisa,ps2clk + bcf status,rp0 + return + + +;******* set ps2 data low ********************* + +datl bsf status,rp0 + bcf trisa,ps2data + bcf status,rp0 + return + + +;******* set ps2 data high ********************* + +dath bsf status,rp0 + bsf trisa,ps2data + bcf status,rp0 + return + + + +;********* emulate mouse move *************************** + +;move the emulated mouse by one step in the x direction if needed + +trans movf xlow,w ;is the x counter zero? + iorwf xhigh,w + btfsc status,z + goto ymove ;no so jump to y direction + + btfsc xhigh,7 ;is the x counter positive or negative? + goto xneg ;jump if negative + + incf xpat,f ;increment the pattern list position + movlw 04h ;test if end of pattern list + subwf xpat,w + btfsc status,z + clrf xpat ;end of pattern list so reset + movlw 0ffh ;subtract 1 from the 16 bit counter by adding ffffh + addwf xlow,f + btfsc status,c ;add carry to high byte + incf xhigh,f + addwf xhigh,f + goto ymove ;exit to y direction + +xneg decf xpat,f ;decrement the pattern list position + movlw 0ffh ;test if end of pattern list + subwf xpat,w + btfss status,z + goto xno + movlw 03h ;end of pattern list so reset + movwf xpat +xno movlw 01h ;add 1 to the 16 bit counter + addwf xlow,f + btfsc status,c ;add carry to high byte + incf xhigh,f + +;move the emulated mouse by one step in the y direction if needed + +ymove movf ylow,w ;is the y counter zero? + iorwf yhigh,w + btfsc status,z + goto out ;no so jump to output pattern + + btfsc yhigh,7 ;is the y counter positive or negative? + goto yneg ;jump if negative + + incf ypat,f ;increment the pattern list position + movlw 04h ;test if end of pattern list + subwf ypat,w + btfsc status,z + clrf ypat ;end of pattern list so reset + movlw 0ffh ;subtract 1 from the 16 bit counter by adding ffffh + addwf ylow,f + btfsc status,c ;add carry to high byte + incf yhigh,f + addwf yhigh,f + goto out ;exit to output pattern + +yneg decf ypat,f ;decrement the pattern list position + movlw 0ffh ;test if end of pattern list + subwf ypat,w + btfss status,z + goto yno + movlw 03h ;end of pattern list so reset + movwf ypat +yno movlw 01h ;add 1 to the 16 bit counter + addwf ylow,f + btfsc status,c ;add carry to high byte + incf yhigh,f + +;output new x and y patterns + +out btfsc porta,0 ;test if set for atari + goto amiga + + movf xpat,w ;get the x pattern bits + bsf pclath,1 ;set page 2 + call pattx + movwf temp ;store the pattern in temp + movf ypat,w ;get the y pattern bits + call patty + clrf pclath ;set page 0 + iorwf temp,f ;store the pattern in temp + + goto outpat + +amiga movf xpat,w ;get the x pattern bits + bsf pclath,1 ;set page 2 + call apatx + movwf temp ;store the pattern in temp + movf ypat,w ;get the y pattern bits + call apaty + clrf pclath ;set page 0 + iorwf temp,f ;store the pattern in temp + +outpat movf temp,w ;get patterns + andlw 0fh ;ensure high nibble stays zero + movwf portb ;ouput patterns + + + return + + +;*************** pattern lists ************** + + org 0200h + +;atari patterns +pattx addwf pcl,f + retlw 0 + retlw 1 + retlw 3 + retlw 2 + +patty addwf pcl,f + retlw 0 + retlw 4 + retlw 0ch + retlw 8 + +;amiga patterns +apatx addwf pcl,f + retlw 0 + retlw 1 + retlw 9 + retlw 8 + +apaty addwf pcl,f + retlw 0 + retlw 4 + retlw 6 + retlw 2 + +;******************************************************************************* + + END + + diff --git a/Thumbs.db b/Thumbs.db new file mode 100644 index 0000000..5c84dfb Binary files /dev/null and b/Thumbs.db differ diff --git a/circuit.bmp b/circuit.bmp new file mode 100644 index 0000000..10c587c Binary files /dev/null and b/circuit.bmp differ diff --git a/firebee1.asm b/firebee1.asm new file mode 100644 index 0000000..cc1d11a --- /dev/null +++ b/firebee1.asm @@ -0,0 +1,845 @@ +;********************************************************** +;* firebee1 PIC18F4321 MAIN FILE +;********************************************************** +;* CREATED BY FREDI ASCHWANDEN +;* DATE 22.9.2009 +;********************************************************** + list PE=18f4520 ;EXTENDED INSTRUCTION SET + include "P18f4520.inc" +;------------------------ Equates --------------------------; +;Register addresses +;BANK 0 +SECS equ 0x00 +SECS_ALARM EQU 0x01 +MINS equ 0x02 +MINS_ALRAM EQU 0x03 +HOURS equ 0x04 +HOURS_ALARM EQU 0x05 +DAY_OF_WEEK EQU 0x06 +DAYS EQU 0x07 +MONTHS EQU 0x08 +YEARS EQU 0x09 ;offset vom 1968 +REGA EQU 0x0A +REGB EQU 0x0B +REGC EQU 0x0C +REGD EQU 0x0D +RTC_RAM EQU 0x0E ; bis 0x3F +free equ 0x40 +TICKS equ 0x41 ;125MS +TASTE_ON_TIME EQU 0x42 +TASTE_OFF_TIME EQU 0x43 +POWER_ON_TIME EQU 0x44 +AD_KANAL EQU 0x45 +U_ERR EQU 0x46 ;SPANNUNGSFEHLER WENN BIT 0=1, BIT1=1 WARTEN AUF GELADEN +U_ERR_TIME EQU 0x47 ;ZEIT SEIT SPANNUNGSFEHLER +U_POWER_IN EQU 0x48 ;SPANNUNG POWER IN 1V CA. 6E +RX_B EQU 0x49 ;RECEIVED BYT +RX_STATUS EQU 0x4A ;STATUS: 0x00=WAIT AUF MCF COMMANDO, 0x82=EMPFANGE 64BYT FROM RTC +TX_STATUS EQU 0x4B ;STATUS: 0x00=WAIT 0x81=SENDE 64BYT FROM RTC +GO_SUB EQU 0x4C ;WENN GLEICH 0xFB DANN SUBROUTINE AUSFÜHREN +GO_INT EQU 0x4D ;WENN GLEICH 0xFB DANN SUBROUTINE AUSFÜHREN +EAPIR1 EQU 0x4E ;INTERRUPT ACTIV UND ENABLE +EAPIR2 EQU 0x4F ;INTERRUPT ACTIV UND ENABLE +;BANK 1 AB 0x100 +RX_BUFFER EQU 0x100 ;0x80 BYT BUFFER BIS 0x17F BANK +TX_BUFFER EQU 0x180 ;0X80 BYT BUFFER BIS 0x1FF BANK + +;-------------------------------------------------------------- +SEND_RTC_TIME EQU .2 ;0.25 SEC (EINHEIT IST EIN TICK = 128MS +RESET_ON_TIME EQU .2 ;0.25 SEC (EINHEIT IST EIN TICK = 128MS +RESET_OFF_TIME EQU .4 ;0.5 SEC (EINHEIT IST EIN TICK = 128MS +OFF_TIME EQU .20 ;2.5 SEC (EINHEIT IST EIN TICK = 128MS +ON_TIME EQU .2 ;0.25 SEC (EINHEIT IST EIN TICK = 128MS +TIMER_HB EQU .240 ;256- (32768Hz PRO 1/8SEC = 4096TICKS/256) => 256-16=240 (resp 256-16/4 (wenn osco) = 252) +TIME_MAX EQU .160 ;MAXIMALTIME +U_ERR_PW_AUS EQU .5 ;5 SEC +;SERIEL +SYNC1 EQU 0FFh +SYNC1_DATA EQU 'A'; +SYNC2 EQU 0FEh +SYNC2_DATA EQU 'C'; +SYNC3 EQU 0FDh +SYNC3_DATA EQU 'P'; +SYNC4 EQU 0FCh +SYNC4_DATA EQU 'F'; +REQ_RTCD_FROM_PIC EQU 01h ;RTC AND NVRAM DATEN VOM PIC ANFORDERN +RTCD_FROM_PIC EQU 81h ;RTC AND NVRAM DATEN HEADER UND STATUS +REQ_RTCD_FROM_MCF EQU 02h ;RTC AND NVRAM DATEN VOM MCF ANFORDERN +RTCD_FROM_MCF EQU 82h ;RTC AND NVRAM DATEN HEADER UND STATUS +U_MIN_TO_MCF EQU 03h ;UNTERSPANNUNGSMITTEILUNG AN PROCESSOR +EXT_SUB_GO EQU 04h ;SERIELL CODE UM SUBROUTINEN/INTERRUPTS ZU AKTIVIEREN +EXT_SUB_STOP EQU 05h ;SERIELL CODE UM SUBROUTINEN/INTERRUPTS ZU STOPPEN +CLK_SLEEP EQU B'00010010' ;125kHz intern, SLEEP MODE +CLK_ACTIV EQU B'01110010' ;inTernal CLK=8MHz, SLEEP MODE, SLEEP MODE +EXT_CODE EQU 0xFB ;CODE FÜR EXTERNE SUBROUTINEN/INTERRUPTS AUSFÜHREN (FireBee!) +EXTERN_INT_ADR EQU 0x2000 ;HIER MUSS 0xFB STEHEN WENN EXTERNE INTERRUPTS AUSFÜHRBAR +EXTERN_INTERRUPTS EQU 0x2002 ;STARTPUNKT EXTERNE SUBROUTINES +EXTERN_SUB_ADR EQU 0x2010 ;HIER MUSS 0xFB STEHEN WENN EXTERNE SUBROUTINES AUSFÜHRBAR +EXTERN_SUBROUTINES EQU 0x2012 ;STARTPUNKT EXTERNE SUBROUTINES +REQ_BLOCK EQU 0xA0 ;BLOCK DATEN LESEN -> CODE UND 3 BYTS ADRESSE = TOTAL 4 BYTES +READ_BLOCK EQU 0xA1 ;PROGRAMM BLOCK PIC->MCF -> CODE, 3 BYTS ADRESSE UND 64 BYTS DATEN = TOTAL 68 BYTES +WRITE_BLOCK EQU 0xA2 ;PROGRAMM BLOCK MCF->PIC -> CODE, 3 BYTS ADRESSE UND 64 BYTS DATEN = TOTAL 68 BYTES +PRG_OK_PIC EQU 0x22 ;PROGRAMMIERUNG BLOCK FERTIG +;**********************************************************************************************""""""""""""" +; Start at the reset vector +Reset_Vector code 0x000 + BRA KALT_START +;-------------------------------------------------------------- +HIGH_INT_VEC code 0x0008 + GOTO 0x18 + +LOW_INT_VEC code 0x0018 +INT_HANDLER + CLRF BSR ;IMMER ACCESS BANK +;SETZEN GRUPPE 1 + MOVFF PIE1,EAPIR1 ;INTERRUPTS HOLEN + MOVF PIR1,0 ;MASKE + ANDWF EAPIR1 ;ACTIVE SETZEN + BTFSC EAPIR1,TMR1IF ;uhr interrupt? + BRA RTC_ISR ;ja-> + BTFSC EAPIR1,ADIF ;AD INTERRUTP? + BRA AD_ISR ;JA-> + BTFSC EAPIR1,TXIF ;seriell TX? + BRA TX_ISR ;JA-> + BTFSC EAPIR1,RCIF ;seriell RX? + BRA RX_ISR ;JA-> + +;SETZEN GRUPPE 2 + MOVFF PIE2,EAPIR2 ;INTERRUPTS HOLEN + MOVF PIR2,0 ;MASKE + ANDWF EAPIR2 ;ACTIVE SETZEN + + BTFSC EAPIR2,HLVDIF ;UNDER/OVERVOLTAGE DETECT + BRA HLVD_ISR ;JA-> + RETFIE + +;TESTEN UND SETZEN GRUPPE 1 + MOVFF PIE1,EAPIR1 ;INTERRUPTS HOLEN + MOVF PIR1,0 ;MASKE + ANDWF EAPIR1 ;ACTIVE SETZEN + TSTFSZ EAPIR1 + BRA INT_HANDLER +;TESTEN UND SETZEN GRUPPE 2 + MOVFF PIE2,EAPIR2 ;INTERRUPTS HOLEN + MOVF PIR2,0 ;MASKE + ANDWF EAPIR2 ;ACTIVE SETZEN + TSTFSZ EAPIR2 + BRA INT_HANDLER + + MOVLW EXT_CODE ;GO EXTERNE SUBROUTINEN AKTIV? + CPFSEQ GO_INT ;SKIP WENN JA + RETFIE + GOTO EXTERN_INTERRUPTS ;REGISTER SICHERN UND STARTEN +;**********************************************************************************************""""""""""""" + ; Start application beyond vector area + CODE 0x0100 +KALT_START +;RESET MODE + CLRF BSR ;BANK 0 +;ALLE INT AUS UND RÜCKSETZEN + CLRF INTCON ;alle INTERRUPT AUS + CLRF RCON ;INT PRIORITY AUS + CLRF PIE1 ;MASK DISABLE + CLRF PIE2 + CLRF PIR1 ;INT ACT AUS + CLRF PIR2 + CLRF IPR1 ;LOW PRIORITY + CLRF IPR2 + ; clock +; MOVLW B'01000000' ;32MHZ +; MOVWF OSCTUNE + CLRF OSCTUNE +;CLOCK + MOVLW CLK_ACTIV + MOVWF OSCCON + ; div init +;SET PORT A: **7:#master/0.409*5V0 **6:PIC_AMKB_RX **5:PIC_SWTICH **4:HIGH_CHARGE_CURRENT **3:2V5 *2:3V3/2 **1:1V25 **0:POWER_IN/11 + CLRF PORTA ;#master(7)=0, REST=0 + MOVLW B'11111111' ;DIRECTION: alles auf Input + MOVWF TRISA +;SET PORT B: **7:PGD **6:PGC **5:PGM **4:PIN_INT,1V5 **3:GAME PORT PIN10 **2:GAME PORT PIN11 **1:GAME PORT PIN6 **0: GAME PORT PIN5 + CLRF PORTB ;ALLES AUF 0 + MOVWF TRISB +;SET PORT C: **7: PIC_RX **6:PIC_TX **5:AMKB_TX **4:GAME PORT PIN4 **3:GAME PORT PIN12 **2:GAME PORT PIN13 **1+0: OCS 32K768Hz + CLRF PORTC + MOVWF TRISC +;SET PORT D: **7:#RSTI **6:GAME PORT PIN3 **5:PS2 KB CLK **4:PS2 MS CLK **3:PS2 KB DATA **2:MS DATA **1:TASTER **0:POWER ON/OFF (0=ON) +; SET TASTE UND POWER + CLRF PORTD ;ALLES AUF 0 + MOVWF TRISD ;ALLES AUF INPUT +;SET PORT E: **3:#MCLR **2:#PCI_RESET **1:PCI 3V3 **0:PIC LED (0=ON) + MOVLW B'00000001' ;LED OFF + CLRF PORTE ;ALLES AUF 0 + MOVWF TRISE ;ALLES AUF INPUT +;-------------------------- +; set OVERvoltage detekt + MOVLW B'10011011' ;INT WENN ÜBER 3.9V + MOVWF HLVDCON + MOVLW B'00000011' ;ERRORS ON, WAIT AUF LADEN + MOVWF U_ERR + MOVLW .20 ;SEIT 20SEC ERROR + MOVWF U_ERR_TIME ;SETZEN + BSF PIE2,HLVDIE ;Enable interrupt +;INTIALISIERUNGSPROGAMME + CALL LADESTROM ;LADESTROM EINSTELLEN +;UHR initialisieren + MOVLW TIMER_HB ;Preload TMR1 register + MOVWF TMR1H ; + CLRF TMR1L ;=0 + MOVLW B'00001111' ; 8 BIT, osc1 enable, TIMER MODE, TIMMER ENABLE + MOVWF T1CON ; SET + CLRF TICKS ; 1/8 sec register + CLRF SECS ; Initialize timekeeping registers + CLRF MINS ; + MOVLW .12 + MOVWF HOURS + MOVLW .1 + MOVWF DAY_OF_WEEK + MOVLW .1 + MOVWF DAYS + MOVLW .8 + MOVWF MONTHS + MOVLW .42 + MOVWF YEARS ;MONTAG 19.7.2010 12:00:00 (JAHR-1968) + CLRF TASTE_ON_TIME + CLRF TASTE_OFF_TIME + CLRF POWER_ON_TIME + BSF PIE1,TMR1IE ;Enable Timer1 interrupt +;AD WANDLER INITIALISIEREN + CLRF AD_KANAL ;BEI 0 BEGINNEN + CLRF ADCON0 ;AD MOUDUL AUS + MOVLW B'00001001' ;VREF=VDD,ANALOG INPUT AN0-AN5 + MOVWF ADCON1 + MOVLW B'00000000' ;LINKSSBÜNDIG,0 TAD,CLOCK=Fosc/2 + MOVWF ADCON2 +; BSF PIE1,ADIE ;INTERRUPT ENABLE + CLRF U_POWER_IN ;WERT AUF 0 VOLT +; seriell initialisieren + CLRF SPBRGH + MOVLW .16 + MOVWF SPBRG ;BAUDE RATE = 115K + MOVLW B'00000100' ;TX AUS, ASYNC HIGH SPEED + MOVWF TXSTA + MOVLW B'10010000' ;SERIEL EIN,RX EIN, + MOVWF RCSTA + MOVLW B'00001000' ;16BIT BRG, RISING EDGE INTERRUPT + MOVWF BAUDCON ;SETZEN +;EXTERNER SUBROUTINES + CLRF GO_SUB +; interrupts + CLRF INTCON3 ;EXTER INTERRUPT AUS, low priority + MOVLW B'11110000' ;PORT B PULLUPS AUS, EXT INT ON RISING EDGE, TMR0 AND BPIP Low priority + MOVWF INTCON2 + MOVLW B'11000000' ;global on, PERIPHERAL INT on + MOVWF INTCON +;CLOCK + MOVLW CLK_SLEEP ;GEHT JETZT IN SLEEP MODE + MOVWF OSCCON +;------------------------------------------------------------------------- +;---------------------------- MAIN LOOP ------------------------------------------------- +;------------------------------------------------------------------------- +MAIN + MOVLW EXT_CODE ;GO EXTERNE SUBROUTINEN AKTIV? + CPFSEQ GO_SUB ;SKIP WENN JA + BRA WARTEN ;SONST WARTEN + CALL MAIN2,1 ;REGISTER SICHERN UND STARTEN +WARTEN + BTFSC TRISD,RD0 ;SKIP IF POWER ON + SLEEP ;SLEPP BIS ZUM NÄCHSTEN INTERRUPT + BRA MAIN +MAIN2 + CALL EXTERN_SUBROUTINES ;EXTERNE SUBROUTINEN AUSFÜHREN AN STELLE 0 MUSS 0xFA STEHEN SONST UNGÜLTIG + RETURN 1 ;RETURN MIT REGISTER ZURÜCK +;**********************************************************************************************""""""""""""" +;--------------------------- subroutines ------------------------------------------------- +;**********************************************************************************************""""""""""""" +;POWER ON/OFF +POWER_EIN +;CLOCK + MOVLW CLK_ACTIV + MOVWF OSCCON + + BCF TRISA,RA7 ;CLOCK EINSCHALTEN + BCF TRISD,RD7 ;#RSTI AKTIVIEREN = LOW + BCF TRISB,RB4 ;PIC_INT AKTIVIEREN + BCF TRISD,RD0 ;POWER ON + BRA LS_ON_POWER ;LADESTROM EINSTELLEN +POWER_AUS +;CLOCK + MOVLW CLK_SLEEP + MOVWF OSCCON + + BSF TRISD,RD0 ;POWER OFF + BSF TRISD,RD7 ;#RSTI DEAKTIVIEREN + BSF TRISB,RB4 ;PIC INT DEAKTIVIEREN + BSF TRISA,RA7 ;CLOCK DEAKTIVIEREN + CLRF POWER_ON_TIME ;RÜCKSETZEN + BRA LS_OFF_POWER ;LADESTROM EINSTELLEN +;LADESTROM EINSTELLEN ---------------------------- +LADESTROM + BTFSC TRISD,RD0 ; ONPOWER? + BRA LS_OFF_POWER ; NEIN-> +LS_ON_POWER ;GROSSER LADESTROM 5A + BCF TRISA,RA4 ;10K ON + RETURN +LS_OFF_POWER ;KLEINER LADESTROM_MIN 1.85A + BSF TRISA,RA4 ;10K OFF + RETURN +;--------------------------------------------------- +;SERIELL AUS/EIN +SERIAL_OFF + BCF TXSTA,TXEN ;TX AUS + BCF PIE1,RCIE ;DISABLE RX interrupt + BCF PIR1,RCIF ;CLEAR RX interrupt + BCF PIE1,TXIE ;DISABLE TX interrupt + BCF PIR1,TXIF ;CLEAR TX interrupt + RETURN +SERIAL_ON + BTFSC TXSTA,TXEN ;SCHON EIN? + RETURN ;JA-> + BSF TXSTA,TXEN ;TX EIN + MOVLW SYNC1 + MOVWF RX_STATUS ;AUF SYNC WARTEN + CLRF TX_STATUS + MOVFF RCREG,RX_B ;RCREG LEEREN + MOVFF RCREG,RX_B ;RCREG LEEREN + BCF PIR1,TXIF ;CLEAR TX interrupt + BCF PIR1,RCIF ;INTERRUPT RX FLAG LÖSCHEN + BSF PIE1,RCIE ;ENABLE RX interrupt + NOP + RETURN +;--------------------------------------------------------------------- +; TASTENDRUCK +TASTE + BTFSS PORTD,RD1 ;TASTE GEDRÜCKT? + BRA TG_JA ;->JA +;TASTE NICHT GEDRÜCKT ODER LOSGELASSEN + CLRF TASTE_ON_TIME ;RÜCKSETZEN + + MOVLW TIME_MAX ;MAX + CPFSGT TASTE_OFF_TIME ;LÄNGER? + INCF TASTE_OFF_TIME ;NEIN ERHÖHEN + + MOVLW RESET_OFF_TIME ;2SEC + CPFSGT POWER_ON_TIME ;LÄNGER? + RETURN ;NEIN-> +;RESET AUFHEBEN + BSF TRISD,RD7 ;JA -> #RSTI DEAKTIVIEREN =HIGH + CALL SERIAL_ON ;SERIELL EINSCHALTEN + RETURN +;TASTE GEDRÜCKT +TG_JA + MOVLW OFF_TIME+1 + CPFSLT TASTE_ON_TIME ;KÜRZER ALS ONTIME+1 + RETURN ;NEIN->FERTIG + BTFSC TRISD,RD0 ;ONPOWER? + BRA TG_OFF_POWER ;NEIN-> +TG_ON_POWER + MOVLW SEND_RTC_TIME ;ZEIT FÜR RTC REQ FROM MCF HOLEN? + CPFSEQ TASTE_ON_TIME ;TEST + BRA TG_ON_POWER2 ;NEIN-> +SEND_RTC_REG + MOVLW REQ_RTCD_FROM_MCF + MOVWF TXREG ;SENDEN + BRA TG_END; +TG_ON_POWER2 + MOVLW RESET_ON_TIME ; + CPFSLT TASTE_ON_TIME ;KÜRZER? + BRA RESETEN +TG_ON_POWER3 + MOVLW OFF_TIME + CPFSLT TASTE_ON_TIME ;KÜRZER ON/OFF TIME? + CALL POWER_AUS ;NEIN->POWER OFF + BRA TG_END +TG_OFF_POWER + MOVLW ON_TIME + CPFSLT TASTE_ON_TIME ;KÜRZER ALS ON/OFF TIME? + CALL POWER_EIN ;NEIN->POWER ON +TG_END + CLRF TASTE_OFF_TIME ;RÜCKSETZEN + INCF TASTE_ON_TIME ;ERHÖHEN + RETURN +RESETEN + BCF TRISD,RD7 ;NEIN-> #RSTI AKTIVIEREN =LOW -->>>RESET + CALL SERIAL_OFF ;SERIELL DEAKTIVIEREN + BRA TG_ON_POWER3 +;**********************************************************************************************""""""""""""" +;----------------------------------------- INTERRUPTS +;**********************************************************************************************""""""""""""" +; SERIELL INTERRUPTS +;**********************************************************************************************""""""""""""" +;TX +TX_ISR ;TRANSMIT + MOVLW RTCD_FROM_PIC ;RTC DATEN SENDEN? + CPFSEQ TX_STATUS ;SKIP JA + BRA TX_ISR1 ;NEIN-> + MOVFF POSTINC0,TXREG ;BYT SENDEN + MOVLW 0x3F ;SCHON LETZTES BYTS? + CPFSGT FSR0L ;SKIP WENN FERTIG + RETFIE ;NEIN WEITERE SENDEN +TX_ISR_FERTIG + CLRF TX_STATUS + BCF PIE1,TXIE ;SONST DISABLE interrupt + BCF PIR1,TXIF ;INTERRUPT FLAG LÖSCHEN + RETFIE +TX_ISR1 + MOVLW READ_BLOCK ;READ BLOCK? + CPFSEQ TX_STATUS ;SKIP JA + BRA TX_ISR2 ;NEIN-> + MOVFF POSTINC0,TXREG ;BYT SENDEN + MOVLW 0xC3 ;SCHON LETZTES BYTS? + CPFSGT FSR0L ;SKIP WENN FERTIG + RETFIE ;NEIN WEITERE SENDEN +TX_ISR2 + BRA TX_ISR_FERTIG +;**********************************************************************************************""""""""""""" +;RX +RX_ISR ; BYT RECEIVED + MOVFF RCREG,RX_B ; BYT HOLEN +; MOVFF RX_B,TXREG ; ECHO + MOVLW SYNC4 ;IM SYNC STATUS? + CPFSLT RX_STATUS ;SKIP WENN NEIN + BRA RX_SYNC_START ;JA -> ZUERST SYNC EMPFANGEN +;--------------- + MOVLW RTCD_FROM_MCF ; DATEN VOM MCF CODE 0x82? + CPFSEQ RX_STATUS ; WENN JA-> SKIP + BRA RX_ISR1 ; NEIN-> +;64 BYT EMPFANGEN ------------------------------------- + MOVFF RX_B,POSTINC1 ;HOLEN -> (CNT+) + MOVLW 0x3F ;64 BYT ÜBERTRAGEN? + CPFSLT FSR1L ;NEIN ->SKIP + CLRF RX_STATUS ;JA FERTIG + RETFIE +;------------------------------------------------------------------------------------- +RX_ISR1 + CPFSEQ RX_B ;BLOCK HEADER 0X82? + BRA RX_ISR2 ;NEIN-> + MOVWF RX_STATUS ;STATUS SETZEN = EMPFANGENES BYT + LFSR 1,.0 ;BYT COUNTER AUF O + RETFIE +RX_ISR2 + MOVLW REQ_RTCD_FROM_PIC ;DATEN SENDEN? + CPFSEQ RX_B ;SKIP WENN JA + BRA RX_ISR3 ;SONST NEXT +;BLOCK HEADER UND 64 BYT SENDEN ----------------------------------------- + LFSR 0,.0 + BCF PIR1,TXIF ;INTERRUPT FLAG LÖSCHEN + BSF PIE1,TXIE ;Enable interrupt + MOVLW RTCD_FROM_PIC + MOVWF TX_STATUS ;STATUS SETZEN + MOVWF TXREG ;BLOCK HEADER = 0X81 + CLRF RX_STATUS ;STATUS RÜCKSETZEN + RETFIE ;UND WEG +;------------------------------------------------------------------------------------- +RX_ISR3 + MOVLW EXT_SUB_GO ;EXT SUB FREIGEBEN? + CPFSEQ RX_B + BRA RX_ISR4 ;NEIN-> +;EXT SUBS FREIGEBEN -------------------------------------------------------------- + MOVLW (EXTERN_INT_ADR & 0xFF0000)>>16 + MOVWF TBLPTRU + MOVLW (EXTERN_INT_ADR & 0x00FF00)>>8 + MOVWF TBLPTRH + MOVLW (EXTERN_INT_ADR & 0x0000FF) + MOVWF TBLPTRL ;ADRESSE SETZEN + TBLRD* ;WERT HOLEN (MUSS 0xFB SEIN SONST UNGÜLTIG) + MOVFF TABLAT,GO_INT ;EXTERNE SUBROUTINES AKTIVIEREN WENN OK + MOVLW (EXTERN_SUB_ADR & 0xFF0000)>>16 + MOVWF TBLPTRU + MOVLW (EXTERN_SUB_ADR & 0x00FF00)>>8 + MOVWF TBLPTRH + MOVLW (EXTERN_SUB_ADR & 0x0000FF) + MOVWF TBLPTRL ;ADRESSE SETZEN + TBLRD* ;WERT HOLEN (MUSS 0xFB SEIN SONST UNGÜLTIG) + MOVFF TABLAT,GO_SUB ;EXTERNE SUBROUTINES AKTIVIEREN WENN OK + CLRF RX_STATUS ;STATUS RÜCKSETZEN + RETFIE ;UND WEG +;------------------------------------------------------------------------------------- +RX_ISR4 + MOVLW EXT_SUB_STOP ;EXT SUB STOPPEN? + CPFSEQ RX_B + BRA RX_ISR5 ;NEIN-> +;EXT SUBS STOPPEN -------------------------------------------------------------- + CLRF GO_INT ;STOPPEN + CLRF GO_SUB ;STOPPEN + CLRF RX_STATUS ;STATUS RÜCKSETZEN + RETFIE ;UND WEG +;------------------------------------------------------------------------------------- +RX_ISR5 + MOVLW REQ_BLOCK ;REQ BLOCK? + CPFSEQ RX_B + BRA RX_ISR6 ;NEIN-> +;REQ BLOCK ---------------------------------------------------------------- + MOVWF RX_STATUS ;STATUS SETZEN = EMPFANGENES BYT + LFSR 1,TX_BUFFER ;BYT COUNTER AUF TX_BUFFER -> GLEICH EINTRAGEN + RETFIE +RX_ISR6 + CPFSEQ RX_STATUS ;REQ BLOCK ADRESSE EMPFANGFEN? + BRA RX_ISR7 ;NEIN-> +;3 BYT EMPFANGEN ------------------------------------- + MOVFF RX_B,POSTINC1 ;HOLEN -> (CNT+) + MOVLW 0x82 ;3 BYT ÜBERTRAGEN? (BUFFER BEGINNT BEI 0x180 + CPFSLT FSR1L ;NEIN ->SKIP + BRA RX_RB3BOK + RETFIE +RX_RB3BOK + LFSR 1,TX_BUFFER ;BYT RX COUNTER AUF TX_BUFFER + MOVFF POSTINC1,TBLPTRU ;ADRESSE EINTRAGEN + MOVFF POSTINC1,TBLPTRH + MOVFF POSTINC1,TBLPTRL + MOVLW 0xC2 ;67 BYT ÜBERTRAGEN? (BUFFER BEGINNT BEI 0x180 +RX_RB3B2 + TBLRD *+ ;LESEN UND NEXT + MOVFF TABLAT,POSTINC1 ;UND EINTRAGEN + CPFSEQ FSR1L ;WENN FERTIG ->SKIP + BRA RX_RB3B2 ;SONST LOOP +;BLOCK HEADER 3 BYTS ADRESSE UND 64 BYT SENDEN STARTEN ----------------------------------------- + LFSR 0,TX_BUFFER ;TX COUNTER AUF TX_BUFFER + BCF PIR1,TXIF ;INTERRUPT FLAG LÖSCHEN + BSF PIE1,TXIE ;Enable interrupt + MOVLW READ_BLOCK ;CODE HEADER 0xA1 + MOVWF TX_STATUS ;STATUS SETZEN + MOVWF TXREG ;BLOCK HEADER = 0XA1 + CLRF RX_STATUS ;STATUS RÜCKSETZEN + RETFIE ;UND WEG +;------------------------------------------------------------------------------------- +RX_ISR7 + MOVLW WRITE_BLOCK ;WRITE BLOCK 0xA2 BYT EMPFANGEN? + CPFSEQ RX_STATUS ;WENN JA-> SKIP + BRA RX_ISR8 ;NEIN-> +;WRITE BLOCK ---------------------------------------------------------------------------- +;67 BYT EMPFANGEN ------------------------------------- + MOVFF RX_B,POSTINC1 ;HOLEN -> (CNT+) + MOVLW 0x42 ;67 BYT ÜBERTRAGEN? + CPFSLT FSR1L ;WENN FERTIG ->SKIP + RETFIE +; ADRESSE UND DATEN SIND DA -> PROGRAMMING FLASH + LFSR 1,RX_BUFFER ;BYT COUNTER AUF RX BUFFER + MOVFF POSTINC1,TBLPTRU ;TABLE POINTER SETZEN + MOVLW (EXTERN_INT_ADR & 0xFF0000)>>16 + CPFSLT TBLPTRU ;TEST OB WENIGER ALS ERLAUBT + BRA NO_PROG ;JA-> + MOVFF POSTINC1,TBLPTRH ;TABLE POINTER SETZEN + MOVLW (EXTERN_INT_ADR & 0x00FF00)>>8 + CPFSLT TBLPTRU ;TEST OB WENIGER ALS ERLAUBT + BRA NO_PROG ;JA-> + MOVFF POSTINC1,TBLPTRL ;TABLE POINTER SETZEN +;EREASE BLOCK + BSF EECON1,EEPGD ; point to Flash program memory + BCF EECON1,CFGS ; access Flash program memory + BSF EECON1,WREN ; enable write to memory + BSF EECON1,FREE ; enable Row Erase operation + MOVLW 55h + MOVWF EECON2 ; write 55h + MOVLW 0AAh ; write 0AAh + MOVWF EECON2 + BSF EECON1,WR ; start erase (CPU stall) + MOVLW 0x42 ;67 BYT +WRITE_WORD_TO_HREGS + MOVFF POSTINC1,TABLAT ; get byte of buffer data + TBLWT+* ; write data, perform a short write to internal TBLWT holding register. + CPFSLT FSR1L ;SCHON BEI 67 BYTES? + BRA WRITE_WORD_TO_HREGS ;NEIN->LOOP +PROGRAM_MEMORY + BSF EECON1,EEPGD ; point to Flash program memory + BCF EECON1,CFGS ; access Flash program memory + BSF EECON1,WREN ; enable write to memory + MOVLW 55h + MOVWF EECON2 ; write 55h + MOVLW 0AAh + MOVWF EECON2 ; write 0AAh + BSF EECON1,WR ; start program (CPU stall) + BCF EECON1,WREN ; disable write to memory +NO_PROG + CLRF RX_STATUS ;AUF NORMLA SCHALTEN + RETFIE ;UND FERTIG +;WRITE BLOCK SETZEN? +RX_ISR8 + CPFSEQ RX_B ;BLOCK HEADER COMMANDOE 0XA2? + BRA RX_ISR9 ;NEIN-> + MOVWF RX_STATUS ;STATUS SETZEN = EMPFANGENES BYT + LFSR 1,RX_BUFFER ;BYT COUNTER AUF RX BUFFER + RETFIE +;------------------------------------------------------------------------------------- +RX_ISR9 + CLRF RX_STATUS + RETFIE +;------------------------------------------------------------------------------------- +;SYNC ABWARTEN UND WENN DA "OK!" SENDEN ---------------------------------------------------- +;------------------------------------------------------------------------------------- +RX_SYNC_START + MOVLW SYNC1 + CPFSEQ RX_STATUS + BRA RX_SYNC2 + MOVLW SYNC1_DATA + CPFSEQ RX_B + BRA NON_SYNC + MOVLW SYNC2 + MOVWF RX_STATUS + RETFIE +NON_SYNC + MOVLW SYNC1 + MOVWF RX_STATUS + RETFIE +RX_SYNC2 ;TEST AUF SYNC UND DATA 2 + MOVLW SYNC2 + CPFSEQ RX_STATUS + BRA RX_SYNC3 ;NICHT SYNC 2 + MOVLW SYNC2_DATA + CPFSEQ RX_B + BRA NON_SYNC + MOVLW SYNC3 + MOVWF RX_STATUS + RETFIE +RX_SYNC3 ;TEST AUF SYNC UND DATA 3 + MOVLW SYNC3 + CPFSEQ RX_STATUS + BRA RX_SYNC4 ;NICHT SYNC 3 + MOVLW SYNC3_DATA + CPFSEQ RX_B + BRA NON_SYNC + MOVLW SYNC4 + MOVWF RX_STATUS + RETFIE +RX_SYNC4 ;TEST AUF SYNC UND DATA 4 + MOVLW SYNC4 + CPFSEQ RX_STATUS + BRA NON_SYNC ;WIEDER VON VORN + MOVLW SYNC4_DATA + CPFSEQ RX_B ;SKIP OK + BRA NON_SYNC ;NICHT SYNC4 DATA +RX_WAIT1 + BTFSS TXSTA,TRMT + BRA RX_WAIT1 + MOVLW 'O' ;SENDE OK! + MOVWF TXREG; +RX_WAIT2 + BTFSS TXSTA,TRMT + BRA RX_WAIT2 + MOVLW 'K' ;SENDE OK! + MOVWF TXREG; +RX_WAIT3 + BTFSS TXSTA,TRMT + BRA RX_WAIT3 + MOVLW '!' + MOVWF TXREG; + CLRF RX_STATUS ;OK START NORMAL + RETFIE +;**********************************************************************************************""""""""""""" +;SPANNUNGSÜBERWACHUNGS INTERRUPT +HLVD_ISR + BTFSS U_ERR,1 ;WARTEN AUF GELADEN? + BRA HLVD_LE ;NEIN UNTERSPANNUNG DETEKT-> + BCF U_ERR,0 ;SPANNUNGSFEHLER AUS + BCF U_ERR,1 ;WARTEN AUF GELADEN=AUS + MOVLW U_ERR_PW_AUS+2 ;POWER AUS ÜBERSPRINGEN + MOVWF U_ERR_TIME ;ZEIT SETZEN + MOVLW B'00010111' ;INT WENN UNTER 3.12V + MOVWF HLVDCON +WAIT_LVDOK: + BTFSS HLVDCON,IVRST ;ABWARTEN BIS AENDERUNG AKTIV + BRA WAIT_LVDOK + BCF PIR2,HLVDIF ;INTERRUPT FLAG LÖSCHEN + RETFIE +HLVD_LE ;UNTERSPANNUNG + BSF U_ERR,0 ;ERROR SETZEN + BSF U_ERR,1 ;WARTEN AUF GELADEN SETZEN + CLRF U_ERR_TIME ;RÜCKSETZEN +;MESSAGE AN PROCESSOR + MOVLW U_MIN_TO_MCF + MOVWF TXREG ;SENDEN + + MOVLW B'10011010' ;INT WENN ÜBER 3.7V + MOVWF HLVDCON + BRA WAIT_LVDOK +;**********************************************************************************************""""""""""""" +;A/D INTERRUPT +AD_ISR + BCF PIR1,ADIF ;CLEAR INTERRUPT PENDIG + RETFIE ;RETURN +;************************************************************************************************************* +; uhr interrupt ALLE 1/8 SEC +RTC_ISR +;UHR WIEDER RÜCKSETZEN UND AKTIVIEREN + MOVLW TIMER_HB ;WIEDER AUF STARTWERT + MOVWF TMR1H ;SETZEN + BCF PIR1,TMR1IF ;INTERRUPT FLAG LÖSCHEN + BSF PORTB,RB4 ;PIC INT HIGH -------- + BSF TRISE,RE0 ;LED=OFF + BCF PORTB,RB4 ;PIC INT = LOW + BTFSC TRISD,RD0 ;POWER OFF? + BRA POWER_OFF_I ;JA-> +; POWER IS ON: +; BLINKEN 4X/SEC WENN RESET + BTFSC TRISD,RD7 ;RESET AKTIV? + BRA PINGS ;NEIN-> + BTFSC TICKS,0 ;UNGERADE TICKS? + BCF TRISE,RE0 ;NEIN->LED=ON + BRA PINGS +POWER_OFF_I + MOVLW .3 + ANDWF SECS,0 ;4 SEKUNDEN AUSMASKIEREN + BNZ PINGS ;NICHT MODULO4 -> + MOVLW .7 + CPFSEQ TICKS ;7. TICK? + BRA POWER_OFF_I2 ;NEIN-> + BCF TRISE,RE0 ;JA->LED=ON +POWER_OFF_I2 + MOVLW .30 ; WENIGER ALS 30 SEC SEIT LETZTEM SPANNUNGSFEHLER? + CPFSLT U_ERR_TIME + BRA PINGS ;NEIN-> + MOVLW .5 + CPFSEQ TICKS ;5. TICK? + BRA PINGS ;NEIN-> + BCF TRISE,RE0 ;JA->LED=ON +PINGS + CALL TASTE ;UP TASTE +; TASTE LOSGELASSEN? + MOVLW RESET_OFF_TIME + CPFSGT TASTE_OFF_TIME ;TASTE LÄNGER ALS 2 SEC LOSGELASSEN? + BRA PINGW ;NEIN-> + BSF TRISD,RD7 ;JA-> #RSTI INAKTIV =HIGH + BTFSS TRISD,RD0 ;POWER ON? + CALL SERIAL_ON ;ja->SERIELL EINSCHALTEN +;--TICKS=125MS +PINGW + INCF TICKS ;inc ticks + BTFSS TRISD,RD0 ;POWER ON? + BRA PINGS2 ;JA-> + MOVLW 20 + CPFSLT U_POWER_IN ;LADEGERÄT ANGESCHLOSSEN? + BRA PINGS2 ;->JA LED HELLER + MOVLW TIME_MAX ;>=MAXIMALZEIT? + CPFSLT U_ERR_TIME ;SEIT SPANNUNGSFEHLER + BSF TRISE,RE0 ;JA -> LED OFF +PINGS2 + MOVLW .7 ; 7? + CPFSGT TICKS + RETFIE ; NEIN ->RETURN +SEKUNDEN +;led blinken POWER ON----------------------------------------- + BTFSS TRISD,RD0 ;POWER ON? + BCF TRISE,RE0 ;JA -> LED_ON +;TIMER U_ERR ERHÖHEN + MOVLW TIME_MAX ;>=MAXIMALZEIT? + CPFSGT U_ERR_TIME ;SEIT SPANNUNGSFEHLER + INCF U_ERR_TIME ;NEIN ERHÖHEN +;SPANNUNGSFEHLER BEARBEITEN ---------------------------------------- + MOVLW U_ERR_PW_AUS ;POWER AUS ZEIT? + CPFSEQ U_ERR_TIME ; + BRA SEK_NPA ;NEIN + CALL POWER_AUS ;JA AUSSCHALTEN +;-------------------------------------------------------- +SEK_NPA +;SPANNUNG POWER IN MESSEN + MOVLW B'00000001' ;KANAL 0, AD ON + MOVWF ADCON0 ; + BSF ADCON0,1 ;GO +SEK_2 + BTFSC ADCON0,1 ;FERTIG? + BRA SEK_2 ;NEIN + MOVFF ADRESH,U_POWER_IN ;OK WERT EINTRAGEN + +;SPANNUNG 2V5 MESSEN -> U_ERR TIMER NICHT ERHÖHEN WENN ÜBER 3.2V RESP. WIEDER -1 + BTFSC TRISD,RD0 ;POWER ON? + BRA SEK_4 ;NEIN NICHT MESSEN + + MOVLW B'00001101' ;KANAL 3, AD ON + MOVWF ADCON0 ; + BSF ADCON0,1 ;GO +SEK_3 + BTFSC ADCON0,1 ;FERTIG? + BRA SEK_3 ;NEIN + MOVLW .200 ;UNTER 3.2V -> WENN WERT ÜBER 78% + CPFSLT ADRESH ;JA -> + BRA SEK_4 ;SONST WEITER +;TIMER U_ERR ERHÖHEN + BTFSS U_ERR,0 ;SPANNUNGSERROR? + BRA SEK_4 ;NEIN + MOVLW TIME_MAX ;>=MAXIMALZEIT? + CPFSGT U_ERR_TIME ;SEIT SPANNUNGSFEHLER + DECF U_ERR_TIME ;NEIN -> -1 +;------------------------------------------------------------- +SEK_4 + CLRF TICKS + INCF SECS ; Increment seconds + MOVLW .59 ; 60 seconds elapsed? + CPFSGT SECS + RETFIE ;RETURN +MINUTEN + CLRF SECS ; Clear seconds + INCF MINS ; Increment minutes + MOVLW .59 ; 60 minutes elapsed? + CPFSGT MINS + RETFIE ;RETURN +STUNDEN + CLRF MINS ; clear minutes + INCF HOURS ; Increment hours + MOVLW .23 ; 24 hours elapsed? + CPFSGT HOURS + RETFIE ;RETURN +TAGE_UND_TAG_DER_WOCHE + CLRF HOURS ; Reset hours + MOVLW .7 + CPFSLT DAY_OF_WEEK + CLRF DAY_OF_WEEK + INCF DAY_OF_WEEK + INCF DAYS + MOVLW .28 + CPFSGT DAYS + RETFIE ;RETURN +MEHR_ALS_28_TAGE + MOVLW .2 + CPFSEQ MONTHS ;FEB? + BRA NOT_FEB ;NEIN-> +FEB + MOVLW .3 + ANDWF YEARS,0 ;SCHALTJAHR + BNZ NEXT_MONTH ;NEIN-> +SCHALTJAHR + MOVLW .29 + CPFSGT DAYS + RETFIE ;RETURN +NEXT_MONTH + MOVLW .1 + MOVWF DAYS + INCF MONTHS + MOVLW 12 + CPFSGT MONTHS + RETFIE ;RETURN +YEAR + MOVLW .1 + MOVWF MONTHS + INCF YEARS + RETFIE ;RETURN +NOT_FEB + MOVLW .30 + CPFSGT DAYS + RETFIE +MEHR_ALS_30_TAGE + MOVLW .4 ;APRIL? + CPFSEQ MONTHS ;SKIP + BRA NOT_APRIL + BRA NEXT_MONTH ;APRIL-> +NOT_APRIL + MOVLW .6 ;JUNI? + CPFSEQ MONTHS + BRA NOT_JUNI + BRA NEXT_MONTH ;JUNI-> +NOT_JUNI + MOVLW .9 ;SEPTEMBER? + CPFSEQ MONTHS + BRA NOT_SEP + BRA NEXT_MONTH ;SEPTEMBER-> +NOT_SEP + MOVLW .11 ;NOVEMBER? + CPFSEQ MONTHS ;SKIP + RETFIE ;SIND MONATE MIT 31 TAGEN-> + BRA NEXT_MONTH ;SONST NOVEMBER-> +;**********************************************************************************************""""""""""""" +; ENDE MAIN +;**********************************************************************************************""""""""""""" +;**********************************************************************************************""""""""""""" +; EXTERN_SUBOUTINES FOGEN AB 0x1000 DIE SPÄTER EINPROGRAMMIERT WERDEN +;**********************************************************************************************""""""""""""" + end diff --git a/firebee1.cof b/firebee1.cof new file mode 100644 index 0000000..d3b53d4 Binary files /dev/null and b/firebee1.cof differ diff --git a/firebee1.err b/firebee1.err new file mode 100644 index 0000000..e69de29 diff --git a/firebee1.hex b/firebee1.hex new file mode 100644 index 0000000..bef9bef --- /dev/null +++ b/firebee1.hex @@ -0,0 +1,82 @@ +:020000040000FA +:020000007FD0AF +:020002000000FC +:040008000CEF00F009 +:08001800E06A9DCF4EF09E50FE +:100020004E174EB115D24EBD11D24EB918D14EBB9E +:100030002BD1A0CF4FF0A1504F174FB5F3D11000E7 +:100040009DCF4EF09E504E174E67E6D7A0CF4FF093 +:10005000A1504F174F67E0D7FB0E4D63100001EF23 +:0200600010F09E +:10010000E06AF26AD06A9D6AA06A9E6AA16A9F6AE2 +:10011000A26A9B6A720ED36E806AFF0E926E816A2B +:10012000936E826A946E836A956E010E846A966EEF +:100130009B0ED26E030E466F140E476FA084E9EC3F +:1001400000F0F00ECF6ECE6A0F0ECD6E416B006BDD +:10015000026B0C0E046F010E066F010E076F080E86 +:10016000086F2A0E096F426B436B446B9D80456B91 +:10017000C26A090EC16E000EC06E486BB06A100EE6 +:10018000AF6E040EAC6E900EAB6E080EB86E4C6B7C +:10019000F06AF00EF16EC00EF26E120ED36EFB0E10 +:1001A0004C6302D0D7ED00F095B00300F8D709EC0E +:1001B00010F01300720ED36E929E959E93989590B8 +:1001C0000AD0120ED36E9580958E9388928E446BD2 +:1001D00004D095B002D09298120092881200AC9A86 +:1001E0009D9A9E9A9D989E981200ACBA1200AC8A75 +:1001F000FF0E4A6F4B6BAECF49F0AECF49F09E98E1 +:100200009E9A9D8A0000120083A20BD0426BA00E22 +:100210004365432B040E44651200958EF5EC00F007 +:100220001200150E4261120095B00ED0020E42630C +:1002300003D0020EAD6E0CD0020E42610CD0140E33 +:100240004261E1EC00F004D0020E4261DAEC00F011 +:10025000436B422B1200959EEFEC00F0F0D7810E1D +:100260004B6309D0EECFADFF3F0EE96410004B6B3E +:100270009D989E981000A10E4B6305D0EECFADFF68 +:10028000C30EE9641000F3D7AECF49F0FC0E4A610B +:1002900097D0820E4A6306D049C0E6FF3F0EE16068 +:1002A0004A6B1000496304D04A6F10EE00F0100052 +:1002B000010E496309D000EE00F09E989D88810EE2 +:1002C0004B6FAD6E4A6B1000040E496314D0000EE4 +:1002D000F86E200EF76E000EF66E0800F5CF4DF0AA +:1002E000000EF86E200EF76E100EF66E0800F5CFB9 +:1002F0004CF04A6B1000050E496304D04D6B4C6BFB +:100300004A6B1000A00E496304D04A6F11EE80F0D2 +:1003100010004A631DD049C0E6FF820EE16001D0A3 +:10032000100011EE80F0E6CFF8FFE6CFF7FFE6CF42 +:10033000F6FFC20E0900F5CFE6FFE162FBD701EE42 +:1003400080F09E989D88A10E4B6FAD6E4A6B100099 +:10035000A20E4A632DD049C0E6FF420EE1601000B4 +:1003600011EE00F0E6CFF8FF000EF8601FD0E6CFE8 +:10037000F7FF200EF8601AD0E6CFF6FFA68EA69CF7 +:10038000A684A688550EA76EAA0EA76EA682420E58 +:10039000E6CFF5FF0F00E160FBD7A68EA69CA684F2 +:1003A000550EA76EAA0EA76EA682A6944A6B1000E1 +:1003B000496304D04A6F11EE00F010004A6B100040 +:1003C000FF0E4A6309D0410E496303D0FE0E4A6F07 +:1003D0001000FF0E4A6F1000FE0E4A6306D0430E57 +:1003E0004963F7D7FD0E4A6F1000FD0E4A6306D031 +:1003F000500E4963EED7FC0E4A6F1000FC0E4A63A4 +:10040000E8D7460E4963E5D7ACA2FED74F0EAD6ED6 +:10041000ACA2FED74B0EAD6EACA2FED7210EAD6ED8 +:100420004A6B100046A30AD046914693070E476FC9 +:10043000170ED26ED2AAFED7A19410004681468331 +:10044000476B030EAD6E9A0ED26EF4D79E9C1000D1 +:10045000F00ECF6E9E9081889680819895B005D0E1 +:1004600095BE11D041B196900ED0030E00150BE150 +:10047000070E416301D096901E0E476104D0050E11 +:10048000416301D0969004EC01F0040E436504D062 +:10049000958E95A0F5EC00F0412B95A006D0200E8E +:1004A000486103D0A00E47619680070E4165100099 +:1004B00095A09690A00E4765472B050E476302D086 +:1004C000E1EC00F0010EC26EC282C2B2FED7C4CF10 +:1004D00048F095B00DD00D0EC26EC282C2B2FED7EA +:1004E000C80EC46005D046A103D0A00E47654707DB +:1004F000416B002B3B0E00651000006B022B3B0E86 +:1005000002651000026B042B170E04651000046BCB +:10051000070E0661066B062B072B1C0E07651000E5 +:10052000020E086310D0030E091503E11D0E0765C6 +:100530001000010E076F082B120E08651000010E47 +:10054000086F092B10001E0E07651000040E0863CB +:1005500001D0EFD7060E086301D0EBD7090E086370 +:0C05600001D0E7D70B0E08631000E3D7B2 +:00000001FF diff --git a/firebee1.lst b/firebee1.lst new file mode 100644 index 0000000..8b08d7e --- /dev/null +++ b/firebee1.lst @@ -0,0 +1,1979 @@ +MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 1 + + +LOC OBJECT CODE LINE SOURCE TEXT + VALUE + + 00001 ;********************************************************** + 00002 ;* firebee1 PIC18F4321 MAIN FILE + 00003 ;********************************************************** + 00004 ;* CREATED BY FREDI ASCHWANDEN + 00005 ;* DATE 22.9.2009 + 00006 ;********************************************************** + 00007 list PE=18f4520 ;EXTENDED INSTRUCTION SET + 00008 include "P18f4520.inc" + 00001 LIST + 00002 + 00003 ;========================================================================== + 00004 ; MPASM PIC18F4520 processor include + 00005 ; + 00006 ; (c) Copyright 1999-2007 Microchip Technology, All rights reserved + 00007 ;========================================================================== + 00008 + 01336 LIST + 00009 ;------------------------ Equates --------------------------; + 00010 ;Register addresses + 00011 ;BANK 0 + 00000000 00012 SECS equ 0x00 + 00000001 00013 SECS_ALARM EQU 0x01 + 00000002 00014 MINS equ 0x02 + 00000003 00015 MINS_ALRAM EQU 0x03 + 00000004 00016 HOURS equ 0x04 + 00000005 00017 HOURS_ALARM EQU 0x05 + 00000006 00018 DAY_OF_WEEK EQU 0x06 + 00000007 00019 DAYS EQU 0x07 + 00000008 00020 MONTHS EQU 0x08 + 00000009 00021 YEARS EQU 0x09 ;offset vom 1968 + 0000000A 00022 REGA EQU 0x0A + 0000000B 00023 REGB EQU 0x0B + 0000000C 00024 REGC EQU 0x0C + 0000000D 00025 REGD EQU 0x0D + 0000000E 00026 RTC_RAM EQU 0x0E ; bis 0x3F + 00000040 00027 free equ 0x40 + 00000041 00028 TICKS equ 0x41 ;125MS + 00000042 00029 TASTE_ON_TIME EQU 0x42 + 00000043 00030 TASTE_OFF_TIME EQU 0x43 + 00000044 00031 POWER_ON_TIME EQU 0x44 + 00000045 00032 AD_KANAL EQU 0x45 + 00000046 00033 U_ERR EQU 0x46 ;SPANNUNGSFEHLER WENN BIT 0=1, BIT1=1 WA + RTEN AUF GELADEN + 00000047 00034 U_ERR_TIME EQU 0x47 ;ZEIT SEIT SPANNUNGSFEHLER + 00000048 00035 U_POWER_IN EQU 0x48 ;SPANNUNG POWER IN 1V CA. 6E + 00000049 00036 RX_B EQU 0x49 ;RECEIVED BYT + 0000004A 00037 RX_STATUS EQU 0x4A ;STATUS: 0x00=WAIT AUF MCF COMMANDO, 0x8 + 2=EMPFANGE 64BYT FROM RTC + 0000004B 00038 TX_STATUS EQU 0x4B ;STATUS: 0x00=WAIT 0x81=SENDE 64BYT FROM + RTC + 0000004C 00039 GO_SUB EQU 0x4C ;WENN GLEICH 0xFB DANN SUBROUTINE AUSFÜH + REN + 0000004D 00040 GO_INT EQU 0x4D ;WENN GLEICH 0xFB DANN SUBROUTINE AUSFÜH + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 2 + + +LOC OBJECT CODE LINE SOURCE TEXT + VALUE + + REN + 0000004E 00041 EAPIR1 EQU 0x4E ;INTERRUPT ACTIV UND ENABLE + 0000004F 00042 EAPIR2 EQU 0x4F ;INTERRUPT ACTIV UND ENABLE + 00043 ;BANK 1 AB 0x100 + 00000100 00044 RX_BUFFER EQU 0x100 ;0x80 BYT BUFFER BIS 0x17F BANK + 00000180 00045 TX_BUFFER EQU 0x180 ;0X80 BYT BUFFER BIS 0x1FF BANK + 00046 + 00047 ;-------------------------------------------------------------- + 00000002 00048 SEND_RTC_TIME EQU .2 ;0.25 SEC (EINHEIT IST EIN TICK = 128MS + 00000002 00049 RESET_ON_TIME EQU .2 ;0.25 SEC (EINHEIT IST EIN TICK = 128MS + 00000004 00050 RESET_OFF_TIME EQU .4 ;0.5 SEC (EINHEIT IST EIN TICK = 128MS + 00000014 00051 OFF_TIME EQU .20 ;2.5 SEC (EINHEIT IST EIN TICK = + 128MS + 00000002 00052 ON_TIME EQU .2 ;0.25 SEC (EINHEIT IST EIN TICK + = 128MS + 000000F0 00053 TIMER_HB EQU .240 ;256- (32768Hz PRO 1/8SEC = 4096TICKS/25 + 6) => 256-16=240 (resp 256-16/4 (wenn osco) = 252) + 000000A0 00054 TIME_MAX EQU .160 ;MAXIMALTIME + 00000005 00055 U_ERR_PW_AUS EQU .5 ;5 SEC + 00056 ;SERIEL + 000000FF 00057 SYNC1 EQU 0FFh + 00000041 00058 SYNC1_DATA EQU 'A'; + 000000FE 00059 SYNC2 EQU 0FEh + 00000043 00060 SYNC2_DATA EQU 'C'; + 000000FD 00061 SYNC3 EQU 0FDh + 00000050 00062 SYNC3_DATA EQU 'P'; + 000000FC 00063 SYNC4 EQU 0FCh + 00000046 00064 SYNC4_DATA EQU 'F'; + 00000001 00065 REQ_RTCD_FROM_PIC EQU 01h ;RTC AND NVRAM DATEN VOM PIC ANFORDERN + 00000081 00066 RTCD_FROM_PIC EQU 81h ;RTC AND NVRAM DATEN HEADER UND STATUS + 00000002 00067 REQ_RTCD_FROM_MCF EQU 02h ;RTC AND NVRAM DATEN VOM MCF ANFORDERN + 00000082 00068 RTCD_FROM_MCF EQU 82h ;RTC AND NVRAM DATEN HEADER UND STATUS + 00000003 00069 U_MIN_TO_MCF EQU 03h ;UNTERSPANNUNGSMITTEILUNG AN PROCESSOR + 00000004 00070 EXT_SUB_GO EQU 04h ;SERIELL CODE UM SUBROUTINEN/INT + ERRUPTS ZU AKTIVIEREN + 00000005 00071 EXT_SUB_STOP EQU 05h ;SERIELL CODE UM SUBROUTINEN/INTERRUPTS + ZU STOPPEN + 00000012 00072 CLK_SLEEP EQU B'00010010' ;125kHz intern, SLEEP MODE + 00000072 00073 CLK_ACTIV EQU B'01110010' ;inTernal CLK=8MHz, SLEEP MODE, + SLEEP MODE + 000000FB 00074 EXT_CODE EQU 0xFB ;CODE FÜR EXTERNE SUBROUTINEN/INTERRUPTS + AUSFÜHREN (FireBee!) + 00002000 00075 EXTERN_INT_ADR EQU 0x2000 ;HIER MUSS 0xFB STEHEN WENN EXTERNE INTERRUPTS A + USFÜHRBAR + 00002002 00076 EXTERN_INTERRUPTS EQU 0x2002 ;STARTPUNKT EXTERNE SUBROUTINES + 00002010 00077 EXTERN_SUB_ADR EQU 0x2010 ;HIER MUSS 0xFB STEHEN WENN EXTERNE SUBROUTINES + AUSFÜHRBAR + 00002012 00078 EXTERN_SUBROUTINES EQU 0x2012 ;STARTPUNKT EXTERNE SUBROUTINES + 000000A0 00079 REQ_BLOCK EQU 0xA0 ;BLOCK DATEN LESEN -> CODE UND 3 BYTS AD + RESSE = TOTAL 4 BYTES + 000000A1 00080 READ_BLOCK EQU 0xA1 ;PROGRAMM BLOCK PIC->MCF -> CODE, 3 BYTS + ADRESSE UND 64 BYTS DATEN = TOTAL 68 BYTES + 000000A2 00081 WRITE_BLOCK EQU 0xA2 ;PROGRAMM BLOCK MCF->PIC -> CODE, 3 BYTS + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 3 + + +LOC OBJECT CODE LINE SOURCE TEXT + VALUE + + ADRESSE UND 64 BYTS DATEN = TOTAL 68 BYTES + 00000022 00082 PRG_OK_PIC EQU 0x22 ;PROGRAMMIERUNG BLOCK FERTIG + 00083 ;**********************************************************************************************""""""""" + """" + 00084 ; Start at the reset vector + 00085 Reset_Vector code 0x000 +000000 D??? 00086 BRA KALT_START + 00087 ;-------------------------------------------------------------- + 00088 HIGH_INT_VEC code 0x0008 +000008 EF0C F000 00089 GOTO 0x18 + 00090 + 00091 LOW_INT_VEC code 0x0018 +000018 00092 INT_HANDLER +000018 6AE0 00093 CLRF BSR ;IMMER ACCESS BANK + 00094 ;SETZEN GRUPPE 1 +00001A CF9D F04E 00095 MOVFF PIE1,EAPIR1 ;INTERRUPTS HOLEN +00001E 509E 00096 MOVF PIR1,0 ;MASKE +000020 174E 00097 ANDWF EAPIR1 ;ACTIVE SETZEN +000022 B14E 00098 BTFSC EAPIR1,TMR1IF ;uhr interrupt? +000024 D??? 00099 BRA RTC_ISR ;ja-> +000026 BD4E 00100 BTFSC EAPIR1,ADIF ;AD INTERRUTP? +000028 D??? 00101 BRA AD_ISR ;JA-> +00002A B94E 00102 BTFSC EAPIR1,TXIF ;seriell TX? +00002C D??? 00103 BRA TX_ISR ;JA-> +00002E BB4E 00104 BTFSC EAPIR1,RCIF ;seriell RX? +000030 D??? 00105 BRA RX_ISR ;JA-> + 00106 + 00107 ;SETZEN GRUPPE 2 +000032 CFA0 F04F 00108 MOVFF PIE2,EAPIR2 ;INTERRUPTS HOLEN +000036 50A1 00109 MOVF PIR2,0 ;MASKE +000038 174F 00110 ANDWF EAPIR2 ;ACTIVE SETZEN + 00111 +00003A B54F 00112 BTFSC EAPIR2,HLVDIF ;UNDER/OVERVOLTAGE DETECT +00003C D??? 00113 BRA HLVD_ISR ;JA-> +00003E 0010 00114 RETFIE + 00115 + 00116 ;TESTEN UND SETZEN GRUPPE 1 +000040 CF9D F04E 00117 MOVFF PIE1,EAPIR1 ;INTERRUPTS HOLEN +000044 509E 00118 MOVF PIR1,0 ;MASKE +000046 174E 00119 ANDWF EAPIR1 ;ACTIVE SETZEN +000048 674E 00120 TSTFSZ EAPIR1 +00004A D??? 00121 BRA INT_HANDLER + 00122 ;TESTEN UND SETZEN GRUPPE 2 +00004C CFA0 F04F 00123 MOVFF PIE2,EAPIR2 ;INTERRUPTS HOLEN +000050 50A1 00124 MOVF PIR2,0 ;MASKE +000052 174F 00125 ANDWF EAPIR2 ;ACTIVE SETZEN +000054 674F 00126 TSTFSZ EAPIR2 +000056 D??? 00127 BRA INT_HANDLER + 00128 +000058 0EFB 00129 MOVLW EXT_CODE ;GO EXTERNE SUBROUTINEN AKTIV? +00005A 634D 00130 CPFSEQ GO_INT ;SKIP WENN JA +00005C 0010 00131 RETFIE +00005E EF01 F010 00132 GOTO EXTERN_INTERRUPTS ;REGISTER SICHERN UND STARTEN + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 4 + + +LOC OBJECT CODE LINE SOURCE TEXT + VALUE + + 00133 ;**********************************************************************************************""""""""" + """" + 00134 ; Start application beyond vector area + 00135 CODE 0x0100 +000100 00136 KALT_START + 00137 ;RESET MODE +000100 6AE0 00138 CLRF BSR ;BANK 0 + 00139 ;ALLE INT AUS UND RÜCKSETZEN +000102 6AF2 00140 CLRF INTCON ;alle INTERRUPT AUS +000104 6AD0 00141 CLRF RCON ;INT PRIORITY AUS +000106 6A9D 00142 CLRF PIE1 ;MASK DISABLE +000108 6AA0 00143 CLRF PIE2 +00010A 6A9E 00144 CLRF PIR1 ;INT ACT AUS +00010C 6AA1 00145 CLRF PIR2 +00010E 6A9F 00146 CLRF IPR1 ;LOW PRIORITY +000110 6AA2 00147 CLRF IPR2 + 00148 ; clock + 00149 ; MOVLW B'01000000' ;32MHZ + 00150 ; MOVWF OSCTUNE +000112 6A9B 00151 CLRF OSCTUNE + 00152 ;CLOCK +000114 0E72 00153 MOVLW CLK_ACTIV +000116 6ED3 00154 MOVWF OSCCON + 00155 ; div init + 00156 ;SET PORT A: **7:#master/0.409*5V0 **6:PIC_AMKB_RX **5:PIC_SWTICH **4:HIGH_CHARGE_CURRENT **3:2V5 *2:3V3 + /2 **1:1V25 **0:POWER_IN/11 +000118 6A80 00157 CLRF PORTA ;#master(7)=0, REST=0 +00011A 0EFF 00158 MOVLW B'11111111' ;DIRECTION: alles auf Input +00011C 6E92 00159 MOVWF TRISA + 00160 ;SET PORT B: **7:PGD **6:PGC **5:PGM **4:PIN_INT,1V5 **3:GAME PORT PIN10 **2:GAME PORT PIN11 **1:GAME PO + RT PIN6 **0: GAME PORT PIN5 +00011E 6A81 00161 CLRF PORTB ;ALLES AUF 0 +000120 6E93 00162 MOVWF TRISB + 00163 ;SET PORT C: **7: PIC_RX **6:PIC_TX **5:AMKB_TX **4:GAME PORT PIN4 **3:GAME PORT PIN12 **2:GAME PORT PIN + 13 **1+0: OCS 32K768Hz +000122 6A82 00164 CLRF PORTC +000124 6E94 00165 MOVWF TRISC + 00166 ;SET PORT D: **7:#RSTI **6:GAME PORT PIN3 **5:PS2 KB CLK **4:PS2 MS CLK **3:PS2 KB DATA **2:MS DATA **1: + TASTER **0:POWER ON/OFF (0=ON) + 00167 ; SET TASTE UND POWER +000126 6A83 00168 CLRF PORTD ;ALLES AUF 0 +000128 6E95 00169 MOVWF TRISD ;ALLES AUF INPUT + 00170 ;SET PORT E: **3:#MCLR **2:#PCI_RESET **1:PCI 3V3 **0:PIC LED (0=ON) +00012A 0E01 00171 MOVLW B'00000001' ;LED OFF +00012C 6A84 00172 CLRF PORTE ;ALLES AUF 0 +00012E 6E96 00173 MOVWF TRISE ;ALLES AUF INPUT + 00174 ;-------------------------- + 00175 ; set OVERvoltage detekt +000130 0E9B 00176 MOVLW B'10011011' ;INT WENN ÜBER 3.9V +000132 6ED2 00177 MOVWF HLVDCON +000134 0E03 00178 MOVLW B'00000011' ;ERRORS ON, WAIT AUF LADEN +000136 6F46 00179 MOVWF U_ERR +000138 0E14 00180 MOVLW .20 ;SEIT 20SEC ERROR + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 5 + + +LOC OBJECT CODE LINE SOURCE TEXT + VALUE + +00013A 6F47 00181 MOVWF U_ERR_TIME ;SETZEN +00013C 84A0 00182 BSF PIE2,HLVDIE ;Enable interrupt + 00183 ;INTIALISIERUNGSPROGAMME +00013E EC?? F??? 00184 CALL LADESTROM ;LADESTROM EINSTELLEN + 00185 ;UHR initialisieren +000142 0EF0 00186 MOVLW TIMER_HB ;Preload TMR1 register +000144 6ECF 00187 MOVWF TMR1H ; +000146 6ACE 00188 CLRF TMR1L ;=0 +000148 0E0F 00189 MOVLW B'00001111' ; 8 BIT, osc1 enable, TIMER MODE, TIMMER ENABLE +00014A 6ECD 00190 MOVWF T1CON ; SET +00014C 6B41 00191 CLRF TICKS ; 1/8 sec register +00014E 6B00 00192 CLRF SECS ; Initialize timekeeping registers +000150 6B02 00193 CLRF MINS ; +000152 0E0C 00194 MOVLW .12 +000154 6F04 00195 MOVWF HOURS +000156 0E01 00196 MOVLW .1 +000158 6F06 00197 MOVWF DAY_OF_WEEK +00015A 0E01 00198 MOVLW .1 +00015C 6F07 00199 MOVWF DAYS +00015E 0E08 00200 MOVLW .8 +000160 6F08 00201 MOVWF MONTHS +000162 0E2A 00202 MOVLW .42 +000164 6F09 00203 MOVWF YEARS ;MONTAG 19.7.2010 12:00:00 (JAHR-1968) +000166 6B42 00204 CLRF TASTE_ON_TIME +000168 6B43 00205 CLRF TASTE_OFF_TIME +00016A 6B44 00206 CLRF POWER_ON_TIME +00016C 809D 00207 BSF PIE1,TMR1IE ;Enable Timer1 interrupt + 00208 ;AD WANDLER INITIALISIEREN +00016E 6B45 00209 CLRF AD_KANAL ;BEI 0 BEGINNEN +000170 6AC2 00210 CLRF ADCON0 ;AD MOUDUL AUS +000172 0E09 00211 MOVLW B'00001001' ;VREF=VDD,ANALOG INPUT AN0-AN5 +000174 6EC1 00212 MOVWF ADCON1 +000176 0E00 00213 MOVLW B'00000000' ;LINKSSBÜNDIG,0 TAD,CLOCK=Fosc/2 +000178 6EC0 00214 MOVWF ADCON2 + 00215 ; BSF PIE1,ADIE ;INTERRUPT ENABLE +00017A 6B48 00216 CLRF U_POWER_IN ;WERT AUF 0 VOLT + 00217 ; seriell initialisieren +00017C 6AB0 00218 CLRF SPBRGH +00017E 0E10 00219 MOVLW .16 +000180 6EAF 00220 MOVWF SPBRG ;BAUDE RATE = 115K +000182 0E04 00221 MOVLW B'00000100' ;TX AUS, ASYNC HIGH SPEED +000184 6EAC 00222 MOVWF TXSTA +000186 0E90 00223 MOVLW B'10010000' ;SERIEL EIN,RX EIN, +000188 6EAB 00224 MOVWF RCSTA +00018A 0E08 00225 MOVLW B'00001000' ;16BIT BRG, RISING EDGE INTERRUPT +00018C 6EB8 00226 MOVWF BAUDCON ;SETZEN + 00227 ;EXTERNER SUBROUTINES +00018E 6B4C 00228 CLRF GO_SUB + 00229 ; interrupts +000190 6AF0 00230 CLRF INTCON3 ;EXTER INTERRUPT AUS, low priority +000192 0EF0 00231 MOVLW B'11110000' ;PORT B PULLUPS AUS, EXT INT ON RISING EDGE, TMR0 AND BP + IP Low priority +000194 6EF1 00232 MOVWF INTCON2 + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 6 + + +LOC OBJECT CODE LINE SOURCE TEXT + VALUE + +000196 0EC0 00233 MOVLW B'11000000' ;global on, PERIPHERAL INT on +000198 6EF2 00234 MOVWF INTCON + 00235 ;CLOCK +00019A 0E12 00236 MOVLW CLK_SLEEP ;GEHT JETZT IN SLEEP MODE +00019C 6ED3 00237 MOVWF OSCCON + 00238 ;------------------------------------------------------------------------- + 00239 ;---------------------------- MAIN LOOP ------------------------------------------------- + 00240 ;------------------------------------------------------------------------- +00019E 00241 MAIN +00019E 0EFB 00242 MOVLW EXT_CODE ;GO EXTERNE SUBROUTINEN AKTIV? +0001A0 634C 00243 CPFSEQ GO_SUB ;SKIP WENN JA +0001A2 D??? 00244 BRA WARTEN ;SONST WARTEN +0001A4 ED00 F000 00245 CALL MAIN2,1 ;REGISTER SICHERN UND STARTEN +0001A8 00246 WARTEN +0001A8 B095 00247 BTFSC TRISD,RD0 ;SKIP IF POWER ON +0001AA 0003 00248 SLEEP ;SLEPP BIS ZUM NÄCHSTEN INTERRUPT +0001AC D??? 00249 BRA MAIN +0001AE 00250 MAIN2 +0001AE EC09 F010 00251 CALL EXTERN_SUBROUTINES ;EXTERNE SUBROUTINEN AUSFÜHREN AN STELLE 0 MUSS 0xFA STEHEN SONS + T UNGÜLTIG +0001B2 0013 00252 RETURN 1 ;RETURN MIT REGISTER ZURÜCK + 00253 ;**********************************************************************************************""""""""" + """" + 00254 ;--------------------------- subroutines ------------------------------------------------- + 00255 ;**********************************************************************************************""""""""" + """" + 00256 ;POWER ON/OFF +0001B4 00257 POWER_EIN + 00258 ;CLOCK +0001B4 0E72 00259 MOVLW CLK_ACTIV +0001B6 6ED3 00260 MOVWF OSCCON + 00261 +0001B8 9E92 00262 BCF TRISA,RA7 ;CLOCK EINSCHALTEN +0001BA 9E95 00263 BCF TRISD,RD7 ;#RSTI AKTIVIEREN = LOW +0001BC 9893 00264 BCF TRISB,RB4 ;PIC_INT AKTIVIEREN +0001BE 9095 00265 BCF TRISD,RD0 ;POWER ON +0001C0 D??? 00266 BRA LS_ON_POWER ;LADESTROM EINSTELLEN +0001C2 00267 POWER_AUS + 00268 ;CLOCK +0001C2 0E12 00269 MOVLW CLK_SLEEP +0001C4 6ED3 00270 MOVWF OSCCON + 00271 +0001C6 8095 00272 BSF TRISD,RD0 ;POWER OFF +0001C8 8E95 00273 BSF TRISD,RD7 ;#RSTI DEAKTIVIEREN +0001CA 8893 00274 BSF TRISB,RB4 ;PIC INT DEAKTIVIEREN +0001CC 8E92 00275 BSF TRISA,RA7 ;CLOCK DEAKTIVIEREN +0001CE 6B44 00276 CLRF POWER_ON_TIME ;RÜCKSETZEN +0001D0 D??? 00277 BRA LS_OFF_POWER ;LADESTROM EINSTELLEN + 00278 ;LADESTROM EINSTELLEN ---------------------------- +0001D2 00279 LADESTROM +0001D2 B095 00280 BTFSC TRISD,RD0 ; ONPOWER? +0001D4 D??? 00281 BRA LS_OFF_POWER ; NEIN-> +0001D6 00282 LS_ON_POWER ;GROSSER LADESTROM 5A + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 7 + + +LOC OBJECT CODE LINE SOURCE TEXT + VALUE + +0001D6 9892 00283 BCF TRISA,RA4 ;10K ON +0001D8 0012 00284 RETURN +0001DA 00285 LS_OFF_POWER ;KLEINER LADESTROM_MIN 1.85A +0001DA 8892 00286 BSF TRISA,RA4 ;10K OFF +0001DC 0012 00287 RETURN + 00288 ;--------------------------------------------------- + 00289 ;SERIELL AUS/EIN +0001DE 00290 SERIAL_OFF +0001DE 9AAC 00291 BCF TXSTA,TXEN ;TX AUS +0001E0 9A9D 00292 BCF PIE1,RCIE ;DISABLE RX interrupt +0001E2 9A9E 00293 BCF PIR1,RCIF ;CLEAR RX interrupt +0001E4 989D 00294 BCF PIE1,TXIE ;DISABLE TX interrupt +0001E6 989E 00295 BCF PIR1,TXIF ;CLEAR TX interrupt +0001E8 0012 00296 RETURN +0001EA 00297 SERIAL_ON +0001EA BAAC 00298 BTFSC TXSTA,TXEN ;SCHON EIN? +0001EC 0012 00299 RETURN ;JA-> +0001EE 8AAC 00300 BSF TXSTA,TXEN ;TX EIN +0001F0 0EFF 00301 MOVLW SYNC1 +0001F2 6F4A 00302 MOVWF RX_STATUS ;AUF SYNC WARTEN +0001F4 6B4B 00303 CLRF TX_STATUS +0001F6 CFAE F049 00304 MOVFF RCREG,RX_B ;RCREG LEEREN +0001FA CFAE F049 00305 MOVFF RCREG,RX_B ;RCREG LEEREN +0001FE 989E 00306 BCF PIR1,TXIF ;CLEAR TX interrupt +000200 9A9E 00307 BCF PIR1,RCIF ;INTERRUPT RX FLAG LÖSCHEN +000202 8A9D 00308 BSF PIE1,RCIE ;ENABLE RX interrupt +000204 0000 00309 NOP +000206 0012 00310 RETURN + 00311 ;--------------------------------------------------------------------- + 00312 ; TASTENDRUCK +000208 00313 TASTE +000208 A283 00314 BTFSS PORTD,RD1 ;TASTE GEDRÜCKT? +00020A D??? 00315 BRA TG_JA ;->JA + 00316 ;TASTE NICHT GEDRÜCKT ODER LOSGELASSEN +00020C 6B42 00317 CLRF TASTE_ON_TIME ;RÜCKSETZEN + 00318 +00020E 0EA0 00319 MOVLW TIME_MAX ;MAX +000210 6543 00320 CPFSGT TASTE_OFF_TIME ;LÄNGER? +000212 2B43 00321 INCF TASTE_OFF_TIME ;NEIN ERHÖHEN + 00322 +000214 0E04 00323 MOVLW RESET_OFF_TIME ;2SEC +000216 6544 00324 CPFSGT POWER_ON_TIME ;LÄNGER? +000218 0012 00325 RETURN ;NEIN-> + 00326 ;RESET AUFHEBEN +00021A 8E95 00327 BSF TRISD,RD7 ;JA -> #RSTI DEAKTIVIEREN =HIGH +00021C EC?? F??? 00328 CALL SERIAL_ON ;SERIELL EINSCHALTEN +000220 0012 00329 RETURN + 00330 ;TASTE GEDRÜCKT +000222 00331 TG_JA +000222 0E15 00332 MOVLW OFF_TIME+1 +000224 6142 00333 CPFSLT TASTE_ON_TIME ;KÜRZER ALS ONTIME+1 +000226 0012 00334 RETURN ;NEIN->FERTIG +000228 B095 00335 BTFSC TRISD,RD0 ;ONPOWER? + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 8 + + +LOC OBJECT CODE LINE SOURCE TEXT + VALUE + +00022A D??? 00336 BRA TG_OFF_POWER ;NEIN-> +00022C 00337 TG_ON_POWER +00022C 0E02 00338 MOVLW SEND_RTC_TIME ;ZEIT FÜR RTC REQ FROM MCF HOLEN? +00022E 6342 00339 CPFSEQ TASTE_ON_TIME ;TEST +000230 D??? 00340 BRA TG_ON_POWER2 ;NEIN-> +000232 00341 SEND_RTC_REG +000232 0E02 00342 MOVLW REQ_RTCD_FROM_MCF +000234 6EAD 00343 MOVWF TXREG ;SENDEN +000236 D??? 00344 BRA TG_END; +000238 00345 TG_ON_POWER2 +000238 0E02 00346 MOVLW RESET_ON_TIME ; +00023A 6142 00347 CPFSLT TASTE_ON_TIME ;KÜRZER? +00023C D??? 00348 BRA RESETEN +00023E 00349 TG_ON_POWER3 +00023E 0E14 00350 MOVLW OFF_TIME +000240 6142 00351 CPFSLT TASTE_ON_TIME ;KÜRZER ON/OFF TIME? +000242 EC?? F??? 00352 CALL POWER_AUS ;NEIN->POWER OFF +000246 D??? 00353 BRA TG_END +000248 00354 TG_OFF_POWER +000248 0E02 00355 MOVLW ON_TIME +00024A 6142 00356 CPFSLT TASTE_ON_TIME ;KÜRZER ALS ON/OFF TIME? +00024C EC?? F??? 00357 CALL POWER_EIN ;NEIN->POWER ON +000250 00358 TG_END +000250 6B43 00359 CLRF TASTE_OFF_TIME ;RÜCKSETZEN +000252 2B42 00360 INCF TASTE_ON_TIME ;ERHÖHEN +000254 0012 00361 RETURN +000256 00362 RESETEN +000256 9E95 00363 BCF TRISD,RD7 ;NEIN-> #RSTI AKTIVIEREN =LOW -->>>RESET +000258 EC?? F??? 00364 CALL SERIAL_OFF ;SERIELL DEAKTIVIEREN +00025C D??? 00365 BRA TG_ON_POWER3 + 00366 ;**********************************************************************************************""""""""" + """" + 00367 ;----------------------------------------- INTERRUPTS + 00368 ;**********************************************************************************************""""""""" + """" + 00369 ; SERIELL INTERRUPTS + 00370 ;**********************************************************************************************""""""""" + """" + 00371 ;TX +00025E 00372 TX_ISR ;TRANSMIT +00025E 0E81 00373 MOVLW RTCD_FROM_PIC ;RTC DATEN SENDEN? +000260 634B 00374 CPFSEQ TX_STATUS ;SKIP JA +000262 D??? 00375 BRA TX_ISR1 ;NEIN-> +000264 CFEE FFAD 00376 MOVFF POSTINC0,TXREG ;BYT SENDEN +000268 0E3F 00377 MOVLW 0x3F ;SCHON LETZTES BYTS? +00026A 64E9 00378 CPFSGT FSR0L ;SKIP WENN FERTIG +00026C 0010 00379 RETFIE ;NEIN WEITERE SENDEN +00026E 00380 TX_ISR_FERTIG +00026E 6B4B 00381 CLRF TX_STATUS +000270 989D 00382 BCF PIE1,TXIE ;SONST DISABLE interrupt +000272 989E 00383 BCF PIR1,TXIF ;INTERRUPT FLAG LÖSCHEN +000274 0010 00384 RETFIE +000276 00385 TX_ISR1 + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 9 + + +LOC OBJECT CODE LINE SOURCE TEXT + VALUE + +000276 0EA1 00386 MOVLW READ_BLOCK ;READ BLOCK? +000278 634B 00387 CPFSEQ TX_STATUS ;SKIP JA +00027A D??? 00388 BRA TX_ISR2 ;NEIN-> +00027C CFEE FFAD 00389 MOVFF POSTINC0,TXREG ;BYT SENDEN +000280 0EC3 00390 MOVLW 0xC3 ;SCHON LETZTES BYTS? +000282 64E9 00391 CPFSGT FSR0L ;SKIP WENN FERTIG +000284 0010 00392 RETFIE ;NEIN WEITERE SENDEN +000286 00393 TX_ISR2 +000286 D??? 00394 BRA TX_ISR_FERTIG + 00395 ;**********************************************************************************************""""""""" + """" + 00396 ;RX +000288 00397 RX_ISR ; BYT RECEIVED +000288 CFAE F049 00398 MOVFF RCREG,RX_B ; BYT HOLEN + 00399 ; MOVFF RX_B,TXREG ; ECHO +00028C 0EFC 00400 MOVLW SYNC4 ;IM SYNC STATUS? +00028E 614A 00401 CPFSLT RX_STATUS ;SKIP WENN NEIN +000290 D??? 00402 BRA RX_SYNC_START ;JA -> ZUERST SYNC EMPFANGEN + 00403 ;--------------- +000292 0E82 00404 MOVLW RTCD_FROM_MCF ; DATEN VOM MCF CODE 0x82? +000294 634A 00405 CPFSEQ RX_STATUS ; WENN JA-> SKIP +000296 D??? 00406 BRA RX_ISR1 ; NEIN-> + 00407 ;64 BYT EMPFANGEN ------------------------------------- +000298 C049 FFE6 00408 MOVFF RX_B,POSTINC1 ;HOLEN -> (CNT+) +00029C 0E3F 00409 MOVLW 0x3F ;64 BYT ÜBERTRAGEN? +00029E 60E1 00410 CPFSLT FSR1L ;NEIN ->SKIP +0002A0 6B4A 00411 CLRF RX_STATUS ;JA FERTIG +0002A2 0010 00412 RETFIE + 00413 ;------------------------------------------------------------------------------------- +0002A4 00414 RX_ISR1 +0002A4 6349 00415 CPFSEQ RX_B ;BLOCK HEADER 0X82? +0002A6 D??? 00416 BRA RX_ISR2 ;NEIN-> +0002A8 6F4A 00417 MOVWF RX_STATUS ;STATUS SETZEN = EMPFANGENES BYT +0002AA EE10 F000 00418 LFSR 1,.0 ;BYT COUNTER AUF O +0002AE 0010 00419 RETFIE +0002B0 00420 RX_ISR2 +0002B0 0E01 00421 MOVLW REQ_RTCD_FROM_PIC ;DATEN SENDEN? +0002B2 6349 00422 CPFSEQ RX_B ;SKIP WENN JA +0002B4 D??? 00423 BRA RX_ISR3 ;SONST NEXT + 00424 ;BLOCK HEADER UND 64 BYT SENDEN ----------------------------------------- +0002B6 EE00 F000 00425 LFSR 0,.0 +0002BA 989E 00426 BCF PIR1,TXIF ;INTERRUPT FLAG LÖSCHEN +0002BC 889D 00427 BSF PIE1,TXIE ;Enable interrupt +0002BE 0E81 00428 MOVLW RTCD_FROM_PIC +0002C0 6F4B 00429 MOVWF TX_STATUS ;STATUS SETZEN +0002C2 6EAD 00430 MOVWF TXREG ;BLOCK HEADER = 0X81 +0002C4 6B4A 00431 CLRF RX_STATUS ;STATUS RÜCKSETZEN +0002C6 0010 00432 RETFIE ;UND WEG + 00433 ;------------------------------------------------------------------------------------- +0002C8 00434 RX_ISR3 +0002C8 0E04 00435 MOVLW EXT_SUB_GO ;EXT SUB FREIGEBEN? +0002CA 6349 00436 CPFSEQ RX_B +0002CC D??? 00437 BRA RX_ISR4 ;NEIN-> + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 10 + + +LOC OBJECT CODE LINE SOURCE TEXT + VALUE + + 00438 ;EXT SUBS FREIGEBEN -------------------------------------------------------------- +0002CE 0E00 00439 MOVLW (EXTERN_INT_ADR & 0xFF0000)>>16 +0002D0 6EF8 00440 MOVWF TBLPTRU +0002D2 0E20 00441 MOVLW (EXTERN_INT_ADR & 0x00FF00)>>8 +0002D4 6EF7 00442 MOVWF TBLPTRH +0002D6 0E00 00443 MOVLW (EXTERN_INT_ADR & 0x0000FF) +0002D8 6EF6 00444 MOVWF TBLPTRL ;ADRESSE SETZEN +0002DA 0008 00445 TBLRD* ;WERT HOLEN (MUSS 0xFB SEIN SONST UNGÜLTIG) +0002DC CFF5 F04D 00446 MOVFF TABLAT,GO_INT ;EXTERNE SUBROUTINES AKTIVIEREN WENN OK +0002E0 0E00 00447 MOVLW (EXTERN_SUB_ADR & 0xFF0000)>>16 +0002E2 6EF8 00448 MOVWF TBLPTRU +0002E4 0E20 00449 MOVLW (EXTERN_SUB_ADR & 0x00FF00)>>8 +0002E6 6EF7 00450 MOVWF TBLPTRH +0002E8 0E10 00451 MOVLW (EXTERN_SUB_ADR & 0x0000FF) +0002EA 6EF6 00452 MOVWF TBLPTRL ;ADRESSE SETZEN +0002EC 0008 00453 TBLRD* ;WERT HOLEN (MUSS 0xFB SEIN SONST UNGÜLTIG) +0002EE CFF5 F04C 00454 MOVFF TABLAT,GO_SUB ;EXTERNE SUBROUTINES AKTIVIEREN WENN OK +0002F2 6B4A 00455 CLRF RX_STATUS ;STATUS RÜCKSETZEN +0002F4 0010 00456 RETFIE ;UND WEG + 00457 ;------------------------------------------------------------------------------------- +0002F6 00458 RX_ISR4 +0002F6 0E05 00459 MOVLW EXT_SUB_STOP ;EXT SUB STOPPEN? +0002F8 6349 00460 CPFSEQ RX_B +0002FA D??? 00461 BRA RX_ISR5 ;NEIN-> + 00462 ;EXT SUBS STOPPEN -------------------------------------------------------------- +0002FC 6B4D 00463 CLRF GO_INT ;STOPPEN +0002FE 6B4C 00464 CLRF GO_SUB ;STOPPEN +000300 6B4A 00465 CLRF RX_STATUS ;STATUS RÜCKSETZEN +000302 0010 00466 RETFIE ;UND WEG + 00467 ;------------------------------------------------------------------------------------- +000304 00468 RX_ISR5 +000304 0EA0 00469 MOVLW REQ_BLOCK ;REQ BLOCK? +000306 6349 00470 CPFSEQ RX_B +000308 D??? 00471 BRA RX_ISR6 ;NEIN-> + 00472 ;REQ BLOCK ---------------------------------------------------------------- +00030A 6F4A 00473 MOVWF RX_STATUS ;STATUS SETZEN = EMPFANGENES BYT +00030C EE11 F080 00474 LFSR 1,TX_BUFFER ;BYT COUNTER AUF TX_BUFFER -> GLEICH EINTRAGEN +000310 0010 00475 RETFIE +000312 00476 RX_ISR6 +000312 634A 00477 CPFSEQ RX_STATUS ;REQ BLOCK ADRESSE EMPFANGFEN? +000314 D??? 00478 BRA RX_ISR7 ;NEIN-> + 00479 ;3 BYT EMPFANGEN ------------------------------------- +000316 C049 FFE6 00480 MOVFF RX_B,POSTINC1 ;HOLEN -> (CNT+) +00031A 0E82 00481 MOVLW 0x82 ;3 BYT ÜBERTRAGEN? (BUFFER BEGINNT BEI 0x180 +00031C 60E1 00482 CPFSLT FSR1L ;NEIN ->SKIP +00031E D??? 00483 BRA RX_RB3BOK +000320 0010 00484 RETFIE +000322 00485 RX_RB3BOK +000322 EE11 F080 00486 LFSR 1,TX_BUFFER ;BYT RX COUNTER AUF TX_BUFFER +000326 CFE6 FFF8 00487 MOVFF POSTINC1,TBLPTRU ;ADRESSE EINTRAGEN +00032A CFE6 FFF7 00488 MOVFF POSTINC1,TBLPTRH +00032E CFE6 FFF6 00489 MOVFF POSTINC1,TBLPTRL +000332 0EC2 00490 MOVLW 0xC2 ;67 BYT ÜBERTRAGEN? (BUFFER BEGINNT BEI 0x180 + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 11 + + +LOC OBJECT CODE LINE SOURCE TEXT + VALUE + +000334 00491 RX_RB3B2 +000334 0009 00492 TBLRD *+ ;LESEN UND NEXT +000336 CFF5 FFE6 00493 MOVFF TABLAT,POSTINC1 ;UND EINTRAGEN +00033A 62E1 00494 CPFSEQ FSR1L ;WENN FERTIG ->SKIP +00033C D??? 00495 BRA RX_RB3B2 ;SONST LOOP + 00496 ;BLOCK HEADER 3 BYTS ADRESSE UND 64 BYT SENDEN STARTEN ----------------------------------------- +00033E EE01 F080 00497 LFSR 0,TX_BUFFER ;TX COUNTER AUF TX_BUFFER +000342 989E 00498 BCF PIR1,TXIF ;INTERRUPT FLAG LÖSCHEN +000344 889D 00499 BSF PIE1,TXIE ;Enable interrupt +000346 0EA1 00500 MOVLW READ_BLOCK ;CODE HEADER 0xA1 +000348 6F4B 00501 MOVWF TX_STATUS ;STATUS SETZEN +00034A 6EAD 00502 MOVWF TXREG ;BLOCK HEADER = 0XA1 +00034C 6B4A 00503 CLRF RX_STATUS ;STATUS RÜCKSETZEN +00034E 0010 00504 RETFIE ;UND WEG + 00505 ;------------------------------------------------------------------------------------- +000350 00506 RX_ISR7 +000350 0EA2 00507 MOVLW WRITE_BLOCK ;WRITE BLOCK 0xA2 BYT EMPFANGEN? +000352 634A 00508 CPFSEQ RX_STATUS ;WENN JA-> SKIP +000354 D??? 00509 BRA RX_ISR8 ;NEIN-> + 00510 ;WRITE BLOCK ---------------------------------------------------------------------------- + 00511 ;67 BYT EMPFANGEN ------------------------------------- +000356 C049 FFE6 00512 MOVFF RX_B,POSTINC1 ;HOLEN -> (CNT+) +00035A 0E42 00513 MOVLW 0x42 ;67 BYT ÜBERTRAGEN? +00035C 60E1 00514 CPFSLT FSR1L ;WENN FERTIG ->SKIP +00035E 0010 00515 RETFIE + 00516 ; ADRESSE UND DATEN SIND DA -> PROGRAMMING FLASH +000360 EE11 F000 00517 LFSR 1,RX_BUFFER ;BYT COUNTER AUF RX BUFFER +000364 CFE6 FFF8 00518 MOVFF POSTINC1,TBLPTRU ;TABLE POINTER SETZEN +000368 0E00 00519 MOVLW (EXTERN_INT_ADR & 0xFF0000)>>16 +00036A 60F8 00520 CPFSLT TBLPTRU ;TEST OB WENIGER ALS ERLAUBT +00036C D??? 00521 BRA NO_PROG ;JA-> +00036E CFE6 FFF7 00522 MOVFF POSTINC1,TBLPTRH ;TABLE POINTER SETZEN +000372 0E20 00523 MOVLW (EXTERN_INT_ADR & 0x00FF00)>>8 +000374 60F8 00524 CPFSLT TBLPTRU ;TEST OB WENIGER ALS ERLAUBT +000376 D??? 00525 BRA NO_PROG ;JA-> +000378 CFE6 FFF6 00526 MOVFF POSTINC1,TBLPTRL ;TABLE POINTER SETZEN + 00527 ;EREASE BLOCK +00037C 8EA6 00528 BSF EECON1,EEPGD ; point to Flash program memory +00037E 9CA6 00529 BCF EECON1,CFGS ; access Flash program memory +000380 84A6 00530 BSF EECON1,WREN ; enable write to memory +000382 88A6 00531 BSF EECON1,FREE ; enable Row Erase operation +000384 0E55 00532 MOVLW 55h +000386 6EA7 00533 MOVWF EECON2 ; write 55h +000388 0EAA 00534 MOVLW 0AAh ; write 0AAh +00038A 6EA7 00535 MOVWF EECON2 +00038C 82A6 00536 BSF EECON1,WR ; start erase (CPU stall) +00038E 0E42 00537 MOVLW 0x42 ;67 BYT +000390 00538 WRITE_WORD_TO_HREGS +000390 CFE6 FFF5 00539 MOVFF POSTINC1,TABLAT ; get byte of buffer data +000394 000F 00540 TBLWT+* ; write data, perform a short write to internal + TBLWT holding register. +000396 60E1 00541 CPFSLT FSR1L ;SCHON BEI 67 BYTES? +000398 D??? 00542 BRA WRITE_WORD_TO_HREGS ;NEIN->LOOP + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 12 + + +LOC OBJECT CODE LINE SOURCE TEXT + VALUE + +00039A 00543 PROGRAM_MEMORY +00039A 8EA6 00544 BSF EECON1,EEPGD ; point to Flash program memory +00039C 9CA6 00545 BCF EECON1,CFGS ; access Flash program memory +00039E 84A6 00546 BSF EECON1,WREN ; enable write to memory +0003A0 0E55 00547 MOVLW 55h +0003A2 6EA7 00548 MOVWF EECON2 ; write 55h +0003A4 0EAA 00549 MOVLW 0AAh +0003A6 6EA7 00550 MOVWF EECON2 ; write 0AAh +0003A8 82A6 00551 BSF EECON1,WR ; start program (CPU stall) +0003AA 94A6 00552 BCF EECON1,WREN ; disable write to memory +0003AC 00553 NO_PROG +0003AC 6B4A 00554 CLRF RX_STATUS ;AUF NORMLA SCHALTEN +0003AE 0010 00555 RETFIE ;UND FERTIG + 00556 ;WRITE BLOCK SETZEN? +0003B0 00557 RX_ISR8 +0003B0 6349 00558 CPFSEQ RX_B ;BLOCK HEADER COMMANDOE 0XA2? +0003B2 D??? 00559 BRA RX_ISR9 ;NEIN-> +0003B4 6F4A 00560 MOVWF RX_STATUS ;STATUS SETZEN = EMPFANGENES BYT +0003B6 EE11 F000 00561 LFSR 1,RX_BUFFER ;BYT COUNTER AUF RX BUFFER +0003BA 0010 00562 RETFIE + 00563 ;------------------------------------------------------------------------------------- +0003BC 00564 RX_ISR9 +0003BC 6B4A 00565 CLRF RX_STATUS +0003BE 0010 00566 RETFIE + 00567 ;------------------------------------------------------------------------------------- + 00568 ;SYNC ABWARTEN UND WENN DA "OK!" SENDEN ---------------------------------------------------- + 00569 ;------------------------------------------------------------------------------------- +0003C0 00570 RX_SYNC_START +0003C0 0EFF 00571 MOVLW SYNC1 +0003C2 634A 00572 CPFSEQ RX_STATUS +0003C4 D??? 00573 BRA RX_SYNC2 +0003C6 0E41 00574 MOVLW SYNC1_DATA +0003C8 6349 00575 CPFSEQ RX_B +0003CA D??? 00576 BRA NON_SYNC +0003CC 0EFE 00577 MOVLW SYNC2 +0003CE 6F4A 00578 MOVWF RX_STATUS +0003D0 0010 00579 RETFIE +0003D2 00580 NON_SYNC +0003D2 0EFF 00581 MOVLW SYNC1 +0003D4 6F4A 00582 MOVWF RX_STATUS +0003D6 0010 00583 RETFIE +0003D8 00584 RX_SYNC2 ;TEST AUF SYNC UND DATA 2 +0003D8 0EFE 00585 MOVLW SYNC2 +0003DA 634A 00586 CPFSEQ RX_STATUS +0003DC D??? 00587 BRA RX_SYNC3 ;NICHT SYNC 2 +0003DE 0E43 00588 MOVLW SYNC2_DATA +0003E0 6349 00589 CPFSEQ RX_B +0003E2 D??? 00590 BRA NON_SYNC +0003E4 0EFD 00591 MOVLW SYNC3 +0003E6 6F4A 00592 MOVWF RX_STATUS +0003E8 0010 00593 RETFIE +0003EA 00594 RX_SYNC3 ;TEST AUF SYNC UND DATA 3 +0003EA 0EFD 00595 MOVLW SYNC3 + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 13 + + +LOC OBJECT CODE LINE SOURCE TEXT + VALUE + +0003EC 634A 00596 CPFSEQ RX_STATUS +0003EE D??? 00597 BRA RX_SYNC4 ;NICHT SYNC 3 +0003F0 0E50 00598 MOVLW SYNC3_DATA +0003F2 6349 00599 CPFSEQ RX_B +0003F4 D??? 00600 BRA NON_SYNC +0003F6 0EFC 00601 MOVLW SYNC4 +0003F8 6F4A 00602 MOVWF RX_STATUS +0003FA 0010 00603 RETFIE +0003FC 00604 RX_SYNC4 ;TEST AUF SYNC UND DATA 4 +0003FC 0EFC 00605 MOVLW SYNC4 +0003FE 634A 00606 CPFSEQ RX_STATUS +000400 D??? 00607 BRA NON_SYNC ;WIEDER VON VORN +000402 0E46 00608 MOVLW SYNC4_DATA +000404 6349 00609 CPFSEQ RX_B ;SKIP OK +000406 D??? 00610 BRA NON_SYNC ;NICHT SYNC4 DATA +000408 00611 RX_WAIT1 +000408 A2AC 00612 BTFSS TXSTA,TRMT +00040A D??? 00613 BRA RX_WAIT1 +00040C 0E4F 00614 MOVLW 'O' ;SENDE OK! +00040E 6EAD 00615 MOVWF TXREG; +000410 00616 RX_WAIT2 +000410 A2AC 00617 BTFSS TXSTA,TRMT +000412 D??? 00618 BRA RX_WAIT2 +000414 0E4B 00619 MOVLW 'K' ;SENDE OK! +000416 6EAD 00620 MOVWF TXREG; +000418 00621 RX_WAIT3 +000418 A2AC 00622 BTFSS TXSTA,TRMT +00041A D??? 00623 BRA RX_WAIT3 +00041C 0E21 00624 MOVLW '!' +00041E 6EAD 00625 MOVWF TXREG; +000420 6B4A 00626 CLRF RX_STATUS ;OK START NORMAL +000422 0010 00627 RETFIE + 00628 ;**********************************************************************************************""""""""" + """" + 00629 ;SPANNUNGSÜBERWACHUNGS INTERRUPT +000424 00630 HLVD_ISR +000424 A346 00631 BTFSS U_ERR,1 ;WARTEN AUF GELADEN? +000426 D??? 00632 BRA HLVD_LE ;NEIN UNTERSPANNUNG DETEKT-> +000428 9146 00633 BCF U_ERR,0 ;SPANNUNGSFEHLER AUS +00042A 9346 00634 BCF U_ERR,1 ;WARTEN AUF GELADEN=AUS +00042C 0E07 00635 MOVLW U_ERR_PW_AUS+2 ;POWER AUS ÜBERSPRINGEN +00042E 6F47 00636 MOVWF U_ERR_TIME ;ZEIT SETZEN +000430 0E17 00637 MOVLW B'00010111' ;INT WENN UNTER 3.12V +000432 6ED2 00638 MOVWF HLVDCON +000434 00639 WAIT_LVDOK: +000434 AAD2 00640 BTFSS HLVDCON,IVRST ;ABWARTEN BIS AENDERUNG AKTIV +000436 D??? 00641 BRA WAIT_LVDOK +000438 94A1 00642 BCF PIR2,HLVDIF ;INTERRUPT FLAG LÖSCHEN +00043A 0010 00643 RETFIE +00043C 00644 HLVD_LE ;UNTERSPANNUNG +00043C 8146 00645 BSF U_ERR,0 ;ERROR SETZEN +00043E 8346 00646 BSF U_ERR,1 ;WARTEN AUF GELADEN SETZEN +000440 6B47 00647 CLRF U_ERR_TIME ;RÜCKSETZEN + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 14 + + +LOC OBJECT CODE LINE SOURCE TEXT + VALUE + + 00648 ;MESSAGE AN PROCESSOR +000442 0E03 00649 MOVLW U_MIN_TO_MCF +000444 6EAD 00650 MOVWF TXREG ;SENDEN + 00651 +000446 0E9A 00652 MOVLW B'10011010' ;INT WENN ÜBER 3.7V +000448 6ED2 00653 MOVWF HLVDCON +00044A D??? 00654 BRA WAIT_LVDOK + 00655 ;**********************************************************************************************""""""""" + """" + 00656 ;A/D INTERRUPT +00044C 00657 AD_ISR +00044C 9C9E 00658 BCF PIR1,ADIF ;CLEAR INTERRUPT PENDIG +00044E 0010 00659 RETFIE ;RETURN + 00660 ;******************************************************************************************************* + ****** + 00661 ; uhr interrupt ALLE 1/8 SEC +000450 00662 RTC_ISR + 00663 ;UHR WIEDER RÜCKSETZEN UND AKTIVIEREN +000450 0EF0 00664 MOVLW TIMER_HB ;WIEDER AUF STARTWERT +000452 6ECF 00665 MOVWF TMR1H ;SETZEN +000454 909E 00666 BCF PIR1,TMR1IF ;INTERRUPT FLAG LÖSCHEN +000456 8881 00667 BSF PORTB,RB4 ;PIC INT HIGH -------- +000458 8096 00668 BSF TRISE,RE0 ;LED=OFF +00045A 9881 00669 BCF PORTB,RB4 ;PIC INT = LOW +00045C B095 00670 BTFSC TRISD,RD0 ;POWER OFF? +00045E D??? 00671 BRA POWER_OFF_I ;JA-> + 00672 ; POWER IS ON: + 00673 ; BLINKEN 4X/SEC WENN RESET +000460 BE95 00674 BTFSC TRISD,RD7 ;RESET AKTIV? +000462 D??? 00675 BRA PINGS ;NEIN-> +000464 B141 00676 BTFSC TICKS,0 ;UNGERADE TICKS? +000466 9096 00677 BCF TRISE,RE0 ;NEIN->LED=ON +000468 D??? 00678 BRA PINGS +00046A 00679 POWER_OFF_I +00046A 0E03 00680 MOVLW .3 +00046C 1500 00681 ANDWF SECS,0 ;4 SEKUNDEN AUSMASKIEREN +00046E E1?? 00682 BNZ PINGS ;NICHT MODULO4 -> +000470 0E07 00683 MOVLW .7 +000472 6341 00684 CPFSEQ TICKS ;7. TICK? +000474 D??? 00685 BRA POWER_OFF_I2 ;NEIN-> +000476 9096 00686 BCF TRISE,RE0 ;JA->LED=ON +000478 00687 POWER_OFF_I2 +000478 0E1E 00688 MOVLW .30 ; WENIGER ALS 30 SEC SEIT LETZTEM SPANNUNGSFEHLER? +00047A 6147 00689 CPFSLT U_ERR_TIME +00047C D??? 00690 BRA PINGS ;NEIN-> +00047E 0E05 00691 MOVLW .5 +000480 6341 00692 CPFSEQ TICKS ;5. TICK? +000482 D??? 00693 BRA PINGS ;NEIN-> +000484 9096 00694 BCF TRISE,RE0 ;JA->LED=ON +000486 00695 PINGS +000486 EC?? F??? 00696 CALL TASTE ;UP TASTE + 00697 ; TASTE LOSGELASSEN? +00048A 0E04 00698 MOVLW RESET_OFF_TIME + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 15 + + +LOC OBJECT CODE LINE SOURCE TEXT + VALUE + +00048C 6543 00699 CPFSGT TASTE_OFF_TIME ;TASTE LÄNGER ALS 2 SEC LOSGELASSEN? +00048E D??? 00700 BRA PINGW ;NEIN-> +000490 8E95 00701 BSF TRISD,RD7 ;JA-> #RSTI INAKTIV =HIGH +000492 A095 00702 BTFSS TRISD,RD0 ;POWER ON? +000494 EC?? F??? 00703 CALL SERIAL_ON ;ja->SERIELL EINSCHALTEN + 00704 ;--TICKS=125MS +000498 00705 PINGW +000498 2B41 00706 INCF TICKS ;inc ticks +00049A A095 00707 BTFSS TRISD,RD0 ;POWER ON? +00049C D??? 00708 BRA PINGS2 ;JA-> +00049E 0E20 00709 MOVLW 20 +0004A0 6148 00710 CPFSLT U_POWER_IN ;LADEGERÄT ANGESCHLOSSEN? +0004A2 D??? 00711 BRA PINGS2 ;->JA LED HELLER +0004A4 0EA0 00712 MOVLW TIME_MAX ;>=MAXIMALZEIT? +0004A6 6147 00713 CPFSLT U_ERR_TIME ;SEIT SPANNUNGSFEHLER +0004A8 8096 00714 BSF TRISE,RE0 ;JA -> LED OFF +0004AA 00715 PINGS2 +0004AA 0E07 00716 MOVLW .7 ; 7? +0004AC 6541 00717 CPFSGT TICKS +0004AE 0010 00718 RETFIE ; NEIN ->RETURN +0004B0 00719 SEKUNDEN + 00720 ;led blinken POWER ON----------------------------------------- +0004B0 A095 00721 BTFSS TRISD,RD0 ;POWER ON? +0004B2 9096 00722 BCF TRISE,RE0 ;JA -> LED_ON + 00723 ;TIMER U_ERR ERHÖHEN +0004B4 0EA0 00724 MOVLW TIME_MAX ;>=MAXIMALZEIT? +0004B6 6547 00725 CPFSGT U_ERR_TIME ;SEIT SPANNUNGSFEHLER +0004B8 2B47 00726 INCF U_ERR_TIME ;NEIN ERHÖHEN + 00727 ;SPANNUNGSFEHLER BEARBEITEN ---------------------------------------- +0004BA 0E05 00728 MOVLW U_ERR_PW_AUS ;POWER AUS ZEIT? +0004BC 6347 00729 CPFSEQ U_ERR_TIME ; +0004BE D??? 00730 BRA SEK_NPA ;NEIN +0004C0 EC?? F??? 00731 CALL POWER_AUS ;JA AUSSCHALTEN + 00732 ;-------------------------------------------------------- +0004C4 00733 SEK_NPA + 00734 ;SPANNUNG POWER IN MESSEN +0004C4 0E01 00735 MOVLW B'00000001' ;KANAL 0, AD ON +0004C6 6EC2 00736 MOVWF ADCON0 ; +0004C8 82C2 00737 BSF ADCON0,1 ;GO +0004CA 00738 SEK_2 +0004CA B2C2 00739 BTFSC ADCON0,1 ;FERTIG? +0004CC D??? 00740 BRA SEK_2 ;NEIN +0004CE CFC4 F048 00741 MOVFF ADRESH,U_POWER_IN ;OK WERT EINTRAGEN + 00742 + 00743 ;SPANNUNG 2V5 MESSEN -> U_ERR TIMER NICHT ERHÖHEN WENN ÜBER 3.2V RESP. WIEDER -1 +0004D2 B095 00744 BTFSC TRISD,RD0 ;POWER ON? +0004D4 D??? 00745 BRA SEK_4 ;NEIN NICHT MESSEN + 00746 +0004D6 0E0D 00747 MOVLW B'00001101' ;KANAL 3, AD ON +0004D8 6EC2 00748 MOVWF ADCON0 ; +0004DA 82C2 00749 BSF ADCON0,1 ;GO +0004DC 00750 SEK_3 +0004DC B2C2 00751 BTFSC ADCON0,1 ;FERTIG? + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 16 + + +LOC OBJECT CODE LINE SOURCE TEXT + VALUE + +0004DE D??? 00752 BRA SEK_3 ;NEIN +0004E0 0EC8 00753 MOVLW .200 ;UNTER 3.2V -> WENN WERT ÜBER 78% +0004E2 60C4 00754 CPFSLT ADRESH ;JA -> +0004E4 D??? 00755 BRA SEK_4 ;SONST WEITER + 00756 ;TIMER U_ERR ERHÖHEN +0004E6 A146 00757 BTFSS U_ERR,0 ;SPANNUNGSERROR? +0004E8 D??? 00758 BRA SEK_4 ;NEIN +0004EA 0EA0 00759 MOVLW TIME_MAX ;>=MAXIMALZEIT? +0004EC 6547 00760 CPFSGT U_ERR_TIME ;SEIT SPANNUNGSFEHLER +0004EE 0747 00761 DECF U_ERR_TIME ;NEIN -> -1 + 00762 ;------------------------------------------------------------- +0004F0 00763 SEK_4 +0004F0 6B41 00764 CLRF TICKS +0004F2 2B00 00765 INCF SECS ; Increment seconds +0004F4 0E3B 00766 MOVLW .59 ; 60 seconds elapsed? +0004F6 6500 00767 CPFSGT SECS +0004F8 0010 00768 RETFIE ;RETURN +0004FA 00769 MINUTEN +0004FA 6B00 00770 CLRF SECS ; Clear seconds +0004FC 2B02 00771 INCF MINS ; Increment minutes +0004FE 0E3B 00772 MOVLW .59 ; 60 minutes elapsed? +000500 6502 00773 CPFSGT MINS +000502 0010 00774 RETFIE ;RETURN +000504 00775 STUNDEN +000504 6B02 00776 CLRF MINS ; clear minutes +000506 2B04 00777 INCF HOURS ; Increment hours +000508 0E17 00778 MOVLW .23 ; 24 hours elapsed? +00050A 6504 00779 CPFSGT HOURS +00050C 0010 00780 RETFIE ;RETURN +00050E 00781 TAGE_UND_TAG_DER_WOCHE +00050E 6B04 00782 CLRF HOURS ; Reset hours +000510 0E07 00783 MOVLW .7 +000512 6106 00784 CPFSLT DAY_OF_WEEK +000514 6B06 00785 CLRF DAY_OF_WEEK +000516 2B06 00786 INCF DAY_OF_WEEK +000518 2B07 00787 INCF DAYS +00051A 0E1C 00788 MOVLW .28 +00051C 6507 00789 CPFSGT DAYS +00051E 0010 00790 RETFIE ;RETURN +000520 00791 MEHR_ALS_28_TAGE +000520 0E02 00792 MOVLW .2 +000522 6308 00793 CPFSEQ MONTHS ;FEB? +000524 D??? 00794 BRA NOT_FEB ;NEIN-> +000526 00795 FEB +000526 0E03 00796 MOVLW .3 +000528 1509 00797 ANDWF YEARS,0 ;SCHALTJAHR +00052A E1?? 00798 BNZ NEXT_MONTH ;NEIN-> +00052C 00799 SCHALTJAHR +00052C 0E1D 00800 MOVLW .29 +00052E 6507 00801 CPFSGT DAYS +000530 0010 00802 RETFIE ;RETURN +000532 00803 NEXT_MONTH +000532 0E01 00804 MOVLW .1 + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 17 + + +LOC OBJECT CODE LINE SOURCE TEXT + VALUE + +000534 6F07 00805 MOVWF DAYS +000536 2B08 00806 INCF MONTHS +000538 0E12 00807 MOVLW 12 +00053A 6508 00808 CPFSGT MONTHS +00053C 0010 00809 RETFIE ;RETURN +00053E 00810 YEAR +00053E 0E01 00811 MOVLW .1 +000540 6F08 00812 MOVWF MONTHS +000542 2B09 00813 INCF YEARS +000544 0010 00814 RETFIE ;RETURN +000546 00815 NOT_FEB +000546 0E1E 00816 MOVLW .30 +000548 6507 00817 CPFSGT DAYS +00054A 0010 00818 RETFIE +00054C 00819 MEHR_ALS_30_TAGE +00054C 0E04 00820 MOVLW .4 ;APRIL? +00054E 6308 00821 CPFSEQ MONTHS ;SKIP +000550 D??? 00822 BRA NOT_APRIL +000552 D??? 00823 BRA NEXT_MONTH ;APRIL-> +000554 00824 NOT_APRIL +000554 0E06 00825 MOVLW .6 ;JUNI? +000556 6308 00826 CPFSEQ MONTHS +000558 D??? 00827 BRA NOT_JUNI +00055A D??? 00828 BRA NEXT_MONTH ;JUNI-> +00055C 00829 NOT_JUNI +00055C 0E09 00830 MOVLW .9 ;SEPTEMBER? +00055E 6308 00831 CPFSEQ MONTHS +000560 D??? 00832 BRA NOT_SEP +000562 D??? 00833 BRA NEXT_MONTH ;SEPTEMBER-> +000564 00834 NOT_SEP +000564 0E0B 00835 MOVLW .11 ;NOVEMBER? +000566 6308 00836 CPFSEQ MONTHS ;SKIP +000568 0010 00837 RETFIE ;SIND MONATE MIT 31 TAGEN-> +00056A D??? 00838 BRA NEXT_MONTH ;SONST NOVEMBER-> + 00839 ;**********************************************************************************************""""""""" + """" + 00840 ; ENDE MAIN + 00841 ;**********************************************************************************************""""""""" + """" + 00842 ;**********************************************************************************************""""""""" + """" + 00843 ; EXTERN_SUBOUTINES FOGEN AB 0x1000 DIE SPÄTER EINPROGRAMMIERT WERDEN + 00844 ;**********************************************************************************************""""""""" + """" + 00845 end + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 18 + + +SYMBOL TABLE + LABEL VALUE + +A 00000000 +ABDEN 00000000 +ABDOVF 00000007 +ACCESS 00000000 +ACKDT 00000005 +ACKEN 00000004 +ACKSTAT 00000006 +ACQT0 00000003 +ACQT1 00000004 +ACQT2 00000005 +ADCON0 00000FC2 +ADCON1 00000FC1 +ADCON2 00000FC0 +ADCS0 00000000 +ADCS1 00000001 +ADCS2 00000002 +ADDEN 00000003 +ADEN 00000003 +ADFM 00000007 +ADIE 00000006 +ADIF 00000006 +ADIP 00000006 +ADON 00000000 +ADRES 00000FC3 +ADRESH 00000FC4 +ADRESL 00000FC3 +AD_ISR 0000044C +AD_KANAL 00000045 +AN0 00000000 +AN1 00000001 +AN10 00000001 +AN11 00000004 +AN12 00000000 +AN2 00000002 +AN3 00000003 +AN4 00000005 +AN5 00000000 +AN6 00000001 +AN7 00000002 +AN8 00000002 +AN9 00000003 +BANKED 00000001 +BAUDCON 00000FB8 +BAUDCTL 00000FB8 +BCLIE 00000003 +BCLIF 00000003 +BCLIP 00000003 +BF 00000000 +BGST 00000005 +BOR 00000000 +BRG16 00000003 +BRGH 00000002 +BSR 00000FE0 + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 19 + + +SYMBOL TABLE + LABEL VALUE + +C 00000000 +C1INV 00000004 +C1OUT 00000006 +C2INV 00000005 +C2OUT 00000007 +CCP1 00000002 +CCP1CON 00000FBD +CCP1IE 00000002 +CCP1IF 00000002 +CCP1IP 00000002 +CCP1M0 00000000 +CCP1M1 00000001 +CCP1M2 00000002 +CCP1M3 00000003 +CCP1X 00000005 +CCP1Y 00000004 +CCP2CON 00000FBA +CCP2IE 00000000 +CCP2IF 00000000 +CCP2IP 00000000 +CCP2M0 00000000 +CCP2M1 00000001 +CCP2M2 00000002 +CCP2M3 00000003 +CCP2X 00000005 +CCP2Y 00000004 +CCP2_PORTB 00000003 +CCP2_PORTC 00000001 +CCPR1 00000FBE +CCPR1H 00000FBF +CCPR1L 00000FBE +CCPR2 00000FBB +CCPR2H 00000FBC +CCPR2L 00000FBB +CFGS 00000006 +CHS0 00000002 +CHS1 00000003 +CHS2 00000004 +CHS3 00000005 +CIS 00000003 +CK 00000006 +CKE 00000006 +CKP 00000004 +CLKI 00000007 +CLKO 00000006 +CLK_ACTIV 00000072 +CLK_SLEEP 00000012 +CM0 00000000 +CM1 00000001 +CM2 00000002 +CMCON 00000FB4 +CMIE 00000006 +CMIF 00000006 + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 20 + + +SYMBOL TABLE + LABEL VALUE + +CMIP 00000006 +CREN 00000004 +CS 00000002 +CSRC 00000007 +CVR0 00000000 +CVR1 00000001 +CVR2 00000002 +CVR3 00000003 +CVRCON 00000FB5 +CVREF 00000002 +CVREN 00000007 +CVROE 00000006 +CVRR 00000005 +CVRSS 00000004 +D 00000005 +DAYS 00000007 +DAY_OF_WEEK 00000006 +DC 00000001 +DC1B0 00000004 +DC1B1 00000005 +DC2B0 00000004 +DC2B1 00000005 +DDRA TRISA +DDRB TRISB +DDRC TRISC +DDRD TRISD +DDRE TRISE +DONE 00000001 +D_A 00000005 +EAPIR1 0000004E +EAPIR2 0000004F +ECCP1AS 00000FB6 +ECCPAS0 00000004 +ECCPAS1 00000005 +ECCPAS2 00000006 +ECCPASE 00000007 +EEADR 00000FA9 +EECON1 00000FA6 +EECON2 00000FA7 +EEDATA 00000FA8 +EEIE 00000004 +EEIF 00000004 +EEIP 00000004 +EEPGD 00000007 +EXTERN_INTERRUPTS 00002002 +EXTERN_INT_ADR 00002000 +EXTERN_SUBROUTINES 00002012 +EXTERN_SUB_ADR 00002010 +EXT_CODE 000000FB +EXT_SUB_GO 00000004 +EXT_SUB_STOP 00000005 +FAST 00000001 +FEB 00000526 + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 21 + + +SYMBOL TABLE + LABEL VALUE + +FERR 00000002 +FLTS 00000002 +FREE 00000004 +FSR0 00000000 +FSR0H 00000FEA +FSR0L 00000FE9 +FSR1 00000001 +FSR1H 00000FE2 +FSR1L 00000FE1 +FSR2 00000002 +FSR2H 00000FDA +FSR2L 00000FD9 +GCEN 00000007 +GIE 00000007 +GIEH 00000007 +GIEL 00000006 +GO 00000001 +GO_DONE 00000001 +GO_INT 0000004D +GO_SUB 0000004C +HLVDCON 00000FD2 +HLVDEN 00000004 +HLVDIE 00000002 +HLVDIF 00000002 +HLVDIP 00000002 +HLVDL0 00000000 +HLVDL1 00000001 +HLVDL2 00000002 +HLVDL3 00000003 +HLVD_ISR 00000424 +HLVD_LE 0000043C +HOURS 00000004 +HOURS_ALARM 00000005 +IBF 00000007 +IBOV 00000005 +IDLEN 00000007 +INDF0 00000FEF +INDF1 00000FE7 +INDF2 00000FDF +INT0 00000000 +INT0E 00000004 +INT0F 00000001 +INT0IE 00000004 +INT0IF 00000001 +INT1 00000001 +INT1E 00000003 +INT1F 00000000 +INT1IE 00000003 +INT1IF 00000000 +INT1IP 00000006 +INT1P 00000006 +INT2 00000002 +INT2E 00000004 + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 22 + + +SYMBOL TABLE + LABEL VALUE + +INT2F 00000001 +INT2IE 00000004 +INT2IF 00000001 +INT2IP 00000007 +INT2P 00000007 +INTCON 00000FF2 +INTCON2 00000FF1 +INTCON3 00000FF0 +INTEDG0 00000006 +INTEDG1 00000005 +INTEDG2 00000004 +INTSRC 00000007 +INT_HANDLER 00000018 +IOFS 00000002 +IPEN 00000007 +IPR1 00000F9F +IPR2 00000FA2 +IRCF0 00000004 +IRCF1 00000005 +IRCF2 00000006 +IRVST 00000005 +IVRST 00000005 +KALT_START 00000100 +KBI0 00000004 +KBI1 00000005 +KBI2 00000006 +KBI3 00000007 +LADESTROM 000001D2 +LATA 00000F89 +LATA0 00000000 +LATA1 00000001 +LATA2 00000002 +LATA3 00000003 +LATA4 00000004 +LATA5 00000005 +LATA6 00000006 +LATA7 00000007 +LATB 00000F8A +LATB0 00000000 +LATB1 00000001 +LATB2 00000002 +LATB3 00000003 +LATB4 00000004 +LATB5 00000005 +LATB6 00000006 +LATB7 00000007 +LATC 00000F8B +LATC0 00000000 +LATC1 00000001 +LATC2 00000002 +LATC3 00000003 +LATC4 00000004 +LATC5 00000005 + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 23 + + +SYMBOL TABLE + LABEL VALUE + +LATC6 00000006 +LATC7 00000007 +LATD 00000F8C +LATD0 00000000 +LATD1 00000001 +LATD2 00000002 +LATD3 00000003 +LATD4 00000004 +LATD5 00000005 +LATD6 00000006 +LATD7 00000007 +LATE 00000F8D +LATE0 00000000 +LATE1 00000001 +LATE2 00000002 +LS_OFF_POWER 000001DA +LS_ON_POWER 000001D6 +LVDCON 00000FD2 +LVDEN 00000004 +LVDIE 00000002 +LVDIF 00000002 +LVDIN 00000005 +LVDIP 00000002 +LVDL0 00000000 +LVDL1 00000001 +LVDL2 00000002 +LVDL3 00000003 +LVV0 00000000 +LVV1 00000001 +LVV2 00000002 +LVV3 00000003 +MAIN 0000019E +MAIN2 000001AE +MCLR 00000003 +MEHR_ALS_28_TAGE 00000520 +MEHR_ALS_30_TAGE 0000054C +MINS 00000002 +MINS_ALRAM 00000003 +MINUTEN 000004FA +MONTHS 00000008 +N 00000004 +NEXT_MONTH 00000532 +NON_SYNC 000003D2 +NOT_A 00000005 +NOT_ADDRESS 00000005 +NOT_APRIL 00000554 +NOT_BOR 00000000 +NOT_CS 00000002 +NOT_DONE 00000001 +NOT_FEB 00000546 +NOT_JUNI 0000055C +NOT_MCLR 00000003 +NOT_PD 00000002 + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 24 + + +SYMBOL TABLE + LABEL VALUE + +NOT_POR 00000001 +NOT_RBPU 00000007 +NOT_RD 00000000 +NOT_RI 00000004 +NOT_SEP 00000564 +NOT_SS 00000005 +NOT_T1SYNC 00000002 +NOT_T3SYNC 00000002 +NOT_TO 00000003 +NOT_W 00000002 +NOT_WR 00000001 +NOT_WRITE 00000002 +NO_PROG 000003AC +OBF 00000006 +OERR 00000001 +OFF_TIME 00000014 +ON_TIME 00000002 +OSC1 00000007 +OSC2 00000006 +OSCCON 00000FD3 +OSCFIE 00000007 +OSCFIF 00000007 +OSCFIP 00000007 +OSCTUNE 00000F9B +OSTS 00000003 +OV 00000003 +P 00000004 +P1B 00000005 +P1C 00000006 +P1D 00000007 +P1M0 00000006 +P1M1 00000007 +PC 00000FF9 +PCFG0 00000000 +PCFG1 00000001 +PCFG2 00000002 +PCFG3 00000003 +PCL 00000FF9 +PCLATH 00000FFA +PCLATU 00000FFB +PD 00000002 +PDC0 00000000 +PDC1 00000001 +PDC2 00000002 +PDC3 00000003 +PDC4 00000004 +PDC5 00000005 +PDC6 00000006 +PEIE 00000006 +PEN 00000002 +PGC 00000006 +PGD 00000007 +PGM 00000005 + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 25 + + +SYMBOL TABLE + LABEL VALUE + +PIE1 00000F9D +PIE2 00000FA0 +PINGS 00000486 +PINGS2 000004AA +PINGW 00000498 +PIR1 00000F9E +PIR2 00000FA1 +PLLEN 00000006 +PLUSW0 00000FEB +PLUSW1 00000FE3 +PLUSW2 00000FDB +POR 00000001 +PORTA 00000F80 +PORTB 00000F81 +PORTC 00000F82 +PORTD 00000F83 +PORTE 00000F84 +POSTDEC0 00000FED +POSTDEC1 00000FE5 +POSTDEC2 00000FDD +POSTINC0 00000FEE +POSTINC1 00000FE6 +POSTINC2 00000FDE +POWER_AUS 000001C2 +POWER_EIN 000001B4 +POWER_OFF_I 0000046A +POWER_OFF_I2 00000478 +POWER_ON_TIME 00000044 +PR2 00000FCB +PREINC0 00000FEC +PREINC1 00000FE4 +PREINC2 00000FDC +PRG_OK_PIC 00000022 +PROD 00000FF3 +PRODH 00000FF4 +PRODL 00000FF3 +PROGRAM_MEMORY 0000039A +PRSEN 00000007 +PSA 00000003 +PSP0 00000000 +PSP1 00000001 +PSP2 00000002 +PSP3 00000003 +PSP4 00000004 +PSP5 00000005 +PSP6 00000006 +PSP7 00000007 +PSPIE 00000007 +PSPIF 00000007 +PSPIP 00000007 +PSPMODE 00000004 +PSSAC0 00000002 +PSSAC1 00000003 + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 26 + + +SYMBOL TABLE + LABEL VALUE + +PSSBD0 00000000 +PSSBD1 00000001 +PWM1CON 00000FB7 +R 00000002 +RA0 00000000 +RA1 00000001 +RA2 00000002 +RA3 00000003 +RA4 00000004 +RA5 00000005 +RA6 00000006 +RA7 00000007 +RB0 00000000 +RB1 00000001 +RB2 00000002 +RB3 00000003 +RB4 00000004 +RB5 00000005 +RB6 00000006 +RB7 00000007 +RBIE 00000003 +RBIF 00000000 +RBIP 00000000 +RBPU 00000007 +RC0 00000000 +RC1 00000001 +RC2 00000002 +RC3 00000003 +RC4 00000004 +RC5 00000005 +RC6 00000006 +RC7 00000007 +RCEN 00000003 +RCIDL 00000006 +RCIE 00000005 +RCIF 00000005 +RCIP 00000005 +RCMT 00000006 +RCON 00000FD0 +RCREG 00000FAE +RCSTA 00000FAB +RD 00000000 +RD0 00000000 +RD1 00000001 +RD16 00000007 +RD2 00000002 +RD3 00000003 +RD4 00000004 +RD5 00000005 +RD6 00000006 +RD7 00000007 +RE0 00000000 +RE1 00000001 + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 27 + + +SYMBOL TABLE + LABEL VALUE + +RE2 00000002 +RE3 00000003 +READ_BLOCK 000000A1 +REGA 0000000A +REGB 0000000B +REGC 0000000C +REGD 0000000D +REQ_BLOCK 000000A0 +REQ_RTCD_FROM_MCF 00000002 +REQ_RTCD_FROM_PIC 00000001 +RESETEN 00000256 +RESET_OFF_TIME 00000004 +RESET_ON_TIME 00000002 +RI 00000004 +RSEN 00000001 +RTCD_FROM_MCF 00000082 +RTCD_FROM_PIC 00000081 +RTC_ISR 00000450 +RTC_RAM 0000000E +RX 00000007 +RX9 00000006 +RX9D 00000000 +RXDTP 00000005 +RX_B 00000049 +RX_BUFFER 00000100 +RX_ISR 00000288 +RX_ISR1 000002A4 +RX_ISR2 000002B0 +RX_ISR3 000002C8 +RX_ISR4 000002F6 +RX_ISR5 00000304 +RX_ISR6 00000312 +RX_ISR7 00000350 +RX_ISR8 000003B0 +RX_ISR9 000003BC +RX_RB3B2 00000334 +RX_RB3BOK 00000322 +RX_STATUS 0000004A +RX_SYNC2 000003D8 +RX_SYNC3 000003EA +RX_SYNC4 000003FC +RX_SYNC_START 000003C0 +RX_WAIT1 00000408 +RX_WAIT2 00000410 +RX_WAIT3 00000418 +R_W 00000002 +S 00000003 +SBOREN 00000006 +SCHALTJAHR 0000052C +SCK 00000003 +SCKP 00000004 +SCL 00000003 +SCS0 00000000 + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 28 + + +SYMBOL TABLE + LABEL VALUE + +SCS1 00000001 +SDA 00000004 +SDI 00000004 +SDO 00000005 +SECS 00000000 +SECS_ALARM 00000001 +SEKUNDEN 000004B0 +SEK_2 000004CA +SEK_3 000004DC +SEK_4 000004F0 +SEK_NPA 000004C4 +SEN 00000000 +SENDB 00000003 +SEND_RTC_REG 00000232 +SEND_RTC_TIME 00000002 +SERIAL_OFF 000001DE +SERIAL_ON 000001EA +SMP 00000007 +SP0 00000000 +SP1 00000001 +SP2 00000002 +SP3 00000003 +SP4 00000004 +SPBRG 00000FAF +SPBRGH 00000FB0 +SPEN 00000007 +SREN 00000005 +SS 00000005 +SSPADD 00000FC8 +SSPBUF 00000FC9 +SSPCON1 00000FC6 +SSPCON2 00000FC5 +SSPEN 00000005 +SSPIE 00000003 +SSPIF 00000003 +SSPIP 00000003 +SSPM0 00000000 +SSPM1 00000001 +SSPM2 00000002 +SSPM3 00000003 +SSPOV 00000006 +SSPSTAT 00000FC7 +STATUS 00000FD8 +STKFUL 00000007 +STKOVF 00000007 +STKPTR 00000FFC +STKUNF 00000006 +STUNDEN 00000504 +SWDTE 00000000 +SWDTEN 00000000 +SYNC 00000004 +SYNC1 000000FF +SYNC1_DATA 00000041 + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 29 + + +SYMBOL TABLE + LABEL VALUE + +SYNC2 000000FE +SYNC2_DATA 00000043 +SYNC3 000000FD +SYNC3_DATA 00000050 +SYNC4 000000FC +SYNC4_DATA 00000046 +T08BIT 00000006 +T0CKI 00000004 +T0CON 00000FD5 +T0CS 00000005 +T0IE 00000005 +T0IF 00000002 +T0PS0 00000000 +T0PS1 00000001 +T0PS2 00000002 +T0SE 00000004 +T13CKI 00000000 +T1CKI 00000000 +T1CKPS0 00000004 +T1CKPS1 00000005 +T1CON 00000FCD +T1OSCEN 00000003 +T1OSI 00000001 +T1OSO 00000000 +T1RUN 00000006 +T1SYNC 00000002 +T2CKPS0 00000000 +T2CKPS1 00000001 +T2CON 00000FCA +T2OUTPS0 00000003 +T2OUTPS1 00000004 +T2OUTPS2 00000005 +T2OUTPS3 00000006 +T3CCP1 00000003 +T3CCP2 00000006 +T3CKPS0 00000004 +T3CKPS1 00000005 +T3CON 00000FB1 +T3SYNC 00000002 +TABLAT 00000FF5 +TAGE_UND_TAG_DER_WOCHE 0000050E +TASTE 00000208 +TASTE_OFF_TIME 00000043 +TASTE_ON_TIME 00000042 +TBLPTR 00000FF6 +TBLPTRH 00000FF7 +TBLPTRL 00000FF6 +TBLPTRU 00000FF8 +TG_END 00000250 +TG_JA 00000222 +TG_OFF_POWER 00000248 +TG_ON_POWER 0000022C +TG_ON_POWER2 00000238 + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 30 + + +SYMBOL TABLE + LABEL VALUE + +TG_ON_POWER3 0000023E +TICKS 00000041 +TIMER_HB 000000F0 +TIME_MAX 000000A0 +TMR0H 00000FD7 +TMR0IE 00000005 +TMR0IF 00000002 +TMR0IP 00000002 +TMR0L 00000FD6 +TMR0ON 00000007 +TMR1CS 00000001 +TMR1H 00000FCF +TMR1IE 00000000 +TMR1IF 00000000 +TMR1IP 00000000 +TMR1L 00000FCE +TMR1ON 00000000 +TMR2 00000FCC +TMR2IE 00000001 +TMR2IF 00000001 +TMR2IP 00000001 +TMR2ON 00000002 +TMR3CS 00000001 +TMR3H 00000FB3 +TMR3IE 00000001 +TMR3IF 00000001 +TMR3IP 00000001 +TMR3L 00000FB2 +TMR3ON 00000000 +TO 00000003 +TOS 00000FFD +TOSH 00000FFE +TOSL 00000FFD +TOSU 00000FFF +TRISA 00000F92 +TRISA0 00000000 +TRISA1 00000001 +TRISA2 00000002 +TRISA3 00000003 +TRISA4 00000004 +TRISA5 00000005 +TRISA6 00000006 +TRISA7 00000007 +TRISB 00000F93 +TRISB0 00000000 +TRISB1 00000001 +TRISB2 00000002 +TRISB3 00000003 +TRISB4 00000004 +TRISB5 00000005 +TRISB6 00000006 +TRISB7 00000007 +TRISC 00000F94 + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 31 + + +SYMBOL TABLE + LABEL VALUE + +TRISC0 00000000 +TRISC1 00000001 +TRISC2 00000002 +TRISC3 00000003 +TRISC4 00000004 +TRISC5 00000005 +TRISC6 00000006 +TRISC7 00000007 +TRISD 00000F95 +TRISD0 00000000 +TRISD1 00000001 +TRISD2 00000002 +TRISD3 00000003 +TRISD4 00000004 +TRISD5 00000005 +TRISD6 00000006 +TRISD7 00000007 +TRISE 00000F96 +TRISE0 00000000 +TRISE1 00000001 +TRISE2 00000002 +TRMT 00000001 +TUN0 00000000 +TUN1 00000001 +TUN2 00000002 +TUN3 00000003 +TUN4 00000004 +TX 00000006 +TX9 00000006 +TX9D 00000000 +TXCKP 00000004 +TXEN 00000005 +TXIE 00000004 +TXIF 00000004 +TXIP 00000004 +TXREG 00000FAD +TXSTA 00000FAC +TX_BUFFER 00000180 +TX_ISR 0000025E +TX_ISR1 00000276 +TX_ISR2 00000286 +TX_ISR_FERTIG 0000026E +TX_STATUS 0000004B +UA 00000001 +U_ERR 00000046 +U_ERR_PW_AUS 00000005 +U_ERR_TIME 00000047 +U_MIN_TO_MCF 00000003 +U_POWER_IN 00000048 +VCFG0 00000004 +VCFG1 00000005 +VDIRMAG 00000007 +VPP 00000003 + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 32 + + +SYMBOL TABLE + LABEL VALUE + +VREFN 00000002 +VREFP 00000003 +W 00000000 +WAIT_LVDOK 00000434 +WARTEN 000001A8 +WCOL 00000007 +WDTCON 00000FD1 +WR 00000001 +WREG 00000FE8 +WREN 00000002 +WRERR 00000003 +WRITE_BLOCK 000000A2 +WRITE_WORD_TO_HREGS 00000390 +WUE 00000001 +YEAR 0000053E +YEARS 00000009 +Z 00000002 +_BOREN_NOSLP_2L 000000FD +_BOREN_OFF_2L 000000F9 +_BOREN_ON_2L 000000FB +_BOREN_SBORDIS_2L 000000FF +_BORV_0_2L 000000E7 +_BORV_1_2L 000000EF +_BORV_2_2L 000000F7 +_BORV_3_2L 000000FF +_CCP2MX_PORTBE_3H 000000FE +_CCP2MX_PORTC_3H 000000FF +_CONFIG1H 00300001 +_CONFIG2H 00300003 +_CONFIG2L 00300002 +_CONFIG3H 00300005 +_CONFIG4L 00300006 +_CONFIG5H 00300009 +_CONFIG5L 00300008 +_CONFIG6H 0030000B +_CONFIG6L 0030000A +_CONFIG7H 0030000D +_CONFIG7L 0030000C +_CP0_OFF_5L 000000FF +_CP0_ON_5L 000000FE +_CP1_OFF_5L 000000FF +_CP1_ON_5L 000000FD +_CP2_OFF_5L 000000FF +_CP2_ON_5L 000000FB +_CP3_OFF_5L 000000FF +_CP3_ON_5L 000000F7 +_CPB_OFF_5H 000000FF +_CPB_ON_5H 000000BF +_CPD_OFF_5H 000000FF +_CPD_ON_5H 0000007F +_DEBUG_OFF_4L 000000FF +_DEBUG_ON_4L 0000007F +_DEVID1 003FFFFE + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 33 + + +SYMBOL TABLE + LABEL VALUE + +_DEVID2 003FFFFF +_EBTR0_OFF_7L 000000FF +_EBTR0_ON_7L 000000FE +_EBTR1_OFF_7L 000000FF +_EBTR1_ON_7L 000000FD +_EBTR2_OFF_7L 000000FF +_EBTR2_ON_7L 000000FB +_EBTR3_OFF_7L 000000FF +_EBTR3_ON_7L 000000F7 +_EBTRB_OFF_7H 000000FF +_EBTRB_ON_7H 000000BF +_FCMEN_OFF_1H 000000BF +_FCMEN_ON_1H 000000FF +_IDLOC0 00200000 +_IDLOC1 00200001 +_IDLOC2 00200002 +_IDLOC3 00200003 +_IDLOC4 00200004 +_IDLOC5 00200005 +_IDLOC6 00200006 +_IDLOC7 00200007 +_IESO_OFF_1H 0000007F +_IESO_ON_1H 000000FF +_LPT1OSC_OFF_3H 000000FB +_LPT1OSC_ON_3H 000000FF +_LVP_OFF_4L 000000FB +_LVP_ON_4L 000000FF +_MCLRE_OFF_3H 0000007F +_MCLRE_ON_3H 000000FF +_OSC_ECIO6_1H 000000F5 +_OSC_EC_1H 000000F4 +_OSC_HSPLL_1H 000000F6 +_OSC_HS_1H 000000F2 +_OSC_INTIO67_1H 000000F8 +_OSC_INTIO7_1H 000000F9 +_OSC_LP_1H 000000F0 +_OSC_RCIO6_1H 000000F7 +_OSC_RC_1H 000000F3 +_OSC_XT_1H 000000F1 +_PBADEN_OFF_3H 000000FD +_PBADEN_ON_3H 000000FF +_PWRT_OFF_2L 000000FF +_PWRT_ON_2L 000000FE +_STVREN_OFF_4L 000000FE +_STVREN_ON_4L 000000FF +_WDTPS_1024_2H 000000F5 +_WDTPS_128_2H 000000EF +_WDTPS_16384_2H 000000FD +_WDTPS_16_2H 000000E9 +_WDTPS_1_2H 000000E1 +_WDTPS_2048_2H 000000F7 +_WDTPS_256_2H 000000F1 +_WDTPS_2_2H 000000E3 + MPASM 5.35 FIREBEE1.ASM 10-1-2010 13:06:42 PAGE 34 + + +SYMBOL TABLE + LABEL VALUE + +_WDTPS_32768_2H 000000FF +_WDTPS_32_2H 000000EB +_WDTPS_4096_2H 000000F9 +_WDTPS_4_2H 000000E5 +_WDTPS_512_2H 000000F3 +_WDTPS_64_2H 000000ED +_WDTPS_8192_2H 000000FB +_WDTPS_8_2H 000000E7 +_WDT_OFF_2H 000000FE +_WDT_ON_2H 000000FF +_WRT0_OFF_6L 000000FF +_WRT0_ON_6L 000000FE +_WRT1_OFF_6L 000000FF +_WRT1_ON_6L 000000FD +_WRT2_OFF_6L 000000FF +_WRT2_ON_6L 000000FB +_WRT3_OFF_6L 000000FF +_WRT3_ON_6L 000000F7 +_WRTB_OFF_6H 000000FF +_WRTB_ON_6H 000000BF +_WRTC_OFF_6H 000000FF +_WRTC_ON_6H 000000DF +_WRTD_OFF_6H 000000FF +_WRTD_ON_6H 0000007F +_XINST_OFF_4L 000000BF +_XINST_ON_4L 000000FF +__18F4520 00000001 +free 00000040 + +Errors : 0 +Warnings : 0 reported, 0 suppressed +Messages : 0 reported, 0 suppressed + + \ No newline at end of file diff --git a/firebee1.map b/firebee1.map new file mode 100644 index 0000000..678b3b3 --- /dev/null +++ b/firebee1.map @@ -0,0 +1,188 @@ +MPLINK 4.35, Linker +Linker Map File - Created Fri Oct 01 13:06:43 2010 + + Section Info + Section Type Address Location Size(Bytes) + --------- --------- --------- --------- --------- + Reset_Vector code 0x000000 program 0x000002 + .cinit romdata 0x000002 program 0x000002 + HIGH_INT_VEC code 0x000008 program 0x000004 + LOW_INT_VEC code 0x000018 program 0x00004a + .code code 0x000100 program 0x00046c + + + + Program Memory Usage + Start End + --------- --------- + 0x000000 0x000003 + 0x000008 0x00000b + 0x000018 0x000061 + 0x000100 0x00056b + 1214 out of 33048 program addresses used, program memory utilization is 3% + + + + Symbols - Sorted by Name + Name Address Location Storage File + --------- --------- --------- --------- --------- + AD_ISR 0x00044c program static C:\FireBee\MLAB\firebee1\firebee1.asm + FEB 0x000526 program static C:\FireBee\MLAB\firebee1\firebee1.asm + HLVD_ISR 0x000424 program static C:\FireBee\MLAB\firebee1\firebee1.asm + HLVD_LE 0x00043c program static C:\FireBee\MLAB\firebee1\firebee1.asm + INT_HANDLER 0x000018 program static C:\FireBee\MLAB\firebee1\firebee1.asm + KALT_START 0x000100 program static C:\FireBee\MLAB\firebee1\firebee1.asm + LADESTROM 0x0001d2 program static C:\FireBee\MLAB\firebee1\firebee1.asm + LS_OFF_POWER 0x0001da program static C:\FireBee\MLAB\firebee1\firebee1.asm + LS_ON_POWER 0x0001d6 program static C:\FireBee\MLAB\firebee1\firebee1.asm + MAIN 0x00019e program static C:\FireBee\MLAB\firebee1\firebee1.asm + MAIN2 0x0001ae program static C:\FireBee\MLAB\firebee1\firebee1.asm + MEHR_ALS_28_TAGE 0x000520 program static C:\FireBee\MLAB\firebee1\firebee1.asm + MEHR_ALS_30_TAGE 0x00054c program static C:\FireBee\MLAB\firebee1\firebee1.asm + MINUTEN 0x0004fa program static C:\FireBee\MLAB\firebee1\firebee1.asm + NEXT_MONTH 0x000532 program static C:\FireBee\MLAB\firebee1\firebee1.asm + NON_SYNC 0x0003d2 program static C:\FireBee\MLAB\firebee1\firebee1.asm + NOT_APRIL 0x000554 program static C:\FireBee\MLAB\firebee1\firebee1.asm + NOT_FEB 0x000546 program static C:\FireBee\MLAB\firebee1\firebee1.asm + NOT_JUNI 0x00055c program static C:\FireBee\MLAB\firebee1\firebee1.asm + NOT_SEP 0x000564 program static C:\FireBee\MLAB\firebee1\firebee1.asm + NO_PROG 0x0003ac program static C:\FireBee\MLAB\firebee1\firebee1.asm + PINGS 0x000486 program static C:\FireBee\MLAB\firebee1\firebee1.asm + PINGS2 0x0004aa program static C:\FireBee\MLAB\firebee1\firebee1.asm + PINGW 0x000498 program static C:\FireBee\MLAB\firebee1\firebee1.asm + POWER_AUS 0x0001c2 program static C:\FireBee\MLAB\firebee1\firebee1.asm + POWER_EIN 0x0001b4 program static C:\FireBee\MLAB\firebee1\firebee1.asm + POWER_OFF_I 0x00046a program static C:\FireBee\MLAB\firebee1\firebee1.asm + POWER_OFF_I2 0x000478 program static C:\FireBee\MLAB\firebee1\firebee1.asm + PROGRAM_MEMORY 0x00039a program static C:\FireBee\MLAB\firebee1\firebee1.asm + RESETEN 0x000256 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RTC_ISR 0x000450 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_ISR 0x000288 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_ISR1 0x0002a4 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_ISR2 0x0002b0 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_ISR3 0x0002c8 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_ISR4 0x0002f6 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_ISR5 0x000304 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_ISR6 0x000312 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_ISR7 0x000350 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_ISR8 0x0003b0 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_ISR9 0x0003bc program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_RB3B2 0x000334 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_RB3BOK 0x000322 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_SYNC2 0x0003d8 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_SYNC3 0x0003ea program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_SYNC4 0x0003fc program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_SYNC_START 0x0003c0 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_WAIT1 0x000408 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_WAIT2 0x000410 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_WAIT3 0x000418 program static C:\FireBee\MLAB\firebee1\firebee1.asm + SCHALTJAHR 0x00052c program static C:\FireBee\MLAB\firebee1\firebee1.asm + SEKUNDEN 0x0004b0 program static C:\FireBee\MLAB\firebee1\firebee1.asm + SEK_2 0x0004ca program static C:\FireBee\MLAB\firebee1\firebee1.asm + SEK_3 0x0004dc program static C:\FireBee\MLAB\firebee1\firebee1.asm + SEK_4 0x0004f0 program static C:\FireBee\MLAB\firebee1\firebee1.asm + SEK_NPA 0x0004c4 program static C:\FireBee\MLAB\firebee1\firebee1.asm + SEND_RTC_REG 0x000232 program static C:\FireBee\MLAB\firebee1\firebee1.asm + SERIAL_OFF 0x0001de program static C:\FireBee\MLAB\firebee1\firebee1.asm + SERIAL_ON 0x0001ea program static C:\FireBee\MLAB\firebee1\firebee1.asm + STUNDEN 0x000504 program static C:\FireBee\MLAB\firebee1\firebee1.asm + TAGE_UND_TAG_DER_WOCHE 0x00050e program static C:\FireBee\MLAB\firebee1\firebee1.asm + TASTE 0x000208 program static C:\FireBee\MLAB\firebee1\firebee1.asm + TG_END 0x000250 program static C:\FireBee\MLAB\firebee1\firebee1.asm + TG_JA 0x000222 program static C:\FireBee\MLAB\firebee1\firebee1.asm + TG_OFF_POWER 0x000248 program static C:\FireBee\MLAB\firebee1\firebee1.asm + TG_ON_POWER 0x00022c program static C:\FireBee\MLAB\firebee1\firebee1.asm + TG_ON_POWER2 0x000238 program static C:\FireBee\MLAB\firebee1\firebee1.asm + TG_ON_POWER3 0x00023e program static C:\FireBee\MLAB\firebee1\firebee1.asm + TX_ISR 0x00025e program static C:\FireBee\MLAB\firebee1\firebee1.asm + TX_ISR1 0x000276 program static C:\FireBee\MLAB\firebee1\firebee1.asm + TX_ISR2 0x000286 program static C:\FireBee\MLAB\firebee1\firebee1.asm + TX_ISR_FERTIG 0x00026e program static C:\FireBee\MLAB\firebee1\firebee1.asm + WAIT_LVDOK 0x000434 program static C:\FireBee\MLAB\firebee1\firebee1.asm + WARTEN 0x0001a8 program static C:\FireBee\MLAB\firebee1\firebee1.asm + WRITE_WORD_TO_HREGS 0x000390 program static C:\FireBee\MLAB\firebee1\firebee1.asm + YEAR 0x00053e program static C:\FireBee\MLAB\firebee1\firebee1.asm + + + + Symbols - Sorted by Address + Name Address Location Storage File + --------- --------- --------- --------- --------- + INT_HANDLER 0x000018 program static C:\FireBee\MLAB\firebee1\firebee1.asm + KALT_START 0x000100 program static C:\FireBee\MLAB\firebee1\firebee1.asm + MAIN 0x00019e program static C:\FireBee\MLAB\firebee1\firebee1.asm + WARTEN 0x0001a8 program static C:\FireBee\MLAB\firebee1\firebee1.asm + MAIN2 0x0001ae program static C:\FireBee\MLAB\firebee1\firebee1.asm + POWER_EIN 0x0001b4 program static C:\FireBee\MLAB\firebee1\firebee1.asm + POWER_AUS 0x0001c2 program static C:\FireBee\MLAB\firebee1\firebee1.asm + LADESTROM 0x0001d2 program static C:\FireBee\MLAB\firebee1\firebee1.asm + LS_ON_POWER 0x0001d6 program static C:\FireBee\MLAB\firebee1\firebee1.asm + LS_OFF_POWER 0x0001da program static C:\FireBee\MLAB\firebee1\firebee1.asm + SERIAL_OFF 0x0001de program static C:\FireBee\MLAB\firebee1\firebee1.asm + SERIAL_ON 0x0001ea program static C:\FireBee\MLAB\firebee1\firebee1.asm + TASTE 0x000208 program static C:\FireBee\MLAB\firebee1\firebee1.asm + TG_JA 0x000222 program static C:\FireBee\MLAB\firebee1\firebee1.asm + TG_ON_POWER 0x00022c program static C:\FireBee\MLAB\firebee1\firebee1.asm + SEND_RTC_REG 0x000232 program static C:\FireBee\MLAB\firebee1\firebee1.asm + TG_ON_POWER2 0x000238 program static C:\FireBee\MLAB\firebee1\firebee1.asm + TG_ON_POWER3 0x00023e program static C:\FireBee\MLAB\firebee1\firebee1.asm + TG_OFF_POWER 0x000248 program static C:\FireBee\MLAB\firebee1\firebee1.asm + TG_END 0x000250 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RESETEN 0x000256 program static C:\FireBee\MLAB\firebee1\firebee1.asm + TX_ISR 0x00025e program static C:\FireBee\MLAB\firebee1\firebee1.asm + TX_ISR_FERTIG 0x00026e program static C:\FireBee\MLAB\firebee1\firebee1.asm + TX_ISR1 0x000276 program static C:\FireBee\MLAB\firebee1\firebee1.asm + TX_ISR2 0x000286 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_ISR 0x000288 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_ISR1 0x0002a4 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_ISR2 0x0002b0 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_ISR3 0x0002c8 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_ISR4 0x0002f6 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_ISR5 0x000304 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_ISR6 0x000312 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_RB3BOK 0x000322 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_RB3B2 0x000334 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_ISR7 0x000350 program static C:\FireBee\MLAB\firebee1\firebee1.asm + WRITE_WORD_TO_HREGS 0x000390 program static C:\FireBee\MLAB\firebee1\firebee1.asm + PROGRAM_MEMORY 0x00039a program static C:\FireBee\MLAB\firebee1\firebee1.asm + NO_PROG 0x0003ac program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_ISR8 0x0003b0 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_ISR9 0x0003bc program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_SYNC_START 0x0003c0 program static C:\FireBee\MLAB\firebee1\firebee1.asm + NON_SYNC 0x0003d2 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_SYNC2 0x0003d8 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_SYNC3 0x0003ea program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_SYNC4 0x0003fc program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_WAIT1 0x000408 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_WAIT2 0x000410 program static C:\FireBee\MLAB\firebee1\firebee1.asm + RX_WAIT3 0x000418 program static C:\FireBee\MLAB\firebee1\firebee1.asm + HLVD_ISR 0x000424 program static C:\FireBee\MLAB\firebee1\firebee1.asm + WAIT_LVDOK 0x000434 program static C:\FireBee\MLAB\firebee1\firebee1.asm + HLVD_LE 0x00043c program static C:\FireBee\MLAB\firebee1\firebee1.asm + AD_ISR 0x00044c program static C:\FireBee\MLAB\firebee1\firebee1.asm + RTC_ISR 0x000450 program static C:\FireBee\MLAB\firebee1\firebee1.asm + POWER_OFF_I 0x00046a program static C:\FireBee\MLAB\firebee1\firebee1.asm + POWER_OFF_I2 0x000478 program static C:\FireBee\MLAB\firebee1\firebee1.asm + PINGS 0x000486 program static C:\FireBee\MLAB\firebee1\firebee1.asm + PINGW 0x000498 program static C:\FireBee\MLAB\firebee1\firebee1.asm + PINGS2 0x0004aa program static C:\FireBee\MLAB\firebee1\firebee1.asm + SEKUNDEN 0x0004b0 program static C:\FireBee\MLAB\firebee1\firebee1.asm + SEK_NPA 0x0004c4 program static C:\FireBee\MLAB\firebee1\firebee1.asm + SEK_2 0x0004ca program static C:\FireBee\MLAB\firebee1\firebee1.asm + SEK_3 0x0004dc program static C:\FireBee\MLAB\firebee1\firebee1.asm + SEK_4 0x0004f0 program static C:\FireBee\MLAB\firebee1\firebee1.asm + MINUTEN 0x0004fa program static C:\FireBee\MLAB\firebee1\firebee1.asm + STUNDEN 0x000504 program static C:\FireBee\MLAB\firebee1\firebee1.asm + TAGE_UND_TAG_DER_WOCHE 0x00050e program static C:\FireBee\MLAB\firebee1\firebee1.asm + MEHR_ALS_28_TAGE 0x000520 program static C:\FireBee\MLAB\firebee1\firebee1.asm + FEB 0x000526 program static C:\FireBee\MLAB\firebee1\firebee1.asm + SCHALTJAHR 0x00052c program static C:\FireBee\MLAB\firebee1\firebee1.asm + NEXT_MONTH 0x000532 program static C:\FireBee\MLAB\firebee1\firebee1.asm + YEAR 0x00053e program static C:\FireBee\MLAB\firebee1\firebee1.asm + NOT_FEB 0x000546 program static C:\FireBee\MLAB\firebee1\firebee1.asm + MEHR_ALS_30_TAGE 0x00054c program static C:\FireBee\MLAB\firebee1\firebee1.asm + NOT_APRIL 0x000554 program static C:\FireBee\MLAB\firebee1\firebee1.asm + NOT_JUNI 0x00055c program static C:\FireBee\MLAB\firebee1\firebee1.asm + NOT_SEP 0x000564 program static C:\FireBee\MLAB\firebee1\firebee1.asm + + diff --git a/firebee1.mcp b/firebee1.mcp new file mode 100644 index 0000000..45e7dcc --- /dev/null +++ b/firebee1.mcp @@ -0,0 +1,53 @@ +[HEADER] +magic_cookie={66E99B07-E706-4689-9E80-9B2582898A13} +file_version=1.0 +device=PIC18F4520 +[PATH_INFO] +BuildDirPolicy=BuildDirIsProjectDir +dir_src= +dir_bin= +dir_tmp= +dir_sin= +dir_inc= +dir_lib= +dir_lkr= +[CAT_FILTERS] +filter_src=*.asm +filter_inc=*.h;*.inc +filter_obj=*.o +filter_lib=*.lib +filter_lkr=*.lkr +[CAT_SUBFOLDERS] +subfolder_src= +subfolder_inc= +subfolder_obj= +subfolder_lib= +subfolder_lkr= +[FILE_SUBFOLDERS] +file_000=. +file_001=. +[GENERATED_FILES] +file_000=no +file_001=no +[OTHER_FILES] +file_000=no +file_001=no +[FILE_INFO] +file_000=firebee1.asm +file_001=C:\Program Files (x86)\Microchip\MPASM Suite\LKR\18f4520_g.lkr +[SUITE_INFO] +suite_guid={6B3DAA78-59C1-46DD-B6AA-DBDAE4E06484} +suite_state= +[TOOL_SETTINGS] +TS{DD2213A8-6310-47B1-8376-9430CDFC013F}= +TS{BFD27FBA-4A02-4C0E-A5E5-B812F3E7707C}=/o"$(BINDIR_)$(TARGETBASE).cof" /M"$(BINDIR_)$(TARGETBASE).map" /W +TS{ADE93A55-C7C7-4D4D-A4BA-59305F7D0391}= +[INSTRUMENTED_TRACE] +enable=0 +transport=0 +format=0 +[CUSTOM_BUILD] +Pre-Build= +Pre-BuildEnabled=1 +Post-Build= +Post-BuildEnabled=1 diff --git a/firebee1.mcs b/firebee1.mcs new file mode 100644 index 0000000..242fa7b --- /dev/null +++ b/firebee1.mcs @@ -0,0 +1,71 @@ +[Header] +MagicCookie={0b13fe8c-dfe0-40eb-8900-6712719559a7} +Version=1.0 +[File000] +Location=C:\FireBee\MLAB\firebee1\firebee1.o +Folder=Intermediary +DeviceName=PIC18F4520 +LanguageToolSuiteID={6B3DAA78-59C1-46DD-B6AA-DBDAE4E06484} +LanguageToolID={49D3CA3F-D9A3-4518-9943-226A347E8CC7} +LanguageToolLocation=C:\Program Files (x86)\Microchip\MPASM Suite\MPASMWIN.exe +PPAD=$(BINDIR)||$(TMPDIR)||$(AINDIR)||$(INCDIR)||$(LIBDIR)||$(LKRDIR)|| +SOLK=|firebee1.asm|||||||C:\Program Files (x86)\Microchip\MPASM Suite\LKR\18f4520_g.lkr|| +SuiteArgsString= +ToolArgsString= +TraceCmdString= +DebugOptions= +[File001] +Location=C:\FireBee\MLAB\firebee1\firebee1.err +Folder=Intermediary +DeviceName=PIC18F4520 +LanguageToolSuiteID={6B3DAA78-59C1-46DD-B6AA-DBDAE4E06484} +LanguageToolID={49D3CA3F-D9A3-4518-9943-226A347E8CC7} +LanguageToolLocation=C:\Program Files (x86)\Microchip\MPASM Suite\MPASMWIN.exe +PPAD=$(BINDIR)||$(TMPDIR)||$(AINDIR)||$(INCDIR)||$(LIBDIR)||$(LKRDIR)|| +SOLK=|firebee1.asm|||||||C:\Program Files (x86)\Microchip\MPASM Suite\LKR\18f4520_g.lkr|| +SuiteArgsString= +ToolArgsString= +TraceCmdString= +DebugOptions= +[File002] +Location=C:\FireBee\MLAB\firebee1\firebee1.lst +Folder=Output +DeviceName=PIC18F4520 +LanguageToolSuiteID={6B3DAA78-59C1-46DD-B6AA-DBDAE4E06484} +LanguageToolID={49D3CA3F-D9A3-4518-9943-226A347E8CC7} +LanguageToolLocation=C:\Program Files (x86)\Microchip\MPASM Suite\MPASMWIN.exe +PPAD=$(BINDIR)||$(TMPDIR)||$(AINDIR)||$(INCDIR)||$(LIBDIR)||$(LKRDIR)|| +SOLK=|firebee1.asm|||||||C:\Program Files (x86)\Microchip\MPASM Suite\LKR\18f4520_g.lkr|| +SuiteArgsString= +ToolArgsString= +TraceCmdString= +DebugOptions= +[File003] +Location=C:\FireBee\MLAB\firebee1\firebee1.cof +Folder=Output +DeviceName=PIC18F4520 +LanguageToolSuiteID={6B3DAA78-59C1-46DD-B6AA-DBDAE4E06484} +LanguageToolID={96C98149-AA1B-4CF9-B967-FAE79CAB663C} +LanguageToolLocation=C:\Program Files (x86)\Microchip\MPASM Suite\mplink.exe +PPAD=$(BINDIR)||$(TMPDIR)||$(AINDIR)||$(INCDIR)||$(LIBDIR)||$(LKRDIR)|| +SOLK=|firebee1.asm|||||||C:\Program Files (x86)\Microchip\MPASM Suite\LKR\18f4520_g.lkr|| +SuiteArgsString= +ToolArgsString=/o"$(BINDIR_)$(TARGETBASE).cof" /M"$(BINDIR_)$(TARGETBASE).map" /W +TraceCmdString= +DebugOptions= +[File004] +Location=C:\FireBee\MLAB\firebee1\firebee1.hex +Folder=Output +DeviceName=PIC18F4520 +LanguageToolSuiteID={6B3DAA78-59C1-46DD-B6AA-DBDAE4E06484} +LanguageToolID={96C98149-AA1B-4CF9-B967-FAE79CAB663C} +LanguageToolLocation=C:\Program Files (x86)\Microchip\MPASM Suite\mplink.exe +PPAD=$(BINDIR)||$(TMPDIR)||$(AINDIR)||$(INCDIR)||$(LIBDIR)||$(LKRDIR)|| +SOLK=|firebee1.asm|||||||C:\Program Files (x86)\Microchip\MPASM Suite\LKR\18f4520_g.lkr|| +SuiteArgsString= +ToolArgsString=/o"$(BINDIR_)$(TARGETBASE).cof" /M"$(BINDIR_)$(TARGETBASE).map" /W +TraceCmdString= +DebugOptions= +[TOOL_LOC_STAMPS] +tool_loc{49D3CA3F-D9A3-4518-9943-226A347E8CC7}=C:\Program Files (x86)\Microchip\MPASM Suite\MPASMWIN.exe +tool_loc{96C98149-AA1B-4CF9-B967-FAE79CAB663C}=C:\Program Files (x86)\Microchip\MPASM Suite\mplink.exe diff --git a/firebee1.mcw b/firebee1.mcw new file mode 100644 index 0000000..74deeeb Binary files /dev/null and b/firebee1.mcw differ diff --git a/firebeei1.map b/firebeei1.map new file mode 100644 index 0000000..e12b3b5 --- /dev/null +++ b/firebeei1.map @@ -0,0 +1,156 @@ +MPLINK 4.33, Linker +Linker Map File - Created Mon Jan 11 14:35:58 2010 + + Section Info + Section Type Address Location Size(Bytes) + --------- --------- --------- --------- --------- + Reset_Vector code 0x000000 program 0x000004 + .cinit romdata 0x000004 program 0x000002 + LOW_INT_VEC code 0x000018 program 0x00004a + .code code 0x000100 program 0x00033c + + + + Program Memory Usage + Start End + --------- --------- + 0x000000 0x000005 + 0x000018 0x000061 + 0x000100 0x00043b + 908 out of 33048 program addresses used, program memory utilization is 2% + + + + Symbols - Sorted by Name + Name Address Location Storage File + --------- --------- --------- --------- --------- + AD_ISR 0x000326 program static C:\firebee\MLAB\firebee1\firebee1.asm + FEB 0x0003ee program static C:\firebee\MLAB\firebee1\firebee1.asm + HLVD_ISR 0x000300 program static C:\firebee\MLAB\firebee1\firebee1.asm + HLVD_LE 0x00031a program static C:\firebee\MLAB\firebee1\firebee1.asm + INT_HANDLER 0x00001e program static C:\firebee\MLAB\firebee1\firebee1.asm + INT_HANDLER2 0x00002e program static C:\firebee\MLAB\firebee1\firebee1.asm + KALT_START 0x000100 program static C:\firebee\MLAB\firebee1\firebee1.asm + LADESTROM 0x0001d2 program static C:\firebee\MLAB\firebee1\firebee1.asm + LS_OFF_POWER 0x0001de program static C:\firebee\MLAB\firebee1\firebee1.asm + LS_ON_POWER 0x0001d8 program static C:\firebee\MLAB\firebee1\firebee1.asm + MAIN 0x00019e program static C:\firebee\MLAB\firebee1\firebee1.asm + MEHR_ALS_28_TAGE 0x0003e6 program static C:\firebee\MLAB\firebee1\firebee1.asm + MEHR_ALS_30_TAGE 0x000414 program static C:\firebee\MLAB\firebee1\firebee1.asm + MINUTEN 0x0003c0 program static C:\firebee\MLAB\firebee1\firebee1.asm + NEXT_MONTH 0x0003fa program static C:\firebee\MLAB\firebee1\firebee1.asm + NON_SYNC 0x0002ae program static C:\firebee\MLAB\firebee1\firebee1.asm + NOT_APRIL 0x00041e program static C:\firebee\MLAB\firebee1\firebee1.asm + NOT_FEB 0x00040e program static C:\firebee\MLAB\firebee1\firebee1.asm + NOT_JUNI 0x000428 program static C:\firebee\MLAB\firebee1\firebee1.asm + NOT_SEP 0x000432 program static C:\firebee\MLAB\firebee1\firebee1.asm + PINGS 0x000368 program static C:\firebee\MLAB\firebee1\firebee1.asm + PINGS2 0x000380 program static C:\firebee\MLAB\firebee1\firebee1.asm + POWER_AUS 0x0001c0 program static C:\firebee\MLAB\firebee1\firebee1.asm + POWER_EIN 0x0001a6 program static C:\firebee\MLAB\firebee1\firebee1.asm + POWER_OFF_I 0x000346 program static C:\firebee\MLAB\firebee1\firebee1.asm + POWER_OFF_I2 0x000356 program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_ISR 0x000256 program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_ISR1 0x000268 program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_ISR2 0x000274 program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_RFM 0x000290 program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_RRFP 0x000280 program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_SYNC2 0x0002b4 program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_SYNC3 0x0002c6 program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_SYNC4 0x0002d8 program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_SYNC_START 0x00029c program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_UNBEK 0x00027c program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_WAIT1 0x0002e4 program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_WAIT2 0x0002ec program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_WAIT3 0x0002f4 program static C:\firebee\MLAB\firebee1\firebee1.asm + RESETEN 0x000232 program static C:\firebee\MLAB\firebee1\firebee1.asm + RTC_ISR 0x000326 program static C:\firebee\MLAB\firebee1\firebee1.asm + SCHALTJAHR 0x0003f4 program static C:\firebee\MLAB\firebee1\firebee1.asm + SEKUNDEN 0x000386 program static C:\firebee\MLAB\firebee1\firebee1.asm + SEK_2 0x0003ac program static C:\firebee\MLAB\firebee1\firebee1.asm + SEK_NPA 0x00039c program static C:\firebee\MLAB\firebee1\firebee1.asm + SEND_RTC_REG 0x00020c program static C:\firebee\MLAB\firebee1\firebee1.asm + STUNDEN 0x0003ca program static C:\firebee\MLAB\firebee1\firebee1.asm + TAGE_UND_TAG_DER_WOCHE 0x0003d4 program static C:\firebee\MLAB\firebee1\firebee1.asm + TASTE 0x0001e4 program static C:\firebee\MLAB\firebee1\firebee1.asm + TG_END 0x00022c program static C:\firebee\MLAB\firebee1\firebee1.asm + TG_JA 0x0001fa program static C:\firebee\MLAB\firebee1\firebee1.asm + TG_OFF_POWER 0x000224 program static C:\firebee\MLAB\firebee1\firebee1.asm + TG_ON_POWER 0x000206 program static C:\firebee\MLAB\firebee1\firebee1.asm + TG_ON_POWER2 0x000212 program static C:\firebee\MLAB\firebee1\firebee1.asm + TG_ON_POWER3 0x000218 program static C:\firebee\MLAB\firebee1\firebee1.asm + TX_ISR 0x00023c program static C:\firebee\MLAB\firebee1\firebee1.asm + TX_ISR1 0x000254 program static C:\firebee\MLAB\firebee1\firebee1.asm + TX_ISR_FERTIG 0x00024c program static C:\firebee\MLAB\firebee1\firebee1.asm + WAIT_LVDOK 0x000312 program static C:\firebee\MLAB\firebee1\firebee1.asm + WARTEN 0x0001a0 program static C:\firebee\MLAB\firebee1\firebee1.asm + YEAR 0x000406 program static C:\firebee\MLAB\firebee1\firebee1.asm + + + + Symbols - Sorted by Address + Name Address Location Storage File + --------- --------- --------- --------- --------- + INT_HANDLER 0x00001e program static C:\firebee\MLAB\firebee1\firebee1.asm + INT_HANDLER2 0x00002e program static C:\firebee\MLAB\firebee1\firebee1.asm + KALT_START 0x000100 program static C:\firebee\MLAB\firebee1\firebee1.asm + MAIN 0x00019e program static C:\firebee\MLAB\firebee1\firebee1.asm + WARTEN 0x0001a0 program static C:\firebee\MLAB\firebee1\firebee1.asm + POWER_EIN 0x0001a6 program static C:\firebee\MLAB\firebee1\firebee1.asm + POWER_AUS 0x0001c0 program static C:\firebee\MLAB\firebee1\firebee1.asm + LADESTROM 0x0001d2 program static C:\firebee\MLAB\firebee1\firebee1.asm + LS_ON_POWER 0x0001d8 program static C:\firebee\MLAB\firebee1\firebee1.asm + LS_OFF_POWER 0x0001de program static C:\firebee\MLAB\firebee1\firebee1.asm + TASTE 0x0001e4 program static C:\firebee\MLAB\firebee1\firebee1.asm + TG_JA 0x0001fa program static C:\firebee\MLAB\firebee1\firebee1.asm + TG_ON_POWER 0x000206 program static C:\firebee\MLAB\firebee1\firebee1.asm + SEND_RTC_REG 0x00020c program static C:\firebee\MLAB\firebee1\firebee1.asm + TG_ON_POWER2 0x000212 program static C:\firebee\MLAB\firebee1\firebee1.asm + TG_ON_POWER3 0x000218 program static C:\firebee\MLAB\firebee1\firebee1.asm + TG_OFF_POWER 0x000224 program static C:\firebee\MLAB\firebee1\firebee1.asm + TG_END 0x00022c program static C:\firebee\MLAB\firebee1\firebee1.asm + RESETEN 0x000232 program static C:\firebee\MLAB\firebee1\firebee1.asm + TX_ISR 0x00023c program static C:\firebee\MLAB\firebee1\firebee1.asm + TX_ISR_FERTIG 0x00024c program static C:\firebee\MLAB\firebee1\firebee1.asm + TX_ISR1 0x000254 program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_ISR 0x000256 program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_ISR1 0x000268 program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_ISR2 0x000274 program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_UNBEK 0x00027c program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_RRFP 0x000280 program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_RFM 0x000290 program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_SYNC_START 0x00029c program static C:\firebee\MLAB\firebee1\firebee1.asm + NON_SYNC 0x0002ae program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_SYNC2 0x0002b4 program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_SYNC3 0x0002c6 program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_SYNC4 0x0002d8 program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_WAIT1 0x0002e4 program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_WAIT2 0x0002ec program static C:\firebee\MLAB\firebee1\firebee1.asm + RC_WAIT3 0x0002f4 program static C:\firebee\MLAB\firebee1\firebee1.asm + HLVD_ISR 0x000300 program static C:\firebee\MLAB\firebee1\firebee1.asm + WAIT_LVDOK 0x000312 program static C:\firebee\MLAB\firebee1\firebee1.asm + HLVD_LE 0x00031a program static C:\firebee\MLAB\firebee1\firebee1.asm + RTC_ISR 0x000326 program static C:\firebee\MLAB\firebee1\firebee1.asm + AD_ISR 0x000326 program static C:\firebee\MLAB\firebee1\firebee1.asm + POWER_OFF_I 0x000346 program static C:\firebee\MLAB\firebee1\firebee1.asm + POWER_OFF_I2 0x000356 program static C:\firebee\MLAB\firebee1\firebee1.asm + PINGS 0x000368 program static C:\firebee\MLAB\firebee1\firebee1.asm + PINGS2 0x000380 program static C:\firebee\MLAB\firebee1\firebee1.asm + SEKUNDEN 0x000386 program static C:\firebee\MLAB\firebee1\firebee1.asm + SEK_NPA 0x00039c program static C:\firebee\MLAB\firebee1\firebee1.asm + SEK_2 0x0003ac program static C:\firebee\MLAB\firebee1\firebee1.asm + MINUTEN 0x0003c0 program static C:\firebee\MLAB\firebee1\firebee1.asm + STUNDEN 0x0003ca program static C:\firebee\MLAB\firebee1\firebee1.asm + TAGE_UND_TAG_DER_WOCHE 0x0003d4 program static C:\firebee\MLAB\firebee1\firebee1.asm + MEHR_ALS_28_TAGE 0x0003e6 program static C:\firebee\MLAB\firebee1\firebee1.asm + FEB 0x0003ee program static C:\firebee\MLAB\firebee1\firebee1.asm + SCHALTJAHR 0x0003f4 program static C:\firebee\MLAB\firebee1\firebee1.asm + NEXT_MONTH 0x0003fa program static C:\firebee\MLAB\firebee1\firebee1.asm + YEAR 0x000406 program static C:\firebee\MLAB\firebee1\firebee1.asm + NOT_FEB 0x00040e program static C:\firebee\MLAB\firebee1\firebee1.asm + MEHR_ALS_30_TAGE 0x000414 program static C:\firebee\MLAB\firebee1\firebee1.asm + NOT_APRIL 0x00041e program static C:\firebee\MLAB\firebee1\firebee1.asm + NOT_JUNI 0x000428 program static C:\firebee\MLAB\firebee1\firebee1.asm + NOT_SEP 0x000432 program static C:\firebee\MLAB\firebee1\firebee1.asm + + diff --git a/readme.txt b/readme.txt new file mode 100644 index 0000000..4f5b8f3 --- /dev/null +++ b/readme.txt @@ -0,0 +1,125 @@ + PS2 -> Atari /Amiga Mouse Adapter + ~~~~~~~~~~~~~~~~~~~~~~~ + + + Version 1.4 July 2010 + + +Due to the short supply of mice for the Atari computers I decided to build an adapter that would allow me to use a serial mouse on my Atari, but even these are getting a bit old now, so I got the soldering iron out again and here's the result. A PS2 Mouse adapter for the Atari. It supports a standard PS2 mouse with 2 or 3 buttons and can also be used with the Microsoft optical IntelliMouse that comes with a USB to PS2 adapter. The middle button on the PS2 mouse is used as a left click and hold function for easy selection. Click the middle button again to release. Now for the bad news, for some reason Microsoft mice don't support the middle button in standard PS2 mode. :-( + +Please don't shout at me all you Atari users but as an added feature if you change a link then the adapter can be used with an Amiga as well. + + +All files, programs etc contained in this archive are copright 2010 by Tom Kirk. Personal use is allowed but any commercial use is not allowed. Please feel free to use my work but don't rip me off. + + + + Files in this archive. + ~~~~~~~~~~~~~~~~~~~~~~ + +readme.txt This text file +circuit.bmp Picture of circuit in bitmap format +PS2Atari_v1_4.hex Object code of the PIC16F84 program in Intel hex +PS2Atari_v1_4.asm Source code of the PIC16F84 program +pcbtop.bmp Top layer of the PCB in bitmap format +pcbbot.bmp Bottom layer of the PCB in bitmap format + + + + Technical Details. + ~~~~~~~~~~~~~~~~~~ + +When the PS2 mouse is moved or a button changes state a packet of data is sent, my circuit decodes this data and then simulates the Atari mouse. + +The circuit consists of a single microcontroller that contains a program to do the conversion. The circuit is shown in the file circuit.bmp + +The microcontroller (PIC) can be either a PIC16C84 or PIC16F84 or PIC16F84A. + +The PIC (IC1) needs to be programmed with the program. +The program is supplied in two forms PS2Atari_v1_4.hex is an object code file in Intel hex and can be read by most programmers capable of programming the PIC + +PS2Atari_v1_4.asm is the source code of the program and can be assembled with the free MPLAB / MPASM software from Microchip if you wish to create your own object file. Note needs "Disable case sensitivity" under build options setting in MPLAB to assemble without errors. + +The PIC should be programmed with oscillator as XT, watchdog disabled, powerup timer enabled and code protection off. (No point code protecting a freely available program.) + +The source code and object code is compatible with all the PIC microcontrollers listed above. + +I've built mine using a printed circuit board but it's small enough to be built using a small piece of stripboard. + +On my PCB I have a 6 pin mini din socket at one end and a 9 pin D type socket at the other. I can then use a standard port extender lead to connect to the Atari. I've found that a 9 pin PC serial extension lead can also be used for this as well if you remove the fastening screws. + +If you decide to build one on a piece of stripboard it will be easier to use cable mounted sockets as PCB types don't fit onto a stripboard. + +Once built the board can be mounted into a small plastic box. + +No special software is required on the Atari and it will work with all software. +Your favourite mouse accelerator program may be used if required. + + + + Parts list. + ~~~~~~~~~~~ + +IC1 PIC16F84A or PIC16F84 or PIC16C84 + +Fi1 4 MHz Ceramic resonator + +R1 10K +R2 10K + +C1 4.7 uF +C2 0.1 uF + +All capacitors should be rated at 16V or more. + +CN1 6 pin mini din PCB mounting socket +CN2 9 Pin D type PCB mounting socket + + +JP1 3 pin header and 2 way link + + +If building on a piece of stripboard I suggest using cable mounting types of connectors and use a small piece of multicore cable between the sockets and the stripboard. You will find the PCB sockets do not fit on a piece of stripboard. + +If you don't need the switchable Atari/Amiga support forget the 3 pin header and just use a wire link instead. + + + + History. + ~~~~~~~~ + +Version 1.4 July 2010 +Unused Pin RA4 now correctly set as an imput. +(Pin is tied to +5V on PCB for easier PCB routing.) +My oversight when transfering from prototype to PCB. +Thanks to Luciano for informing me. + +Version 1.3 Released March 2010 +Corrected a bug in button routine preventing both buttons being active together under certain conditions. +Thanks to Oliver Fleischmann for informing me. +(Can't believe it taken 6 Years for this bug to show itself!!) + +Version 1.2 Released March 2009 +Changed left/right button outputs to fake open collector. +Needed to stop conflits when using a joystick pluged into other port. + +Version 1.1 Released September 2004. +Added support for the Amiga and added the middle button support. + +Version 1.0 Never released. +My original version for the Atari only. + + + + Help. + ~~~~~ + +If you need further information or help then contact me at tgkirk@aol.com + +Please allow a few days for a reply as I have other commitments as well. + + Tom Kirk July 2010 + +P.S. I also have on my web site a Playstation controller to Atari adapter and a PC viewer for Atari format picture files. + + http://www.tgkirk.110mb.com