CodeWiki : PhysLayerTech.CW1

WikiHome :: List Pages :: Login
cmantito.com

The flowchart that applies for this revision is available at B164LFlowchart.

$include (reg66x.inc)

; B164L Group: Y53  Authors: KCL, ANG, MP
; Date: 29.10.2008  VERSION 1.0
; Summay: This is a framework for the ethernet project.
; Input: 3 buttons, "network data"
; Output: 3 LEDs, "network data"
; Assumptions: 11.0592

ORG 0
+SJMP START

ORG 40H

START:
MOV R1, #255          ; Initialise register R1 for the masterclock.
                        ; 6 phases to each cycle.
MOV R2, #50           ; Initialise register R2 to count the cycles.
                                ; 50 cycle counter.

SJMP MAIN           ; Go to MAIN

;;;; SUBROUTINE: MAIN
MAIN:             ; Define the MAIN subroutine..
ACALL COUNTERS
ACALL TIMING
ACALL TRANSMIT
ACALL RECEIVE
ACALL KEYBOARD
ACALL DISPLAY
SJMP MAIN          ; JUMP to the beginning.


;;;;; IF ANY OF OUR COUNTERS < 1, FIX IT.
COUNTERS:
CJNE R1, #0, COMPARENEXT  ;; If R1 IS NOT ZERO, JUMP TO COMPARENEXT, OTHERWISE:
MOV R1, #6                      ;; MAKE IT 6.
COMPARENEXT:
CJNE R2, #0, COMPAREDONE  ;; IF R2 IS NOT ZERO, JUMP TO COMPAREDONE, OTHERWISE:
MOV R2, #255                     ;; MASTERCLOCK, COUNTDOWN TO 0
COMPAREDONE:
RET

;;;; ONE OF THESE = 1 PHASE OF 1 CYCLE.
TIMING:                        
MOV R0, #92                      ;;ONE PHASE
TIMELORD:                           ;; ONE CLOCK TO COUNT 6 CYCLES
DJNZ R0, TIMELORD                       ;; IT LOOPS AROUND IN A CIRCLE UNTIL IT'S ZERO.
DJNZ R1, TIMELORDCONTINUED       ;; COUNDOWN FROM 6 WHEN IT GETS TO ZERO, GO TO TIMELORDCONTINUED
TIMELORDCONTINUED:                  ;; ANOTHER CLOCK TO COUNT 50 CYCLES
CJNE R1, #0, TIMENEXT              ;; IF R1 IS NOT ZERO, JUMP TO TIMENEXT, OTHERWISE:
DJNZ R2, TIMENEXT                ;; COUNTDOWN FROM 50, R2, THEN GO TO TIMENEXT
TIMENEXT:
RET

TRANSMIT:                           ;;BREAKING THE LOOP, USING THE TWO COUNTERS SIMULTANEOUSLY,1.7 DOES STH WHEN ONE IS 2 AND THE OTHER IS 6
CJNE R1, #255, ENDTRANSMIT     ;;  TO TRANSMIT STH KEEP COMPARING UNTIL R1 IS NOT 2,IF IT IS NOT 2 THEN GO TO ENDTRANSMIT
CJNE R2, #50, ENDTRANSMIT        ;;  TO TRANSMIT STH KEEP COMAPRING UNTIL R2 IS NOT 6, IF IT NOT 6 GO TO ENDTRANSMIT
CPL P1.7                            ;; If they ARE, toggle P1.7
ENDTRANSMIT:
RET                             ;; Back out.

RECEIVE:
CJNE R1, #255, ENDRECEIVE      ;; If R1 != 4, jump to ENDRECEIVE
CJNE R2, #50, ENDRECEIVE       ;; If R2 != 40, jump to ENDRECEIVE
CPL P1.6                            ;; If they do though, toggle P1.6
ENDRECEIVE:
RET                             ;; Back out.

KEYBOARD:
CJNE R1, #255, ENDKEYBOARD      ;; If R1 != 4, jump to ENDRECEIVE
CJNE R2, #50, ENDKEYBOARD     ;; If R2 != 40, jump to ENDRECEIVE
CPL P1.5                            ;; If they do though, toggle P1.5
ENDKEYBOARD:
RET                             ;; Back out.


DISPLAY: RET

END                 ; END the application.


Categories: CategoryUni
Valid XHTML 1.0 Transitional :: Valid CSS :: Powered by WikkaWiki