| Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
пробемка с определением ошибки выведеной на lcd
01.06.2010, 18:40
|
|
|
Временная регистрация
Регистрация: 18.12.2008
Сообщений: 59
Сказал спасибо: 13
Сказали Спасибо 1 раз в 1 сообщении
|
пробемка с определением ошибки выведеной на lcd
Добрый день всем.Возникла проблемка
Собрал мк по схемке, была проблема с определением mmc карты, с ней я разобрался потом появилась ошибка ‹no item› из кода представленого ниже, в программировании я не очень.
Собственно сам вопрос: почему вылетает ошибка
При нажатии кнопки set вылетает ошибка IO Err все остальные кнопки нереагируют на нажатие.
ниже я выложил все что шло в комплекте к мк
собственно ссылка на сайт проекта http://elm-chan.org/works/vlp/report_e.html
Main
main_index:
ldiw D, 0
rcall file_dir_init ;Initialize directory index
rcall clr_index
mi_l1:
rcall file_dir_next ;Get next file
rjne mi_err ;/
cpw Z, _0 ;No more?
breq mi_l2 ;/
rcall chk_index ;Check if *.txt
brne mi_l1 ;/
rcall add_index ;Add it to index list
brne mi_l1 ;/
mi_l2:
rcall disp_item
mi_l3:
rcall chk_online
rcall get_key_nw
breq mi_l3
sbrc AL, K_NEXT
rcall idx_next
sbrc AL, K_PREV
rcall idx_prev
sbrc AL, K_SET
rjmp main_list
sbrc AL, K_CLR
rjmp main_index
rjmp mi_l2
main_list:
rcall get_item
ldiw Y, File1
ldiw A, Buff1
rcall file_open
cpw Y, _0
rjeq mi_err
rcall clr_index
ml_l1:
ldiw Z, LineBuf ;Get next line
rcall file_gets ;
brne ml_l2 ;/
lds AL, LineBuf ;Check if valid line
cpi AL, '0' ;
brcs ml_l1 ;/
rcall add_index ;Add it to index list
brne ml_l1 ;/
ml_l2:
rcall disp_item_file
ml_l3:
rcall get_key_nw
breq ml_l3
sbrc AL, K_NEXT
rcall idx_next
sbrc AL, K_PREV
rcall idx_prev
sbrc AL, K_CLR
rjmp main_index
sbrs AL, K_SET
rjmp ml_l2
ml_l4:
rcall get_item
ldiw Y, File1
ldiw A, Buff1
rcall file_open
cpw Y, _0
breq ml_l3
rcall play
sbrc AL, K_NEXT
rjmp pi_next
sbrc AL, K_PREV
rjmp pi_prev
rjmp ml_l3
pi_next: rcall idx_next
rcall disp_item_file
rjmp ml_l4
pi_prev: rcall idx_prev
rcall disp_item_file
rjmp ml_l4
disp_item_file:
rcall lcd_clear
ldsw A, Index
cp AL, AH
brcc di_noitem
inc AL
rcall lcd_prin_val
ldi AL, ':'
rcall lcd_wr_chr
rcall get_item
ldiw Y, File1
ldiw A, Buff1
rcall file_open
brne dif_nofile
cpw Y, _0
breq dif_nofile
ldiw Z, LineBuf
ldiw C, 32
rcall file_read
brne dif_ivd
cpi CL, 32
brne dif_ivd
ldiw Z, LineBuf
lddw A, Z+0
cpi AL, 'V'
brne dif_ivd
cpi AH, 'D'
brne dif_ivd
adiw ZL, 16
std Z+14, _0
rcall lcd_mprin
ret
dif_nofile:
ldiw Z, id_nofile*2
rjmp lcd_fprin
dif_ivd:
ldiw Z, id_invalid*2
rjmp lcd_fprin
disp_item:
rcall lcd_clear
ldsw A, Index
cp AL, AH
brcc di_noitem
inc AL
rcall lcd_prin_val
ldi AL, ':'
rcall lcd_wr_chr
rcall get_item
rcall lcd_mprin
ret
di_noitem:
ldiw Z, id_noitem*2
rjmp lcd_fprin
idx_next:
ldsw B, Index
inc BL
cp BL, BH
brcc PC+3
sts Index, BL
ret
idx_prev:
lds BL, Index
subi BL, 1
brcs PC+3
sts Index, BL
ret
get_item:
lds DL, Index
ldiw Z, List
subi DL, 1
brcc PC+2
ret
ld AL, Z+
cpi AL, 0
brne PC-2
rjmp PC-6
add_index:
ldiw Z, LineBuf
ldsw X, ListPtr
ldiw C, ListPtr+2000
cpw X, C
breq PC+10
ld AL, Z+
st X+, AL
cpi AL, 0
brne PC-6
lds AL, Index+1
inc AL
sts Index+1, AL
stsw ListPtr, X
ret
clr_index:
stsw Index, _0
ldiw A, List
stsw ListPtr, A
ret
chk_index:
ldd AL, Z+8 ;*.TXT
cpi AL, 'T' ;
brne ci_ret ;
ldd AL, Z+9 ;
cpi AL, 'X' ;
brne ci_ret ;
ldd AL, Z+10 ;
cpi AL, 'T' ;
brne ci_ret ;/
ldiw X, LineBuf
ldi CL, 0
ld AL, Z+
inc CL
cpi AL, ' '+1
brcs PC+2
st X+, AL
cpi CL, 8
brne PC+3
ldi AL, '.'
st X+, AL
cpi CL, 11
brne PC-10
st X+, _0
ci_ret: ret
mi_err:
clr T14L
ldiw Z, die_ioerr*2
rjmp die
id_noitem:
.db "‹no item›",0
id_nofile:
.db "‹no file›",0
id_invalid:
.db "‹invalid›",0
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 22:45.
|
|