Welcome to my personal webpage. | home
TDM code | TDM schematics
TDM code
*EE 324 LAB 2B
*NIMA MOSHTAGH & RYAN SWANSON
*SEC 6 GROUP #20
*2/24/02
* This table holds the data that will need to be send to the 7 segment LED
TABLE ORG $0000
FCB $40 ;A
FCB $20 ;B
FCB $10 ;C
FCB $08 ;D
FCB $04 ;E
FCB $02 ;F
*Make room for count at 0006
ORG $0006
LOOP RMB 1 ; HOLDS THE NUMBER OF TIMES IN A DELAY LOOP
OLD RMB 1 ;HOLDS THE OLD VALUE OF DATA
RIGHT RMB 1 ;KEEPS TRACK OF NUMBER OF ENTRIES
MASK1 EQU $01 ;MASK OFF THE 1ST BIT
MASK2 EQU $02 ;MASK OFF THE 2ND BIT
MASK3 EQU $04 ;MASK OFF THE 3RD BIT
MASK4 EQU $08 ;MASK OFF THE 4TH BIT
*Start program at address 0100
ORG $0100 ;Start of Program
LDAA #$80
STAA $1007 ;set DDRC for output on port C bit 7
LDAA #15 ;JUST A NUMBER(WILL BE ADJUSTED DURING THE DEBUGGING)
STAA LOOP ;temporary value of loop
LDAB $1003 ;READ THE INPUT
ANDB #$0F ;MASK OFF THE UPPER BITS
MODE STAB OLD ;SAVE THE INPUT IN THE MEMORY
LDS #$1FE
BRSET OLD MASK1 CWROLL
BRSET OLD MASK2 CCWROLL
BRSET OLD MASK3 CEROLL
BRSET OLD MASK4 LOOP1
*********************************************************************************
* Get new data from port C
NEWDATA LDAB $1003 ;READ THE INPUT
ANDB #$0F
BNE OKEY ;IF INPUT IS NOT=0, THEN IT'S FINE
CLR $1004 ;IF INPUT IS=0, THEN TURN OUTPUT OFF
BRA NEWDATA ;AND READ INPUT AGAIN
OKEY CMPB OLD ;COMPARE THE NEW INPUT WITH THE OLD INPUT
BNE MODE ;IF THEY ARE NOT EQUAL, FIND THE NEW MODE
RTS
****************************************************************************
* Clockwiswe roll
CWROLL LDAA #$00 ;A goes forward through the table
STAA RIGHT
DISPLY1 JSR DELAYV ;DELAY FOR VARIABLE TIME
*check for any change
JSR NEWDATA
CMPA #$5 ;IF ALL THE PARTS ARE SHOWN THEN
BEQ CWROLL ;REPEAT THE LOOP
INCA ;IF NOT, THEN GET THE NEXT LETTER
STAA RIGHT
JMP DISPLY1 ;AND DISPLAY IT
********************************************************************************
**********************************************************************************
*Counterclockwise Roll
CCWROLL LDAA #$05 ;A goes backward through the table
STAA RIGHT
DISPLY2 JSR DELAYV ;DELAY FOR VARIABLE TIME
JSR NEWDATA
CMPA #$00 ;IF ALL THE PARTS ARE SHOWN THEN
BEQ CCWROLL ;REPEAT THE LOOP
DECA ;IF NOT, THEN GET THE NEXT LETTER
STAA RIGHT
JMP DISPLY2 ;AND DISPLAY IT
**********************************************************************************
*******************************************************************************
**********************************************************************************
*CROSS-EYED Roll
CEROLL LDAA #$05
STAA RIGHT
LDAA #$00 ;A goes forward through the table
DISPLY3 JSR DELAYV ;DELAY FOR VARIABLE TIME
*Check for any change
JSR NEWDATA
CMPA #$05 ;IF ALL THE PARTS ARE SHOWN THEN
BEQ CEROLL ;REPEAT THE LOOP
INCA ;IF NOT, THEN GET THE NEXT LETTER
DEC RIGHT
BRA DISPLY3 ;AND DISPLAY IT
**********************************************************************************
**********************************************************************************
**********************************************************************************
**********************************************************************************
* Winking eye
OPEN EQU $7E
CLOSE EQU $01
LOOP1 LDAA #25
DISPLY4 CLR $1003 ;SET C7 LOW
LDAB #$FE ;OPEN LEFT EYE
STAB $1004 ;DISPLAY 'OPEN'
JSR DELAY10
CLR $1004 ;SET B7 LOW
LDAB #$01 ;CLOSE RIGHT EYE
STAB $1004 ;DISPLAY CLOSE
LDAB #$80
STAB $1003 ;SET C7 HIGH
JSR DELAY10
DECA
BEQ LOOP2 ;AFTER 1 SEC SWITCH TO LOOP2
BRA DISPLY4
LOOP2 LDAA #25
DISPLY5 CLR $1003 ;SET C7 LOW
LDAB #$81 ;CLOSE LEFT EYE
STAB $1004 ;DISPLAY 'CLOSE'
JSR DELAY10
CLR $1004 ;SET B7 LOW
LDAB #$7E ;OPEN RIGHT EYE
STAB $1004 ;DISPLAY 'OPEN'
LDAB #$80
STAB $1003 ;SET C7 HIGH
JSR DELAY10
DECA
BEQ LOOP1 ;AFTER 1 SEC SWITCH TO LOOP1
BRA DISPLY5
JSR NEWDATA
**********************************************************************************
* DELAY FOR 10 MILLISECONDS
DELAY10 EQU *
PSHX
LDX #$0D05 ;10 ms loop
DELAY2 DEX
BNE DELAY2
PULX
RTS
**********************************************************************************
* DELAY FOR VARIABLE SECONDS
DELAYV EQU *
PSHA ;SAVE A REGISTER
LDAB LOOP ;STORE A WITH VARIABLE LOOP TIME
LOOP3 JSR LSHOW
JSR DELAY10
JSR RSHOW
JSR DELAY10 ; 10 msec delay
DECB
BNE LOOP3
PULA ;IF LOOP DONE RETURN A VALUE AND RETURN SUB R
RTS
**********************************************************************************
* Right digit displays ;clockwise or counter clockwise
ORG $000B
RSHOW EQU *
PSHB
PSHX
CLR $1004 ;set B7 LOW
LDX #TABLE ;lookup
LDAB RIGHT
ABX ;GO B STEPS AHEAD IN THE TABLE
LDAB 0,X ;load table plus offset into b
STAB $1004 ;display to LED
LDAB #$80 ;SET C7 HIGHT
STAB $1003
PULX
PULB
RTS
************************************************************************************
* left digit displays ;clockwise or counter clockwise
LSHOW EQU *
PSHB
PSHX
CLR $1003 ;set C7 LOW
LDX #TABLE ;lookup
TAB ;SAVE A IN THE B
ABX ;GO B STEPS AHEAD IN THE TABLE
LDAB 0,X ;load table plus offset into b
ORAB #$80 ;set B7 HIGH
STAB $1004 ;display to LED
PULX
PULB
RTS
|
||