Information

page 6
Released 10/2008 Rights reserv ed f or change in technical data! HYGROSENS INSTRUMENTS GmbH Postf ach 1054 D-79839 Löf f ingen Tel: +49 7654 808969-0 Fax: +49 7654 808969-9
ZACWIRE
TM
DIGITAL OUTPUT
2 Appendix A: An Example of PIC1 Assembly Code for
Reading the ZACwire™
In the following code example, it is assumed that the ZACwire™ pin is connected to
the interrupt pin (PORTB, 0) of the PIC and that the interrupt is configured for falling
edge interruption. This code should work for a PIC running between 2-12MHz.
TEMP_HIGH EQU 0X24 ;; MEMORY LOCATION RESERVED
FOR TEMP HIGH BYTE
TEMP_LOW EQU 0X25 ;; MEMORY LOCATION RESERVED
FOR TEMP LOW BYTE
;; THIS BYTE MUST BE
CONSECUTIVE FROM TEMP_HIGH
LAST_LOC EQU 0X26 ;; THIS BYTE MUST BE
CONSECUTIVE FROM TEMP_LOW
TSTROBE EQU 0X26 ;; LOCATION TO STORE START BIT
STROBE TIME.
ORG 0X004 ;; ISR LOCATION
CODE TO SAVE ANY NEEDED STATE AND TO DETERMINE THE SOURCE OF
THE ISR GOES HERE. ONCE YOU HAVE DETERMINED THE SOURCE IF THE
INTERRUPT WAS A ZAC WIRE TRANSMISSION THEN YOU BRANCH TO
ZAC_TX
ZAC_TX: MOVLW TEMP_HIGH ;; MOVE ADDRESS OF TEMP_HIGH
(0X24) TO W REG
MOVWF FSR ;; FSR = INDIRECT POINTER, NOW
POINTING TO TEMP_HIGH
GET_TLOW: MOVLW 0X02 ;; START TSTROBE COUNTER AT 02
TO ACCOUNT FOR
MOVWF TSTROBE ;; OVERHEAD IN GETTING TO THIS
POINT OF ISR
CLRF INDF ;; CLEAR THE MEMORY LOCATION
POINTED TO BY FSR
STRB: INCF TSTROBE,1 ;; INCREMENT TSTROBE
BTFSC STATUS,Z ;; IF TSTROBE OVERFLOWED TO
ZERO THEN
GOTO RTI ;; SOMETHING WRONG AND RETURN
FROM INTERRUPT
BTFSS PORTB,0 ;; LOOK FOR RISE ON ZAC WIRE
GOTO STRB ;; IF RISE HAS NOT YET
HAPPENED INCREMENT TSTROBE
CLRF BIT_CNT ;; MEMORY LOCATION USED AS BIT
COUNTER
BIT_LOOP: CLRF STRB_CNT ;; MEMORY LOCATION USED AS
STROBE COUNTER
CLRF TIME_OUT ;; MEMORY LOCATION USED FOR
EDGE TIME OUT