annotate code_part1/OSTC_code_asm_part1/interface.asm @ 353:b5b030c1ae7e

Avoid spurious switch-depth stops with 3 or more gas.
author JeanDo
date Tue, 07 Jun 2011 01:16:55 +0200
parents 85ea09d3b9d8
children 7250ca7c8d24
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
2 ; OSTC - diving computer code
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
3 ; Copyright (C) 2008 HeinrichsWeikamp GbR
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
4
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
5 ; This program is free software: you can redistribute it and/or modify
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
6 ; it under the terms of the GNU General Public License as published by
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
7 ; the Free Software Foundation, either version 3 of the License, or
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
8 ; (at your option) any later version.
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
9
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
10 ; This program is distributed in the hope that it will be useful,
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
11 ; but WITHOUT ANY WARRANTY; without even the implied warranty of
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
12 ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
13 ; GNU General Public License for more details.
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
14
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
15 ; You should have received a copy of the GNU General Public License
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
16 ; along with this program. If not, see <http://www.gnu.org/licenses/>.
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
17
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
18
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
19 ; Interface, Downloader, MD2 Hash send routine
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
20 ; written by: Matthias Heinrichs, info@heinrichsweikamp.com
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
21 ; written: 10/30/05
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
22 ; last updated: 12/27/07
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
23 ; known bugs:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
24 ; ToDo:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
25
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
26 uart_store_tissues:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
27 bcf uart_store_tissue_data ; Clear flag
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
28 bcf PIE1,RCIE ; No Interrupt for UART
21
73014f788032 1.60 stable rc1
heinrichsweikamp
parents: 0
diff changeset
29 bsf LED_blue
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
30 call simulator_save_tissue_data ; store and set flag for automatic restore
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
31 movlw 'k' ; send echo
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
32 movwf TXREG ; When done
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
33 call rs232_wait_tx ; wait for UART
21
73014f788032 1.60 stable rc1
heinrichsweikamp
parents: 0
diff changeset
34 bcf LED_blue
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
35 bsf PIE1,RCIE ; Interrupt for RS232
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
36 goto surfloop_loop ; return to surface loop
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
37
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
38 ; reset Decodata
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
39 reset_decodata:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
40 bcf uart_reset_decodata ; clear flag
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
41 bcf PIE1,RCIE ; No Interrupt for UART
21
73014f788032 1.60 stable rc1
heinrichsweikamp
parents: 0
diff changeset
42 bsf LED_blue
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
43
116
14a074e1a375 Split C code, and use direct linking.
JeanDo
parents: 21
diff changeset
44 call deco_clear_tissue ; Reset Decodata
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
45 movlb b'00000001' ; select ram bank 1
116
14a074e1a375 Split C code, and use direct linking.
JeanDo
parents: 21
diff changeset
46 call deco_calc_desaturation_time ; calculate desaturation time
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
47 movlb b'00000001' ; select ram bank 1
116
14a074e1a375 Split C code, and use direct linking.
JeanDo
parents: 21
diff changeset
48 call deco_clear_CNS_fraction ; clear CNS
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
49 movlb b'00000001' ; select ram bank 1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
50
229
85ea09d3b9d8 Nofly should not be reset after dive simulation (bug BB18).
JeanDo
parents: 116
diff changeset
51 clrf nofly_time+0 ; Clear nofly time
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
52 clrf nofly_time+1 ; Clear nofly time
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
53
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
54 movlw 'h' ; send echo
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
55 movwf TXREG ; When done
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
56 call rs232_wait_tx ; wait for UART
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
57
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
58 bsf oneminupdate ; set flag, so display will be updated at once
21
73014f788032 1.60 stable rc1
heinrichsweikamp
parents: 0
diff changeset
59 bcf LED_blue
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
60 bsf PIE1,RCIE ; Interrupt for RS232
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
61 goto surfloop_loop ; return to surface loop
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
62
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
63 ; send internal EEPROM BANK 0 via the UART
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
64 send_int_eeprom_b0:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
65 bcf uart_send_int_eeprom ; clear flag
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
66 bcf PIE1,RCIE ; No Interrupt for UART
21
73014f788032 1.60 stable rc1
heinrichsweikamp
parents: 0
diff changeset
67 bsf LED_blue
73014f788032 1.60 stable rc1
heinrichsweikamp
parents: 0
diff changeset
68
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
69 clrf EEADRH ; Point to Bank0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
70 rcall send_internal_eeprom1 ; sends complete 1st. page of internal EEPROM
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
71
21
73014f788032 1.60 stable rc1
heinrichsweikamp
parents: 0
diff changeset
72 bcf LED_blue
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
73 bsf PIE1,RCIE ; Interrupt for RS232
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
74 goto surfloop_loop ; return to surface loop
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
75
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
76 ; send internal EEPROM BANK 1 via the UART
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
77 send_int_eeprom_b1:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
78 bcf uart_send_int_eeprom2 ; clear flag
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
79 bcf PIE1,RCIE ; No Interrupt for UART
21
73014f788032 1.60 stable rc1
heinrichsweikamp
parents: 0
diff changeset
80 bsf LED_blue
73014f788032 1.60 stable rc1
heinrichsweikamp
parents: 0
diff changeset
81
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
82
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
83 movlw d'1'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
84 movwf EEADRH ; Point to Bank1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
85 rcall send_internal_eeprom1 ; sends complete 2nd page of internal EEPROM
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
86 clrf EEADRH ; Point to Bank0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
87
21
73014f788032 1.60 stable rc1
heinrichsweikamp
parents: 0
diff changeset
88 bcf LED_blue
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
89 bsf PIE1,RCIE ; Interrupt for RS232
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
90 goto surfloop_loop ; return to surface loop
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
91
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
92
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
93 ; Send firmware version and 16bytes MD2 hash via the UART
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
94 send_md2_hash:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
95 bcf uart_send_hash ; clear flag
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
96 bcf PIE1,RCIE ; No Interrupt for UART
21
73014f788032 1.60 stable rc1
heinrichsweikamp
parents: 0
diff changeset
97 bsf LED_blue
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
98
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
99 call rs232_wait_tx ; wait for UART
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
100 movlw softwareversion_x ; Softwareversion
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
101 movwf TXREG
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
102 call rs232_wait_tx ; wait for UART
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
103 movlw softwareversion_y ; Softwareversion
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
104 movwf TXREG
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
105
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
106 lfsr FSR2, char_O_hash
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
107 movlw d'16'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
108 movwf temp1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
109 send_md2_hash2:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
110 call rs232_wait_tx ; wait for UART
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
111 movff POSTINC2,TXREG ; copy hash byte to TXREG
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
112 decfsz temp1,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
113 bra send_md2_hash2 ; loop 16 times
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
114
21
73014f788032 1.60 stable rc1
heinrichsweikamp
parents: 0
diff changeset
115 bcf LED_blue
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
116 bsf PIE1,RCIE ; Interrupt for RS232
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
117 goto surfloop_loop ; return to surface loop
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
118
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
119
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
120 ; Sends first 256Byte from internal and first 32KB from external EEPROM using the UART module
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
121 menu_interface:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
122 bcf dump_external_eeprom ; clear flag
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
123 bcf PIE1,RCIE ; No Interrupt for UART
21
73014f788032 1.60 stable rc1
heinrichsweikamp
parents: 0
diff changeset
124 bsf LED_blue
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
125 call PLED_ClearScreen
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
126 call PLED_topline_box
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
127 WIN_INVERT .1 ; Init new Wordprocessor
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
128 DISPLAYTEXT .15 ; "Interface"
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
129 WIN_INVERT .0 ; Init new Wordprocessor
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
130
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
131 movlw d'5'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
132 movwf uart1_temp
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
133 menu_interface1:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
134 movlw 0xAA ; Startbytes
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
135 movwf TXREG
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
136 call rs232_wait_tx ; wait for UART
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
137 decfsz uart1_temp
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
138 bra menu_interface1
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
139 movlw 0x55 ; finish preamble
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
140 movwf TXREG
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
141
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
142 DISPLAYTEXT .16 ; "Start"
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
143
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
144 call get_free_EEPROM_location ;
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
145 movlw d'1' ; increase
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
146 addwf eeprom_address+0,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
147 movlw d'0'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
148 addwfc eeprom_address+1,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
149
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
150 DISPLAYTEXT .17 ; "Data"
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
151
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
152 rcall send_internal_eeprom1 ; sends complete 1st. page of internal EEPROM
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
153
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
154 call rs232_wait_tx ; wait for UART
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
155 movff batt_voltage+0,TXREG ; Battery
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
156
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
157 call rs232_wait_tx ; wait for UART
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
158 movff batt_voltage+1,TXREG ; Battery
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
159
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
160 call rs232_wait_tx ; wait for UART
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
161 movlw softwareversion_x ; Softwareversion
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
162 movwf TXREG
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
163
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
164 call rs232_wait_tx ; wait for UART
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
165 movlw softwareversion_y ; Softwareversion
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
166 movwf TXREG
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
167
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
168 DISPLAYTEXT .18 ; "Header"
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
169
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
170 clrf uart1_temp ; low address counter
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
171 clrf uart2_temp ; high address counter
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
172
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
173 menu_interface3:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
174 bsf SSPCON2,SEN ; Start condition
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
175 call WaitMSSP
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
176
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
177 movlw b'10100110' ; Bit0=0: WRITE, Bit0=1: READ
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
178 movwf SSPBUF ; control byte
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
179 call WaitMSSP
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
180 btfsc SSPCON2,ACKSTAT
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
181 bra menu_interface3 ; No Ack, try again!
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
182
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
183 movff eeprom_address+1,SSPBUF ; High Address byte
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
184 call WaitMSSP
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
185 call I2C_WaitforACK
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
186 movff eeprom_address+0,SSPBUF ; Low Address byte
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
187 call WaitMSSP
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
188 call I2C_WaitforACK
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
189 bsf SSPCON2,RSEN ; Start condition
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
190 call WaitMSSP
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
191
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
192 movlw b'10100111' ; Bit0=0: WRITE, Bit0=1: READ
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
193 movwf SSPBUF ; control byte
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
194 call WaitMSSP
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
195 call I2C_WaitforACK
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
196
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
197 DISPLAYTEXT .19 ; "Profile"
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
198
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
199 menu_interface2:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
200 call rs232_wait_tx ; wait for UART
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
201
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
202 bsf SSPCON2, RCEN ; Enable recieve mode
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
203 call WaitMSSP
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
204
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
205 movff SSPBUF, TXREG
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
206
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
207 movlw d'1'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
208 addwf uart1_temp,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
209 movlw d'0'
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
210 addwfc uart2_temp,F
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
211
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
212 btfsc uart2_temp,7 ; 32KB done?
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
213 bra menu_interface4 ; Yes
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
214
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
215 bsf SSPCON2, ACKEN ; Ack
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
216 call WaitMSSP
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
217 bra menu_interface2 ; go on
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
218
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
219 menu_interface4:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
220 bsf SSPCON2, PEN ; Stop
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
221 call WaitMSSP
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
222
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
223 DISPLAYTEXT .20 ; Done.
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
224
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
225 WAITMS d'250'
21
73014f788032 1.60 stable rc1
heinrichsweikamp
parents: 0
diff changeset
226 bcf LED_blue
0
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
227 bsf PIE1,RCIE ; Interrupt for RS232
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
228 goto surfloop ; back to surfacemode
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
229
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
230 send_internal_eeprom1:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
231 clrf uart1_temp ; Send the total of 256bytes
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
232 clrf EEADR ; Send bytes 0-255 from internal EEPROM
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
233 send_internal_eeprom2:
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
234 call read_eeprom ; read byte
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
235 movff EEDATA,TXREG ; send byte
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
236 incf EEADR,F ; increase pointer
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
237 call rs232_wait_tx ; wait for UART
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
238 decfsz uart1_temp,F ; until limit reached
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
239 bra send_internal_eeprom2
96a35aeda5f2 Initial setup
heinrichsweikamp
parents:
diff changeset
240 return