-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPropeller Clock.asm
105 lines (85 loc) · 1.37 KB
/
Propeller Clock.asm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
; Propeller clock to display OTP
; RB7 is top, RB0 is bottom
MAIN_PROG CODE
START
#include <p16f887.inc>
COUNT EQU 0x20
DELAY_COUNT EQU 0x21
ENTRIES EQU .21 ; however many entries for LEDs
reset:
ORG 0x00
GOTO setup
ORG 0x04
GOTO isr
setup:
BANKSEL ANSELH
CLRF ANSELH ; digital I/O
BANKSEL TRISB
CLRF TRISB ; all output
BANKSEL PORTB
MOVLW 0x00
MOVWF COUNT
main:
MOVF COUNT, 0
CALL display
MOVWF PORTB
CALL oneDegreeDelay
INCF COUNT
MOVF COUNT, 0
SUBLW ENTRIES
BTFSC STATUS, Z
CALL endOfDisplay
GOTO main
oneDegreeDelay:
MOVLW .50
MOVWF DELAY_COUNT
degLoop:
DECFSZ DELAY_COUNT
GOTO degLoop
RETURN
endOfDisplay: ;360-blocks used for display delays
CLRF PORTB
MOVLW .105
MOVWF COUNT
loop2:
CALL oneDegreeDelay
DECFSZ COUNT
GOTO loop2
MOVLW .255
SUBLW ENTRIES
MOVWF COUNT
loop:
CALL oneDegreeDelay
DECFSZ COUNT
GOTO loop
MOVLW .0
MOVWF COUNT
RETURN
display:
ADDWF PCL, F
RETLW b'11111111'
Retlw b'10000001'
RETLW B'10000001'
RETLW B'10000001'
RETLW B'11111111'
RETLW B'00000000'
RETLW B'00000000'
RETLW B'00000000'
RETLW B'10000000'
RETLW B'10000000'
RETLW B'11111111'
RETLW B'10000000'
RETLW B'10000000'
RETLW B'00000000'
RETLW B'00000000'
RETLW B'00000000'
RETLW B'11111111'
RETLW B'10010000'
RETLW B'10010000'
RETLW B'10010000'
RETLW B'11110000'
isr:
NOP
RETFIE
_end:
END