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