30.11.2012 Views

The Internet Power Line Adapter - University of Queensland

The Internet Power Line Adapter - University of Queensland

The Internet Power Line Adapter - University of Queensland

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Home Automation, <strong>Power</strong> <strong>Line</strong>s and the <strong>Internet</strong> Quenten Alick<br />

TIC3 EQU $1014<br />

ADCTL EQU $1030<br />

ADR1 EQU $1031<br />

OPTION EQU $1039<br />

BAUD EQU $102B<br />

SCCR1 EQU $102C<br />

SCCR2 EQU $102D<br />

SCSR EQU $102E<br />

SCDR EQU $102F<br />

CONTROL EQU $8000 *LCD control<br />

DATA EQU $8001 *LCD data<br />

BIT0 EQU $01<br />

BIT1 EQU $02<br />

BIT2 EQU $04<br />

BIT3 EQU $08<br />

BIT4 EQU $10<br />

BIT5 EQU $20<br />

BIT6 EQU $40<br />

BIT7 EQU $80<br />

MASK1 EQU $80<br />

REG EQU $1000<br />

TIE EQU $88<br />

RECVEN EQU $24<br />

TRANSEN EQU $88<br />

*****************************<br />

* Variables<br />

*****************************<br />

ORG $0000<br />

COUNT RMB 1<br />

SCIFLAG RMB 1<br />

POINTER RMB 2<br />

POINTR2 RMB 2<br />

POINTR3 RMB 2<br />

DIVTMP RMB 2<br />

RCVCNT RMB 1<br />

TRNCNT RMB 1<br />

LENGTH RMB 1<br />

STORE FDB $0020<br />

*----------------------------<br />

* SCI interrupt vector<br />

*----------------------------<br />

ORG $00C4<br />

JMP SCIISR<br />

*----------------------------<br />

* SPI Interrupt vector<br />

*----------------------------<br />

*****************************<br />

ORG $C000 *Start <strong>of</strong> program<br />

*****************************<br />

*--------------------------------------------------------------------<br />

* init stack and other setup stuff<br />

*--------------------------------------------------------------------<br />

LDS #$00C3<br />

* setup IO ports for output only<br />

LDAA #$FF<br />

STAA DDRC<br />

STAA DDRD<br />

* init SCI interface, 9600, 8N1, recv<br />

LDAA #$30<br />

STAA BAUD<br />

LDAA #$00<br />

STAA SCCR1 * 8N1<br />

LDAA #RECVEN * enable recv w/ ints<br />

STAA SCCR2 * recv<br />

* STAA RDATA * set init state<br />

- 48 -<br />

* init the storage index and set input capture 2 for low -<br />

high<br />

LDX STORE<br />

STX POINTER<br />

STX POINTR2<br />

LDAA #BIT2<br />

STAA TCTL2<br />

* init variables<br />

CLR RCVCNT<br />

CLR TRNCNT<br />

CLR LENGTH<br />

CLI<br />

START LDX STORE<br />

STX POINTR3<br />

CLR COUNT<br />

* poll for a pushbutton on IC2 (PA1)<br />

LOOP LDY #TFLG1<br />

BRCLR 0,Y,#BIT1,LOOP<br />

LDAA #BIT1 * clear flag<br />

STAA TFLG1<br />

LDD #$0000<br />

LDAB LENGTH<br />

JSR DIVIDE<br />

INC COUNT<br />

LDX POINTR3<br />

LDAA 0,X * output the data<br />

STAA PORTB<br />

INX<br />

STX POINTR3<br />

* check if we have output all the data<br />

* reset variables if so otherwise move onto next data<br />

LDAA LENGTH<br />

INCA<br />

INCA<br />

CMPA COUNT<br />

BEQ START<br />

BRA LOOP<br />

***************************************************<br />

* SCI ISR<br />

***************************************************<br />

SCIISR LDAB SCSR<br />

STAB SCIFLAG *store flags for later checks<br />

* check for valid recv interrupt<br />

BRSET SCIFLAG,#BIT5,RECV<br />

* check for valid trans interrupt<br />

BRSET SCIFLAG,#BIT7,TRANS<br />

* else invalid interrupt<br />

BRA RTRN<br />

*---------------------------------------<br />

* valid receive interrupt<br />

*---------------------------------------<br />

RECV LDAB SCDR * read the data reg<br />

LDY POINTER * load the index pointer<br />

STAB 0,Y * store at index<br />

INC RCVCNT<br />

CHECK1 LDAB #$02 * check to see if<br />

CMPB RCVCNT * its the second packet<br />

BNE CHECK2 * if not then goto CHECK2...<br />

LDY POINTER * if it is the second packet<br />

LDAB 0,Y * we have the length byte

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!