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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
|
;;
;; mur.sat
;;
;; Somewhen in the year 2011, mur.at will have a nano satellite launched
;; into a low earth orbit (310 km above the surface of our planet). The
;; satellite itself is a TubeSat personal satellite kit, developed and
;; launched by interorbital systems. mur.sat is a joint venture of mur.at,
;; ESC im Labor and realraum.
;;
;; Please visit the project hompage at sat.mur.at for further information.
;;
;;
;; Copyright (C) 2011 Christian Pointner <equinox@spreadspace.org>
;;
;; This file is part of mur.sat.
;;
;; mur.sat is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; any later version.
;;
;; mur.sat is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;;
;; You should have received a copy of the GNU General Public License
;; along with mur.sat. If not, see <http://www.gnu.org/licenses/>.
;;
;; -------------------------------------
;; PREAMBLE
LIST p=10F206
include "p10f206.inc"
__config _MCLRE_OFF & _CP_OFF & _WDT_OFF
;; -------------------------------------
;; DEFINES
BEACON_INT EQU .60
SECCNT EQU H'0008'
DOT EQU .36
DASH EQU .108
ESPACE EQU .36
CSPACE EQU .108
WSPACE EQU .252
CWSPEED EQU .192
DOTCNT0 EQU H'000A'
DOTCNT1 EQU H'000B'
CWOUT EQU GP0
;; -------------------------------------
;; OFFSET
org 0
;; -------------------------------------
;; INIT
init
bcf CMCON0,CMPON
movlw b'11110110'
option
movlw b'11111110'
tris GPIO
bcf GPIO,CWOUT
clrf TMR0
movlw BEACON_INT
movwf SECCNT
goto main
;; -------------------------------------
;; SUBROUTINES
dottime
movwf DOTCNT1
dot_outer
movlw CWSPEED
movwf DOTCNT0
dot_inner
nop
nop
nop
nop
decfsz DOTCNT0,f
goto dot_inner
decfsz DOTCNT1,f
goto dot_outer
return
send_beacon
;; test send out:
;; .- . -
bsf GPIO,CWOUT
movlw DOT
call dottime
bcf GPIO,CWOUT
movlw ESPACE
call dottime
bsf GPIO,CWOUT
movlw DASH
call dottime
bcf GPIO,CWOUT
movlw CSPACE
call dottime
bsf GPIO,CWOUT
movlw DOT
call dottime
bcf GPIO,CWOUT
movlw WSPACE
call dottime
bsf GPIO,CWOUT
movlw DASH
call dottime
bcf GPIO,CWOUT
return
;; -------------------------------------
;; MAINLOOP
main
movf TMR0,w
btfss STATUS,Z
goto main
;; this gets called every second
decfsz SECCNT,f
goto waitfor0
movlw BEACON_INT
movwf SECCNT
;; this gets called every BEACON_INT seconds
call send_beacon
;; is the timer above zero?
waitfor0
movf TMR0,w
btfsc STATUS,Z
goto waitfor0
goto main
;; -------------------------------------
;; END
end
|