CodeWiki : DigitalSystems.CW1

WikiHome :: List Pages :: Login
cmantito.com

Revision [346]

Most recent edit made on 2009-01-21 11:24:45 by cmantito [Clear works.]

Additions:
CLEARCALLED EQU 60H
MOV CLEARCALLED, #1
ACALL CLEAR
MOV A, CLEARCALLED
CJNE A, #0, CLEARRET
CLEARRET:
MOV CLEARCALLED, #0


Deletions:
;MOV KEY, #0FFH
;MOV KEY, #0FFH




Revision [344]

Edited on 2009-01-20 18:41:46 by cmantito [clear seizes after 2 clears, div w/rmdr works, 2 digit results.]

Additions:
DISPLAYR EQU 58H
LJMP CALCULATEDONE
MOV R0, A
MOV B, #10
CJNE A, #0, ADDTWODIGITS
MOV DISPLAYA, R0
ADDTWODIGITS:
MOV DISPLAYB, A
MOV DISPLAYA, B
MOV R0, A
MOV B, #10
CJNE A, #0, MULTWODIGITS
MOV DISPLAYA, R0
MULTWODIGITS:
MOV DISPLAYB, A
MOV DISPLAYA, B
MOV DISPLAYA, B
MOV DISPLAYR, #1
MOV DISPLAYC, A
MOV A, KEY
CJNE A, #0, DISPLAYKEY
DISPLAYKEY:
MOV A, DISPLAYR
CJNE A, #1, DISPLAYBNOW
MOV P1, #0FFh
CPL P2.4
CPL P2.5
SJMP DISPLAYANOW
DISPLAYBNOW:
DISPLAYANOW:
MOV DISPLAYR, #0


Deletions:
CJNE KEY, #0, CALCULATEDONE




Revision [343]

Edited on 2009-01-20 17:47:10 by cmantito [uhh, it kinda works?]

Additions:
KEY EQU 28h
MODE EQU 30h
DISPLAYA EQU 38H
DISPLAYB EQU 40H
DISPLAYC EQU 48H
DISPLAYD EQU 50H
MOV DISPLAYA, A
MOV DISPLAYA, A
MOV DISPLAYA, A
CJNE A, #4, CALCULATEDONE
MOV DISPLAYA, A
CJNE KEY, #0, CALCULATEDONE
MOV DISPLAYA, KEY
MOV P2, #3
MOV P1, DISPLAYD
MOV P2, #2
MOV P1, DISPLAYC
MOV P2, #1
MOV P1, DISPLAYB
MOV P1, DISPLAYA
CJNE A, #7, NOKEYSCAN
NOKEYSCAN:
MOV DISPLAYA, #0
MOV DISPLAYB, #0
MOV DISPLAYC, #0
MOV DISPLAYD, #0
MOV R0, #255
TIMELOOPA:
DJNZ R0, TIMELOOPA
TIMEDONE:


Deletions:
DISPLAY EQU 28h
KEY EQU 30h
MODE EQU 38h
MOV DISPLAY, A
MOV DISPLAY, A
MOV DISPLAY, A
CJNE A, #4, RESULT
MOV DISPLAY, A
MOV DISPLAY, KEY
MOV KEY, #0FFH
MOV P1, DISPLAY
MOV DISPLAY, #0
MOV TIMER, #255
TIMELOOP:
DJNZ TIMER, TIMELOOP
RET




Revision [341]

Edited on 2009-01-20 14:18:43 by cmantito [timer doesnt compile but everything else works still seizes]

Additions:
TIMECOUNT EQU 8h
ACALL CALCULATE ; CALCULATE subroutine.
MOV A, #0
MOV B, #0
MOV A, #0
MOV B, #0
MOV TIMER, #255
TIMELOOP:
DJNZ TIMER, TIMELOOP
END


Deletions:
ACALL CALCULATE ; CALCULATE subroutine.
MOV R0, #92
MOV R1, #255
MOV R2, #50
TIMELOOPA:
DJNZ R0, TIMELOOPA
DJNZ R1, TIMELOOPB
TIMELOOPB:
CJNE R1, #0, TIMEDONE
DJNZ R2, TIMEDONE
TIMEDONE:




Revision [338]

Edited on 2009-01-20 12:00:44 by cmantito [Mult/div/sub actually works, initial zero works.]

Additions:
ACALL CALCULATE ; CALCULATE subroutine.
MOV MODE, #2 ; mode 1 = SUB
MOV MODE, #3 ; mode 1 = MULT
MOV MODE, #4 ; mode 4 = DIVIDE
MOV KEY, #0
RET


Deletions:
ACALL CALCULATE ; CALCULATE subroutine.
;MOV KEY, #'B'
;MOV KEY, #'C'
;MOV KEY, #'D'
RET




Revision [327]

Edited on 2009-01-19 17:44:25 by cmantito [added untested code for sub/mul/div ops]

Additions:
ACALL INPUT ; INPUT subroutine.
ACALL CALCULATE ; CALCULATE subroutine.
ACALL OUTPUT ; OUTPUT subroutine.
SJMP CLEANUP
SUBB A, KBUFFERB
SJMP CLEANUP
MOV B, KBUFFERB
MUL AB
SJMP CLEANUP
MOV B, KBUFFERB
DIV AB
SJMP CLEANUP
CLEANUP:
RET


Deletions:
ACALL INPUT ; INPUT subroutine.
ACALL CALCULATE ; CALCULATE subroutine.
ACALL OUTPUT ; OUTPUT subroutine.




Revision [326]

Edited on 2009-01-19 17:03:06 by cmantito

Additions:
LJMP CLEAR
ACALL INPUT ; INPUT subroutine.
ACALL CALCULATE ; CALCULATE subroutine.
ACALL OUTPUT ; OUTPUT subroutine.
SJMP MAIN ; Jump back to the beginning.
MOV KEY, #0FFH
LJMP CLEAR
MOV KEY, #0FFH
LJMP MAIN
TIMELOOPA:


Deletions:
SJMP MAIN
ACALL CLEAR
ACALL INPUT ; INPUT subroutine.
ACALL CALCULATE ; CALCULATE subroutine.
ACALL OUTPUT ; OUTPUT subroutine.
SJMP MAIN ; Jump back to the beginning.
MOV KEY, #0
ACALL CLEAR
MOV KEY, #0
TIMELOOPA:




Revision [325]

Edited on 2009-01-14 14:22:07 by cmantito [HOLY CRAP IT WORKS IT ADDS A SET AND THEN SEIZES BUT IT WORKS]

Additions:
MBUFFER EQU 10h
KBUFFERA EQU 18h
KBUFFERB EQU 20h
ACALL CLEAR
;;;;; MODE: 1 = ADD, 2 = SUB, 3 = MULT
;;;;; 4 = DIV, 9 = RESULT
MOV A, MODE
CJNE A, #0, STOREMODE
SJMP NONEOFTHEABOVE
STOREMODE:
CJNE A, #9, DOSTOREMODE
SJMP RESULT
DOSTOREMODE:
MOV MBUFFER, MODE
SJMP CALCULATEDONE
RESULT:
MOV A, MBUFFER
ADDITION:
CJNE A, #1, SUBTRACT
MOV A, KBUFFERA
ADD A, KBUFFERB
MOV DISPLAY, A
MOV KBUFFERA, #0
MOV KBUFFERB, #0
MOV MBUFFER, #0
MOV KEY, #0
SJMP CALCULATEDONE
SUBTRACT:
CJNE A, #2, MULTIPLY
MULTIPLY:
CJNE A, #3, DIVIDE
DIVIDE:
CJNE A, #4, RESULT
NONEOFTHEABOVE:
MOV A, MBUFFER
CJNE A, #0, STOREB
STOREA:
MOV KBUFFERA, KEY
SJMP STOREDONE
STOREB:
MOV KBUFFERB, KEY
STOREDONE:
MOV MODE, #1 ; mode 1 = ADD
ACALL CLEAR
MOV MODE, #9 ; mode 9 = EQUALS
;;;;; Subroutine: CLEAR
;;;;; Purpose: Reset the shit out of it.
CLEAR:
MOV KBUFFERA, #0
MOV KBUFFERB, #0
MOV MBUFFER, #0
MOV DISPLAY, #0
MOV KEY, #0


Deletions:
BUFFER EQU 20h
;MOV A, MODE
;CJNE A, #1, NOTADD
;MOV BUFFER, KEY
NOTADD:
;MOV A, DISPLAY
;CJNE A, #0FFH, OUTPUTNOW
;RET
OUTPUTNOW:
MOV MODE, #1
;MOV KEY, #'*'
;MOV KEY, #'#'




Revision [324]

Edited on 2009-01-14 12:58:12 by cmantito [removing implicit null on KEY and removing null checks. should stay set.]

Additions:
BUFFER EQU 20h
MOV MODE, #0
;MOV A, MODE
;CJNE A, #1, NOTADD
;MOV BUFFER, KEY
NOTADD:
CALCULATEDONE:
;MOV A, DISPLAY
;CJNE A, #0FFH, OUTPUTNOW
;RET
;MOV KEY, #0FFH


Deletions:
MOV A, DISPLAY
CJNE A, #0FFH, OUTPUTNOW
MOV KEY, #0FFH




Revision [323]

Edited on 2009-01-14 12:45:31 by cmantito [MOV DISPLAY, KEY vs. MOV KEY, DISPLAY]

Additions:
MOV DISPLAY, KEY


Deletions:
MOV KEY, DISPLAY




Revision [322]

Edited on 2009-01-14 12:41:18 by cmantito [Fixed overlapping var hex locations.]

Additions:
DISPLAY EQU 28h
MODE EQU 38h


Deletions:
MODE EQU 31h
DISPLAY EQU 32h




Revision [321]

Edited on 2009-01-14 12:38:12 by cmantito [Fixed some overlapping var/sub name. Only outputs 0.]

Additions:
DISPLAY EQU 32h
CALCULATE:
MOV KEY, DISPLAY
MOV A, DISPLAY
MOV P1, DISPLAY


Deletions:
OUTPUT EQU 32h
MOV KEY, OUTPUT
MOV A, OUTPUT
MOV P1, OUTPUT




Revision [320]

Edited on 2009-01-14 12:35:25 by cmantito [Added CALCULATE sub and MODE/OUTPUT variables.]

Additions:
MODE EQU 31h
OUTPUT EQU 32h
ACALL CALCULATE ; CALCULATE subroutine.
;;;;; Subroutine: CALCULATE
;;;;; Purpose: Prepares calculations for output.
MOV KEY, OUTPUT
MOV A, OUTPUT
MOV P1, OUTPUT
MOV MODE, #1


Deletions:
MOV A, KEY
MOV P1, KEY
;MOV KEY, #'A'




Revision [319]

Edited on 2009-01-14 12:26:17 by cmantito [Missed an F in the null value. Oops.]

Additions:
CJNE A, #0FFH, OUTPUTNOW


Deletions:
CJNE A, #0FH, OUTPUTNOW




Revision [318]

Edited on 2009-01-14 12:24:50 by cmantito [Works again, but still only briefly displays the digit rather than persistantly like it's supposed t]

Additions:
CJNE A, #0FH, OUTPUTNOW
OUTPUTNOW:


Deletions:
CJNE A, #0FFH, OUTPUTSKIP
OUTPUTSKIP:




Revision [317]

Edited on 2009-01-14 12:17:53 by cmantito [This stopped it all from working, what changed was the CJNE and MOV before the output.]

Additions:
MOV A, KEY
CJNE A, #0FFH, OUTPUTSKIP
OUTPUTSKIP:




Revision [316]

Edited on 2009-01-07 14:53:56 by cmantito

Additions:
KEY EQU 30h
MOV P2, #0
MOV P1, KEY
MOV P0, #0FFH
MOV KEY, #0FFH
CLR P0.4
ACALL TIMER
MOV A,P0
ANL A, #0FH
CJNE A, #0FH, ROWONECOLONE
SETB P0.4
CLR P0.5
ACALL TIMER
MOV A, P0
ANL A, #0FH
CJNE A, #0FH, ROWTWOCOLONE
SETB P0.5
CLR P0.6
ACALL TIMER
MOV A, P0
ANL A, #0FH
CJNE A, #0FH, ROWTHREECOLONE
SETB P0.6
CLR P0.7
ACALL TIMER
MOV A, P0
ANL A, #0FH
CJNE A, #0FH, ROWFOURCOLONE
ROWONECOLONE:
CJNE A, #14, ROWONECOLTWO
MOV KEY, #1h
ROWONECOLTWO:
CJNE A, #13, ROWONECOLTHREE
MOV KEY, #2h
ROWONECOLTHREE:
CJNE A, #11, ROWONECOLFOUR
MOV KEY, #3h
ROWONECOLFOUR:
;MOV KEY, #'A'
ROWTWOCOLONE:
CJNE A, #14, ROWTWOCOLTWO
MOV KEY, #4h
ROWTWOCOLTWO:
CJNE A, #13, ROWTWOCOLTHREE
MOV KEY, #5h
ROWTWOCOLTHREE:
CJNE A, #11, ROWTWOCOLFOUR
MOV KEY, #6h
ROWTWOCOLFOUR:
;MOV KEY, #'B'
ROWTHREECOLONE:
CJNE A, #14, ROWTHREECOLTWO
MOV KEY, #7h
ROWTHREECOLTWO:
CJNE A, #13, ROWTHREECOLTHREE
MOV KEY, #8h
ROWTHREECOLTHREE:
CJNE A, #11, ROWTHREECOLFOUR
MOV KEY, #9h
ROWTHREECOLFOUR:
;MOV KEY, #'C'
ROWFOURCOLONE:
CJNE A, #14, ROWFOURCOLTWO
;MOV KEY, #'*'
ROWFOURCOLTWO:
CJNE A, #13, ROWFOURCOLTHREE
MOV KEY, #0h
ROWFOURCOLTHREE:
CJNE A, #11, ROWFOURCOLFOUR
;MOV KEY, #'#'
ROWFOURCOLFOUR:
;MOV KEY, #'D'
;;;;; Purpose: Produce a 58ms-ish delay on ACALL.
MOV R0, #92
MOV R1, #255
MOV R2, #50
TIMELOOPA:
DJNZ R0, TIMELOOPA
DJNZ R1, TIMELOOPB
TIMELOOPB:
CJNE R1, #0, TIMEDONE
DJNZ R2, TIMEDONE
TIMEDONE:


Deletions:
MOV P1, #009h ; 0x009 = 0b1001 (binary).
; Set Port1 to 00001001
; (1s are high, 0s are low, ordered p1.7 - p1.0)
; p1.3 and p1.0 are high, display reads should read 9.
; (well actually, the display should read 9999 since
; we haven't defined anywhere which digit to update.)
; Placeholder.
;;;;; Purpose: Produce a 50ms delay on ACALL.
; Placeholder.




Revision [315]

Edited on 2009-01-07 11:19:24 by cmantito

Additions:

Categories: CategoryUni




Revision [314]

Edited on 2009-01-05 07:20:09 by cmantito

Additions:
; At the very beginning, jump to 40H...
SJMP MAIN
; ...which is where our code begins.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MAIN: ; Defines the MAIN loop.
ACALL INPUT ; INPUT subroutine.
ACALL OUTPUT ; OUTPUT subroutine.
SJMP MAIN ; Jump back to the beginning.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;; Subroutine: OUTPUT
;;;;; Purpose: Updates the display.
OUTPUT:
; p1.3 and p1.0 are high, display reads should read 9.
; (well actually, the display should read 9999 since
; we haven't defined anywhere which digit to update.)
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;; Subroutine: INPUT
;;;;; Purpose: Read buttons pressed on keypad.
INPUT:
; Placeholder.
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;; Subroutine: TIMER
;;;;; Purpose: Produce a 50ms delay on ACALL.
TIMER:
; Placeholder.
RET


Deletions:
SJMP START
START:
SJMP MAIN ; Go to MAIN
;;;; SUBROUTINE: MAIN
MAIN: ; Define the MAIN subroutine..
; p1.3 and p1.0 are high, display reads 9s.
SJMP MAIN ; JUMP to the beginning.

Categories: CategoryUni




Revision [295]

The oldest known version of this page was edited on 2008-12-10 07:48:39 by cmantito
$include (reg66x.inc)

ORG 0
SJMP START

ORG 40H

START:

SJMP MAIN           ; Go to MAIN

;;;; SUBROUTINE: MAIN
MAIN:             ; Define the MAIN subroutine..
MOV P1, #009h       ; 0x009 = 0b1001 (binary).
                        ; Set Port1 to 00001001
                        ; (1s are high, 0s are low, ordered p1.7 - p1.0)
                        ; p1.3 and p1.0 are high, display reads 9s.
SJMP MAIN         ; JUMP to the beginning.


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