;--------------------------------------------------------------------------------
;--- Title: Aquarium Logger
;--- Date: 05-03-02
;---
;--- By: Mike Woods
;--- Desc: Reads the temperature and pH from the aquarium and send the values
;--- out the serial port to a computer. The PC then updates a Database
;--- where the results can be viewed from a webpage with graphs from
;--- any date/time. Eventually I would like to add more features like
;--- Lighting, feeding, etc....
;--------------------------------------------------------------------------------
;AQ.BAS
DEVICE SX28L,TURBO,STACKX_OPTIONX
FREQ 50000000
; Equate Section
_OPT EQU $40 ;OPTION FUSE
_NCOMP EQU $E.0 ;_FLAGS._NCOMP
_DLY EQU $E.1 ;_FLAGS._DLY
_ACK EQU $E.2 ;_FLAGS._ACK
_TIMO EQU $E.3 ;_FLAGS._TIMO
_RTS EQU $E.4 ;_FLAGS._RTS
ADCD1_ EQU $7.5
ADCCK1_ EQU $7.6
ADCCS1_ EQU $7.7
D1W_ EQU $7.4
PRESENCE EQU $37.0
TX EQU $7.2
_WACC EQU $1
; Data Section
ORG $8 ;BANK 0
_ACCA DS $2
_ACCB DS $2
_ACCC DS $2
_FLAGS DS $1
_TEMP DS $1
_IPTEN DS $1
_IPTCNT DS $1
_OPTION DS $1
_IPTEDGE DS $1
_RADIR DS $1
_RBDIR DS $1
_RCDIR DS $1
_IPTSAVE DS $7
_PORTA DS $1
_PORTB DS $1
ORG $30 ;BANK 1
_RX0 DS $1
_RX1 DS $1
_RX2 DS $1
_RX3 DS $1
_F1 DS $1 ;D1RS_
ADC_DATA DS $1
TEMP_DATA DS $1
X DS $1
I DS $1
ADCCNT1_ DS $1
; Code Section
ORG $0
;START OF USER CODE
_MAIN
CALL @__INIT
MOV M,#$0D
MOV W,#$E0
MOV !RC,W
CALL @__DINIT
DINIT
SETB ADCCS1_
CLRB ADCCK1_
MOV M,#$0F
BANK $12
CLRB _RCDIR.7
MOV W,_RCDIR
MOV !RC,W
MOV M,#$0F
CLRB _RCDIR.6
MOV W,_RCDIR
MOV !RC,W
CALL @__CONFIG_D1W_
RETP
_CONFIG_D1W_
CALL @__D1RS_
BANK $34
MOV W,_F1
CLRB PRESENCE
TEST _WACC
SZ
SETB PRESENCE
MOV W,#$CC
TEST _WACC
SZ
SETB D1W_
SNZ
CLRB D1W_
MOV W,#$4E
TEST _WACC
SZ
SETB D1W_
SNZ
CLRB D1W_
MOV W,#$1
MOV I,W
_X1
BANK $38
MOV W,I
MOV _ACCC,W
MOV W,#$3
MOV W,_ACCC-W
CALL @__GT
TEST _WACC
PAGE _X3
SNZ
JMP _X3
JMP @_X2
_X3
MOV W,#$7F
TEST _WACC
SZ
SETB D1W_
SNZ
CLRB D1W_
BANK $38
PAGE _X1
INCSZ $38
JMP _X1
_X2
CALL @__D1RS_
BANK $34
MOV W,_F1
CLRB PRESENCE
TEST _WACC
SZ
SETB PRESENCE
MOV W,#$CC
TEST _WACC
SZ
SETB D1W_
SNZ
CLRB D1W_
MOV W,#$48
TEST _WACC
SZ
SETB D1W_
SNZ
CLRB D1W_
SETB D1W_
MOV _ACCA,#$10
MOV _ACCA+1,#$27
SETB _DLY
CALL @_DELAY
CLRB D1W_
RETP
_ADC1_
CLRB ADCCS1_
MOV W,#$8
BANK $39
MOV ADCCNT1_,W
_X4
CLC
SNB ADCD1_
STC
BANK $35
RL $35
SETB ADCCK1_
MOV W,#$1
CALL @_DELAYZ
NOP
NOP
NOP
CLRB ADCCK1_
NOP
NOP
NOP
NOP
NOP
NOP
PAGE _X4
DECSZ $39
JMP _X4
_X5
NOP
NOP
CLC
SNB ADCD1_
STC
BANK $35
RL $35
MOV W,#$2
MOV ADCCNT1_,W
_X8
SETB ADCCK1_
MOV W,#$1
CALL @_DELAYZ
NOP
NOP
NOP
CLRB ADCCK1_
MOV W,#$1
CALL @_DELAYZ
PAGE _X8
BANK $39
DECSZ $39
JMP _X8
_X9
SETB ADCCS1_
RETP
_D1RS_
CLRB D1W_
MOV W,#$30
SETB _DLY
CALL @_DELAYX
SETB D1W_
MOV W,#$6
SETB _DLY
CALL @_DELAYX
BANK $37
SNB D1W_
SETB PRESENCE
SB D1W_
CLRB PRESENCE
MOV W,#$2A
SETB _DLY
CALL @_DELAYX
RETP
_TEMP1_
CALL @__D1RS_
BANK $34
MOV W,_F1
CLRB PRESENCE
TEST _WACC
SZ
SETB PRESENCE
MOV W,#$CC
TEST _WACC
SZ
SETB D1W_
SNZ
CLRB D1W_
MOV W,#$44
TEST _WACC
SZ
SETB D1W_
SNZ
CLRB D1W_
SETB D1W_
MOV _ACCA,#$E8
MOV _ACCA+1,#$FD
SETB _DLY
CALL @_DELAY
MOV _ACCA,#$10
MOV _ACCA+1,#$27
SETB _DLY
CALL @_DELAY
CLRB D1W_
MOV W,#$CC
TEST _WACC
SZ
SETB D1W_
SNZ
CLRB D1W_
MOV W,#$8E
TEST _WACC
SZ
SETB D1W_
SNZ
CLRB D1W_
MOV W,#$10
PAGE _X13
_X13
CLC
SNB D1W_
STC
RL $36
DECSZ _WACC
JMP _X13
RETP
LOOP1
CALL @__ADC1_
CALL @__TEMP1_
MOV _ACCC,#510&$FF
MOV _ACCC+1,#510>>8
BANK $12
MOV _PORTA,#$FB
BANK $35
MOV _ACCB,$35
MOV FSR,#$7
CALL @__SEROUTY
MOV _ACCC,#510&$FF
MOV _ACCC+1,#510>>8
BANK $12
MOV _PORTA,#$FB
MOV _ACCB,#$7C
MOV FSR,#$7
CALL @__SEROUTY
MOV _ACCC,#510&$FF
MOV _ACCC+1,#510>>8
BANK $12
MOV _PORTA,#$FB
BANK $36
MOV _ACCB,$36
MOV FSR,#$7
CALL @__SEROUTY
MOV _ACCC,#510&$FF
MOV _ACCC+1,#510>>8
BANK $12
MOV _PORTA,#$FB
MOV _ACCB,#$7E
MOV FSR,#$7
CALL @__SEROUTY
MOV W,#$1
BANK $38
MOV I,W
_X14
BANK $38
MOV W,I
MOV _ACCC,W
MOV W,#$A
MOV W,_ACCC-W
CALL @__GT
TEST _WACC
PAGE _X16
SNZ
JMP _X16
JMP @_X15
_X16
MOV _ACCA,#$60
MOV _ACCA+1,#$EA
MOV _ACCC,_ACCA
MOV _ACCC+1,_ACCA+1
CALL @__WDELAY
BANK $38
PAGE _X14
INCSZ $38
JMP _X14
_X15
JMP @LOOP1
;
; Copyright @2002 Sxwiz
; _INIT: COLD START INITIALIZATION
_INIT
BANK $12
MOV W,#$FF
MOV _IPTEN,W
MOV _IPTEDGE,W
MOV _RADIR,W
MOV _RBDIR,W
MOV _RCDIR,W
MOV W,#$40
MOV _OPTION,W
MOV !OPTION,W
RETP
;
; Copyright @2002 Sxwiz
; _GT: UNSIGNED RETURN W=$00 (FALSE) IF <=0 ELSE W=$FF (TRUE)
_GT
MOV W,#0
SNZ
RETP
SC
RETP
MOV W,#$FF
RETP
;
; Copyright @2002 Sxwiz
; ACCC+1:ACCC=1.0 BT+1*200NS, W=DATA, INVERTED START=0
_SEROUTY
MOV M,#$0F
MOV _TEMP,#8
MOV W,_PORTA
AND IND,W
CALL @__PORTDC
_SERY1
MOV _ACCA,_ACCC
MOV _ACCA+1,_ACCC+1
CALL @_DELAYY
RR _ACCB
PAGE _SERY2
SNC
JMP _SERY2
CALL @__PORTDC
JMP @_SERY3
_SERY2
CALL @__PORTDS
_SERY3
PAGE _SERY1
DECSZ _TEMP
JMP _SERY1
MOV _ACCA,_ACCC
MOV _ACCA+1,_ACCC+1
CALL @_DELAYY
CALL @__PORTDS
MOV _ACCA,_ACCC
MOV _ACCA+1,_ACCC+1
CALL @_DELAYY
RETP
;
; Copyright @2002 Sxwiz
; PORTDS_: SET PORT DIR INPUT, FSR=PORT, _PORTA=BIT
; PORTDC_: SET PORT DIR OUTPUT, FSR=PORT, _PORTA=BIT
_PORTDS
MOV W,#5
MOV W,FSR-W
PAGE _PORTDS1
SNZ
JMP _PORTDS1
PAGE _PORTDS2
DECSZ _WACC
JMP _PORTDS2
MOV W,/_PORTA
OR W,_RBDIR
MOV _RBDIR,W
MOV !RB,W
RETP
_PORTDS1
MOV W,/_PORTA
OR W,_RADIR
MOV _RADIR,W
MOV !RA,W
RETP
_PORTDS2
MOV W,/_PORTA
OR W,_RCDIR
MOV _RCDIR,W
MOV !RC,W
RETP
_PORTDC
MOV W,#5
MOV W,FSR-W
PAGE _PORTDC1
SNZ
JMP _PORTDC1
PAGE _PORTDC2
DECSZ _WACC
JMP _PORTDC2
MOV W,_PORTA
AND W,_RBDIR
MOV _RBDIR,W
MOV !RB,W
RETP
_PORTDC1
MOV W,_PORTA
AND W,_RADIR
MOV _RADIR,W
MOV !RA,W
RETP
_PORTDC2
MOV W,_PORTA
AND W,_RCDIR
MOV _RCDIR,W
MOV !RC,W
RETP
;
; Copyright @2002 Sxwiz
; DELAY 0.1S * _ACCC+1:_ACCC
_WDELAY
SETB _DLY
_WDELAY1
MOV _ACCA,#$10
MOV _ACCA+1,#$27
CALL @_DELAY
MOV W,#1
SUB _ACCC,W
SC
SUB _ACCC+1,W
TEST _ACCC+1
SNZ
TEST _ACCC
SNZ
RETP
JMP @_WDELAY1
;ZERO PAGE CODE
ORG $200
PAGE _DELAYZ
DECSZ _WACC
JMP _DELAYZ
RETP
;
; Copyright @2002 Sxwiz
; _DELAYY: DELAY (1+ACCA+1:ACCA)*200NS INCLUDING CALL-RTN
_DELAYY
MOV W,#1
NOP
NOP
NOP
NOP
PAGE _DELAYA
_DELAYA
SUB _ACCA,W
SC
SUB _ACCA+1,W
TEST _ACCA+1
SNZ
TEST _ACCA
SZ
JMP _DELAYA
RETP
;
; Copyright @2002 Sxwiz
; _DELAYX: 1us * W (_DLY CLR)
; 10us * W (_DLY SET)
; _DELAY: 1us * _ACCA+1:_ACCA (_DLY CLR)
; 10us * _ACCA+1:_ACCA (_DLY SET)
_DELAYX
CLR _ACCA+1
MOV _ACCA,W
_DELAY
MOV W,#97
SB _DLY
MOV W,#7
_DELAY1
PAGE _DELAY1
DECSZ _WACC
JMP _DELAY1
CLR !WDT
MOV W,#1
SUB _ACCA,W
SC
SUB _ACCA+1,W
TEST _ACCA+1
SNZ
TEST _ACCA
SNZ
RETP
JMP @_DELAY
;
__INIT
JMP @_INIT
__CONFIG_D1W_
JMP @_CONFIG_D1W_
__D1RS_
JMP @_D1RS_
__GT
JMP @_GT
__ADC1_
JMP @_ADC1_
__TEMP1_
JMP @_TEMP1_
__SEROUTY
JMP @_SEROUTY
__PORTDC
JMP @_PORTDC
__PORTDS
JMP @_PORTDS
__WDELAY
JMP @_WDELAY
;
; Copyright @2002 Sxwiz
; _DELAYZ: W+1*100NS DELAY (W>0) INCLUDING CALL
_DELAYZ
__DINIT
JMP @DINIT
;END OF ZERO PAGE CODE
; Reset Vector
ORG $7FF
JMP _MAIN
END
file: /Techref/scenix/contest/aquamon/Aq_src.txt, 9KB, , updated: 2002/6/4 10:34, local time: 2024/11/19 19:28,
|
| ©2024 These pages are served without commercial sponsorship. (No popup ads, etc...).Bandwidth abuse increases hosting cost forcing sponsorship or shutdown. This server aggressively defends against automated copying for any reason including offline viewing, duplication, etc... Please respect this requirement and DO NOT RIP THIS SITE. Questions? <A HREF="http://linistepper.com/Techref/scenix/contest/aquamon/Aq_src.txt"> scenix contest aquamon Aq_src</A> |
Did you find what you needed?
|