Народ! Программировал ли кто нибуть из под BASCOM мегу с FLASH AT45D161 ?
Помогите разобраться...
Может какой нибудь примерчик, интересует запись в нее звука ... Помогите пожалуста..
Программирование Меги с FLASH AT45D161 из под BASCOM
Сообщений 1 страница 8 из 8
Поделиться12008-02-21 22:55:12
Поделиться22008-02-23 16:16:29
Было такое. Только с 41ой, но по сути дела это тоже самое.
Микра хороша, но слишком принципиальная с командами.Код у меня написан в библиотеках.
'-------------------------------------------------------------------------------
Sub Page_read(byval Page_mem As Word)
'-------------Flash read subroutine---------------------------------------------
'Ïîäïðîãðàììà ÷òåíèÿ çàäàííîé ñòðàíèöû ïàìÿòè
'Âõîä-------page_Mem (0-2047)
'Âûõîä------buf(264) ìàññèâ 264 áàéòà
Reset Select_memory 'select flash ram
N = Current_page_read 'command Current_page_read
Call Byteout() 'out 3 bytes of adress
Shift Page_mem , Left , 1
A = Page_mem
Call Wordout()
N = 0
Call Byteout()
'-------------
Call Byteout()
Call Byteout()
Call Byteout()
Call Byteout()
'ïåðåäàëè 32 dont care bits
For Temp1 = 1 To 264
Call Bytein()
Buf(temp1) = N
Next Temp1
Set Select_memory
End Sub
Sub Bytein()
ldi r23,0
!Out Spdr , R23
Wairh:
sbis spsr, spif
rjmp wairh
in r23,spdr
sts {n},r23
End Sub
Sub Buffer1_to_flash(byval Page_mem As Word)
'-------------Flash write subroutine---------------------------------------------
'Ïîäïðîãðàììà çàïèñè áóôåðà 1 â ñòðàíèöó ïàìÿòè
'Âõîä-------page_Mem (0-2047)
Reset Select_memory
N = Buff1_mem_write ' command write buffer to flash
Call Byteout()
Shift Page_mem , Left , 1
A = Page_mem
Call Wordout()
N = 0
Call Byteout()
Set Select_memory 'deselect memory
Waitms 30
End Sub
Sub Buffer1_write
Reset Select_memory
N = Buff1_write ' command write in buffer
Call Byteout()
N = &H00 '
Call Byteout()
N = &H00 '
Call Byteout()
N = &H00 '
Call Byteout()
'Set Select_memory
End Sub
Sub Page_write(page_mem As Word)
Reset Select_memory
N = Current_page_write ' command write buffer to flash
Call Byteout()
Shift Page_mem , Left , 1
A = Page_mem
Call Wordout()
N = 0
Call Byteout()
' 'deselect memory
'Waitms 30
End SubПоделиться32008-02-23 16:21:09
еще
'-------------------------------------------------------------------------------
Sub Page_read(byval Page_mem As Word)
'-------------Flash read subroutine---------------------------------------------
'Ïîäïðîãðàììà ÷òåíèÿ çàäàííîé ñòðàíèöû ïàìÿòè
'Âõîä-------page_Mem (0-2047)
'Âûõîä------buf(264) ìàññèâ 264 áàéòà
Reset Select_memory 'select flash ram
N = Current_page_read 'command Current_page_read
Call Byteout() 'out 3 bytes of adress
Shift Page_mem , Left , 1
A = Page_mem
Call Wordout()
N = 0
Call Byteout()
'-------------
Call Byteout()
Call Byteout()
Call Byteout()
Call Byteout()
'ïåðåäàëè 32 dont care bits
For Temp1 = 1 To 264
Call Bytein()
Buf(temp1) = N
Next Temp1
Set Select_memory
End Sub
Sub Bytein()
ldi r23,0
!Out Spdr , R23
Wairh:
sbis spsr, spif
rjmp wairh
in r23,spdr
sts {n},r23
End Subи вот
'--------Ïîäïðîãðàììà äëÿ ïåðåäà÷è ïàðàìåòðà èëè òî÷êè â äèñïëåé----------------
Sub Wordout
lds r23, {a+1}
!out spdr, r23
lds r23, {a}
Wait_trh:
sbis spsr, spif
rjmp wait_trh
!out spdr, r23
Wait_trl:
sbis spsr, spif
rjmp wait_trl
End Sub
'-------------Ïîäïðîãðàììà äëÿ ïîñûëêè êîìàíäû äèñïëåþ--------------------------
Sub Byteout
lds r23, {n}
!out spdr, r23
Waitresult:
sbis spsr, spif
rjmp waitresult
End Subесли че не понятно, спрашивайте
Поделиться42008-02-23 20:09:18
Большое спасибо, буду разбираться.
Поздравляю всех с праздником, желаю всего самого наилучшего!!!
(много не пейте, мало тоже)
Поделиться52008-03-06 19:43:15
Ведущийспециалист перепишите пожалуйста коментарии которые выглядят кракозябрами (наверное что-то с кодировкой).
Поделиться62008-03-07 19:58:22
'подпрограмма чтения страницы памяти
'вход-------page_Mem (0-2047)
'выход------buf(264) буфер 264 байта
Reset Select_memory 'select flash ram
N = Current_page_read 'command Current_page_read
Call Byteout() 'out 3 bytes of adress
Shift Page_mem , Left , 1
A = Page_mem
Call Wordout()
N = 0
Call Byteout()
'-------------
Call Byteout()
Call Byteout()
Call Byteout()
Call Byteout()
'передаём 32 dont care bits
For Temp1 = 1 To 264
Call Bytein()
Buf(temp1) = N
Next Temp1
Set Select_memory
End Sub
Sub Bytein()
ldi r23,0
!Out Spdr , R23
Wairh:
sbis spsr, spif
rjmp wairh
in r23,spdr
sts {n},r23
End Sub
Поделиться72008-03-11 12:57:04
В процедуре чтения страницы из микросхемы есть такая строка
Buf(temp1) = N
вопрос:
какой тип задать переменной Buf?
и еще вопросик:
какие типы присвоить остальным переменным в коде? )))
Поделиться82008-03-15 14:42:04
Этот массив на 246 БАЙТ