next up previous contents
Next: About this document Up: No Title Previous: Appendix B

Appendix C

The assembly program used for the chip is described bellow. The comments explain what the program does at each step.

* USING OWN COMMUNICATION ROUTINES *
* RECEIVES 3 BYTES FROM COMPUTER AND SENDS OUT TO PORT B AND CONVERTS 
* 3 BYTES TO DIGITAL AND SENDS TO COMPUTER *
* PORT B IS USED TO OUTPUT THE 8 BIT DATA TO BE CONVERTED
* TO ANALOG ALONG WITH 3 CONTROL BITS OF PORTC-0,1,2.
	ORG     $B600
PORTA   EQU     $1000
PORTB   EQU     $1004
PORTC   EQU     $1003
DDRC    EQU     $1007
IODEV   EQU     $00A7     VALUE TO SPECIFY PORT TO BE USED
AUTOLF  EQU     $00A6     AUTO LF/CR CONTROL
INIT    EQU     $FFA9     USEFUL SUBROUTINES
ADCTL   EQU     $1030     CONTROL FOR A/D CONVERSION
ADR1    EQU     $1031     A/D RESULT REGISTERS
ADR2    EQU     $1032
ADR3    EQU     $1033
ADR4    EQU     $1034
OPTION  EQU     $1039     TO POWER UP THE A/D SYSTEM
INTMP1  EQU     $0101
INTMP2  EQU     $0102
INTMP3  EQU     $0103
INTMP4  EQU     $0104
OUTMP1  EQU     $0111
OUTMP2  EQU     $0112
OUTMP3  EQU     $0113
OUTMP4  EQU     $0114
BAUD    EQU     $102B
SCCR1   EQU     $102C
SCCR2   EQU     $102D
SCSR    EQU     $102E
SCDAT   EQU     $102F
COPRST  EQU     $103A
* MAIN PROGRAM THAT INITIALIZES AND ROUTES CONTROL *
MAIN    CLR     AUTOLF
	INC     AUTOLF 
	LDAA    #$00
	STAA    IODEV
	LDAA    #$FF
	STAA    DDRC            SET PORTC AS OUTPUT PORT
	LDAA    #$00
	STAA    PORTC           SELECTING ALL 3 d/a's
	LDAA    #$80
	STAA    PORTB           INITIALIZE d/a's TO 0V
	JSR     INIT
	LDAA    #$FF
	STAA    PORTC           AFTER A DELAY, DESELECTING ALL d/a's
	LDAA    #$41
	STAA    INTMP2
	LDAA    #$42
	STAA    INTMP3
	LDAA    #$43
	STAA    INTMP4
	JSR     INITAD
	JSR     CHKST
	JSR     TXDAT           first 3 bytes test characters
MLOOP   JSR     RXDAT
	JSR     GETANL
	JSR     OUTDAT                                      
	JMP     MLOOP
* INPUT SUBROUTINE  *
INPUT   PSHX
	LDAA    #$55
	STAA    COPRST
	LDAA    #$AA
	STAA    COPRST
	LDAA    IODEV
	BNE     INPUT1
	LDAA    SCDAT
INSCI   LDAA    SCSR
	ANDA    #$20
	BEQ     INPUT1
	LDAA    SCDAT
INPUT1  PULX
	RTS
* OUTPUT SUBROUTINE *
OUTPUT  PSHA
	PSHB
	PSHX
	LDAB    IODEV
	BNE     OUTPUT1
OUTSCI  LDAB    SCSR
	BITB    #$80
	BEQ     OUTSCI          LOOP TILL TRDRE=1
	STAA    SCDAT
OUTPUT1 PULX
	PULB
	PULA
	RTS
* SUBROUTINE THAT WAITS FOR 3 CHARS FROM WORKSTATION *
CHKST   JSR     INPUT
	TSTA
	BEQ     CHKST           CHECK IF ANY CHARACTER RECEIVED
CLOOP1  JSR     INPUT
	TSTA    
	BEQ     CLOOP1          CHECK FOR SECOND BYTE
CLOOP2  JSR     INPUT
	TSTA    
	BEQ     CLOOP2          CHECK FOR THIRD BYTE
	RTS
* SUBROUTINE TO INITIALIZE A/D CONVERION UNIT *
INITAD  LDAA    #$80
	STAA    OPTION          SET ENABLE BIT FOR THE A/D SYS.
	LDAA    #$30
	STAA    ADCTL           START CONTINIOUS CONVERSION OF 4 INPUTS
ALOOP   LDAA    ADCTL
	ANDA    #$80
	BEQ     ALOOP           CHK IF ONE CONVERSION COMPLETE
	RTS
* GET ANALOG INPUTS AND OUTPUT THEM TO COMPUTER *
GETANL  LDAA    ADR1            FIRST BYTE STRAY INPUT
	LDAA    ADR2
	JSR     OUTPUT
	LDAA    ADR3
	JSR     OUTPUT
	LDAA    ADR4
	JSR     OUTPUT
	RTS
* SUBROUTINE TO TRANSMIT 3 BYTES OF DATA FROM INTMP REGISTERS *
TXDAT   LDAA    INTMP2
	JSR     OUTPUT
	LDAA    INTMP3
	JSR     OUTPUT
	LDAA    INTMP4
	JSR     OUTPUT
	RTS
* SUBROUTINE TO RECEIVE 3 BYTES OF DATA FROM WORKSTATION *
RXDAT   JSR     INPUT
	TSTA
	BEQ     RXDAT     IF NO CHR RECEIVED GO BACK
	STAA    OUTMP1    IF YES, STORE
RLOOP1  JSR     INPUT
	TSTA
	BEQ     RLOOP1
	STAA    OUTMP2
RLOOP2  JSR     INPUT
	TSTA
	BEQ     RLOOP2
	STAA    OUTMP3
	RTS
* SUBROUTINE TO SEND OUT THE DATA TO THE 3 D/A'S *
* ALSO HAVE TO OUTPUT CONTROL ON PORT A TO CHOOSE 1 D/A AT EACH TIME *
OUTDAT  LDAA    OUTMP1
	STAA    PORTB
	LDAA    #$FE
	STAA    PORTC           SELECT FIRST d/a.
	NOP
	NOP
	NOP
	LDAA    #$FF
	STAA    PORTC           AFTER A DELAY DISABLE
	LDAA    OUTMP2
	STAA    PORTB
	LDAA    #$FD
	STAA    PORTC           SELECT SECOND d/a.
	NOP
	NOP
	NOP
	LDAA    #$FF
	STAA    PORTC           AFTER A DELAY DISABLE
	LDAA    OUTMP3
	STAA    PORTB
	LDAA    #$FB
	STAA    PORTC           SELECT THIRD d/a.
	NOP
	NOP
	NOP
	LDAA    #$FF
	STAA    PORTC           AFTER A DELAY DISABLE
	RTS



Matanya Elchanani
Wed Dec 18 17:00:21 EST 1996