امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
کار با MMC
نویسنده پیام
فروم باز آفلاین
در حال پیشرفت
***

ارسال‌ها: 480
موضوع‌ها: 122
تاریخ عضویت: دى ۱۳۸۷

تشکرها : 321
( 107 تشکر در 72 ارسال )
ارسال: #1
کار با MMC
با سلام من از این کد برای ارتبتط با MMC استفاده کردم ولی یک سکتور رو میتونم بنویسم و بخونم. مثلا اگر بنویسم Mwrite &h00000000 و خط بعدش هم بنویسم Mwtite &h00000001 دیتایی که تو دومی بهش دادم رو تو سکتور اول جای دیتای قبلی می نویسه خودم فکر میکنم آدرس دهی اشتباهه نظر شما چیه؟

کد:
' Program: MMC.BAS written using Bascom-AVR ver 1.11.6.2
' Basic program to interface with a Sandisk
' MMC module using the SPI protocol.
'
'                 ALPHA CODE
'      **** NOT FOR COMMERCIAL USE *****
'            Ver. 0.0.9  Aug, 2001
'
' Project Reference: MMC-AT103L
' MCU: Atmel AT103L
' Software: Bascom-AVR ver 1.11.6.2
' Atmel Programmer: STK300 development board set at 3.3v.
'                 ISP and terminal output
'
' Initial Date: July 23, 2001
' Projected Completion Date: Unknown
'
' Author: Ranjit Diol
'         rsdiol@compsys1.com
'         http://www.compsys1.com/workbench
'
'***************************************************************
'                      (c) COMPSys, 2001
'                     All Rights Reserved
'***************************************************************

'
'   DISCLAIMER: This file is being released as non-commericial
'   software. It is being provided "AS IS", neither the author,
'   nor COMPSys shall be held liable for any damages caused
'   by its use either directly or indirectly in any form or manner.
'
'===============================================================
'
'Brief: The MMC is a 3volt part therefore all data lines
'       must be conditioned if interfacing with a 5v mcu.
'       Or, a 3.3v MCU can be used such as the AT103L or the AT90LS8535
'
'IMPORTANT NOTE:
'       In SPI mode the MMC's minimum block size is 512 bytes
'       therefore data has to be accumulated first either in an eeprom
'       or in memory before sending it out as a chunk of 512 bytes.
'
'       MMC pins in SPI mode:
'            Pin1:ChipSelect(SS),Pin2:MMC input(MOSI),Pin3:GND,Pin4:3V+,
'            Pin5:Clock(SCK), Pin6:GND, Pin7:MMC output(MISO)
'       AT103L pins:
'            Portb.0 SS,Portb.1 SCK,Portb.2 MOSI, Portb.3 MISO
'
'
'==============================================================

$regfile = "M103def.dat"                                    'AT103L mcu

'Constants
Const Msbl = 0
Const Msbh = 1
Const Dly = 2
Const Bits8 = 8
Const Bits16 = 16
Const Bits32 = 32

'Variables
Dim Res(16) As Byte
Dim Indat(512) As Byte                                      'Memory buffer for temp storage.
Dim Dat As Byte
Dim Resp As Byte
Dim Resp2 As Word
Dim I As Word
Dim J As Word
Dim X As Byte
Dim Y As Byte
Dim K As Byte
Dim Bout As Byte
Dim Addr1 As Byte
Dim Addr2 As Byte
Dim Addr3 As Byte
Dim Addr4 As Byte
Dim Addr As Long
Dim Saddr As Long
Dim Eaddr As Long

'Aliases
Cs Alias Portb.0
Clk Alias Portb.1
Miso Alias Pinb.3                                           'inp
Mosi Alias Portb.2                                          'out

'Declarations
Declare Sub Mprint
Declare Sub Minit
Declare Sub Mstatus
Declare Sub Mwrite(byval Bout As Byte , Byval Addr As Long )
Declare Sub Mread(byval Addr As Long )
Declare Sub Merase(byval Saddr As Long , Byval Eaddr As Long)

'AT103 HW SPI Portb0=SS to MMC 1, Portb1=clock to MMC 5, MISO=Portb3 to MMC 7, MOSI=Portb2 to MMC 2

Config Pinb.0 = Output
Config Pinb.1 = Output
Config Pinb.2 = Output
Config Pinb.3 = Input
Waitms 300
Config Spi = Soft , Din = Pinb.3 , Dout = Portb.2 , Ss = Portb.0 , Clock = Portb.1

Spiinit




'******** MAIN PROGRAM *************
Main:

'Initialize the MMCC
Minit


'If you want to use the ERASE routine
'Uncomment and enter the start/end 32bit address values

'Call erase subroutine enter StartAddr , EndAddr
'Merase &H00000000 , &H00001000


'call write subroutine as: BYTE-TO-WRITE, 32BIT_ADDRESS
Mwrite &HBE , &H00000000

'Call read sub from 512 from address are put in array INDAT
Mread &H00000000

'Call print sub print 512 bytes stored in INDAT array
Mprint


Xloop:
Set Cs
Shiftout Mosi , Clk , Dat , Msbl
Endloop:
Goto Endloop

End                                                         'end program
'************ END OF PROGRAM **************



'======= SUB ROUTINES AND FUNCTIONS =======

'*** INITIALIZATION OF MMC ***
Sub Minit
Set Cs
Dat = &HFF
For I = 1 To 10
  Shiftout Mosi , Clk , Dat , Msbl
Next I
Resp = 255
Reset Cs

Cmd0:
Dat = &H40
Shiftout Mosi , Clk , Dat , Msbl
Addr = &H00000000
Shiftout Mosi , Clk , Addr , Msbl
Dat = &H95
Shiftout Mosi , Clk , Dat , Msbl
While Resp <> &H01
Shiftin Miso , Clk , Resp , Msbl
Wend

Lcd "C0:" ; Hex(resp)
                                       'Initialized
Set Cs
Waitms 50
Reset Cs
Dat = &HFF

Cmd1:
While Resp <> &H00
Set Cs
Shiftout Mosi , Clk , Dat , Msbl
Shiftin Miso , Clk , Resp , Msbl
Reset Cs
Dat = &H41
Shiftout Mosi , Clk , Dat , Msbl
Addr = 0
Shiftout Mosi , Clk , Addr , Msbl
Dat = &HFF
Shiftout Mosi , Clk , Dat , Msbl
Shiftout Mosi , Clk , Dat , Msbl
Shiftin Miso , Clk , Resp , Msbl
Wend

Dat = &HFF
Set Cs
Lcd "C1:" ; Hex(resp)
End Sub

'**** READ routine assumes ADDR uses Status subroutine *****
Sub Mread(byval Addr As Long)
Set Cs
Dat = &HFF
Shiftout Mosi , Clk , Dat , Msbl
Shiftin Miso , Clk , Resp , Msbl
Reset Cs
Dat = &H51
Shiftout Mosi , Clk , Dat , Msbl
Shiftout Mosi , Clk , Addr , Msbl
Dat = &HFF
Shiftout Mosi , Clk , Dat , Msbl
Shiftin Miso , Clk , Resp , Msbl

While Resp <> 0
Shiftin Miso , Clk , Resp , Msbl
Wend

While Resp <> &HFE
Shiftin Miso , Clk , Resp , Msbl
Wend

'Lcd Hex(resp)
For I = 1 To 512
    Shiftin Miso , Clk , Resp , Msbl
    Indat(i) = Resp
    'Print Hex(resp);
Next I

Shiftin Miso , Clk , Resp , Msbl
Shiftin Miso , Clk , Resp , Msbl

Set Cs
Mstatus
'Return
End Sub

'****Block Start Tag / End Tag and ERASE ****
Sub Merase(byval Saddr As Long , Byval Eaddr As Long)

'erase first 1024 bytes

'Block START TAG
Cmd32:

Set Cs
Shiftout Mosi , Clk , Dat , Msbl
Shiftin Miso , Clk , Resp , Msbl
Reset Cs
Dat = &H60
Shiftout Mosi , Clk , Dat , Msbl
Shiftout Mosi , Clk , Saddr , Msbl
Dat = &HFF
Shiftout Mosi , Clk , Dat , Msbl
Shiftout Mosi , Clk , Dat , Msbl
Shiftin Miso , Clk , Resp , Msbl
While Resp <> &H00
Shiftin Miso , Clk , Resp , Msbl
Wend

'Block END TAG
Cmd33:

Set Cs
Shiftout Mosi , Clk , Dat , Msbl
Shiftin Miso , Clk , Resp , Msbl
Reset Cs
Dat = &H61
Shiftout Mosi , Clk , Dat , Msbl
Shiftout Mosi , Clk , Eaddr , Msbl
Dat = &HFF
Shiftout Mosi , Clk , Dat , Msbl
Shiftout Mosi , Clk , Dat , Msbl
Shiftin Miso , Clk , Resp , Msbl
While Resp <> &H00
Shiftin Miso , Clk , Resp , Msbl
Wend

'ERASE SELECTED BLOCK
Cmd38:
Set Cs
Shiftout Mosi , Clk , Dat , Msbl
Shiftin Miso , Clk , Resp , Msbl
Reset Cs
Dat = &H66
Shiftout Mosi , Clk , Dat , Msbl
Addr = 0
Shiftout Mosi , Clk , Addr , Msbl
Dat = &HFF
Shiftout Mosi , Clk , Dat , Msbl
Shiftout Mosi , Clk , Dat , Msbl
Shiftin Miso , Clk , Resp , Msbl
While Resp = 0
Shiftin Miso , Clk , Resp , Msbl
Wend

Mstatus
End Sub

'** WRITE Routine assumes ADDR, BOUT uses Status subroutine **
Sub Mwrite(byval Bout As Byte , Byval Addr As Long)
Cmd24:
Set Cs
Dat = &HFF
Shiftout Mosi , Clk , Dat , Msbl
Shiftin Miso , Clk , Resp , Msbl
Reset Cs
Dat = &H58
Shiftout Mosi , Clk , Dat , Msbl
Shiftout Mosi , Clk , Addr , Msbl
Dat = &HFF
Shiftout Mosi , Clk , Dat , Msbl
Shiftout Mosi , Clk , Dat , Msbl
Shiftin Miso , Clk , Resp , Msbl
While Resp <> 0
Shiftin Miso , Clk , Resp , Msbl
Wend
Lcd "C24:" ; Hex(resp)

Dat = &HFE
Shiftout Mosi , Clk , Dat , Msbl

For I = 1 To 512
Shiftout Mosi , Clk , Bout , Msbl
Next I
Dat = &HFF
Shiftout Mosi , Clk , Dat , Msbl
Shiftout Mosi , Clk , Dat , Msbl
Shiftin Miso , Clk , Resp , Msbl

'If Y = &H05 write is a success
Y = Resp And &H0F

'If Resp = 0 the MMC is busy
Shiftin Miso , Clk , Resp , Msbl
While Resp = 0
Shiftin Miso , Clk , Resp , Msbl
Wend

Lowerline

Lcd "Wr:" ; Hex(y)
Set Cs
Mstatus
End Sub

'Get MMC Status
Sub Mstatus
Cmd13:
Set Cs
Shiftout Mosi , Clk , Dat , Msbl
Shiftin Miso , Clk , Resp , Msbl
Reset Cs
Dat = &H4D
Shiftout Mosi , Clk , Dat , Msbl
Addr = 0
Shiftout Mosi , Clk , Addr , Msbl
Dat = &HFF
Shiftout Mosi , Clk , Dat , Msbl
Shiftout Mosi , Clk , Dat , Msbl
Shiftin Miso , Clk , Resp2 , Msbl
Print "Status:" ; Hex(resp2)
Set Cs
'Return
End Sub

Sub Mprint
For I = 1 To 512
Print Hex(indat(i));
Next
Mstatus
End Sub

--------------------
علی شیرمحمدی
--------------------
(آخرین ویرایش در این ارسال: ۱۱-شهریور-۱۳۸۹, ۱۴:۳۷:۴۴، توسط فروم باز.)
۱۱-شهریور-۱۳۸۹, ۱۴:۳۲:۳۴
ارسال‌ها
پاسخ
فروم باز آفلاین
در حال پیشرفت
***

ارسال‌ها: 480
موضوع‌ها: 122
تاریخ عضویت: دى ۱۳۸۷

تشکرها : 321
( 107 تشکر در 72 ارسال )
ارسال: #2
RE: کار با MMC
با سلام
یه سوال درباره ی Fat داشتم میخواستم بدونم دستور خواندن یک خط از یک فایل Text چیه و اینکه تو دستور Open به جای Append چی باید بنویسیم؟
یه سوال دیگه من تو یه خط از این Text نوشتم:
کد:
00 , 11 , F8 , C1
حالا میخوام این رو بخونم و به Hex تیدیل کنم (که میشه 4 تا عدد Hex)
چه طوری این کار رو باید بکنم؟

--------------------
علی شیرمحمدی
--------------------
۱۲-شهریور-۱۳۸۹, ۱۱:۵۰:۵۳
ارسال‌ها
پاسخ
8511110033 آفلاین
تازه وارد

ارسال‌ها: 1
موضوع‌ها: 0
تاریخ عضویت: مهر ۱۳۸۹

تشکرها : 0
( 0 تشکر در 0 ارسال )
ارسال: #3
RE: کار با MMC
سلام
من پروژه کارشناسیم ساخت mp3player با atmega avr و mmc هستش که lcd هم داره و از آی سی دیکدر mp3 سری vs توش استفاده می شه .می خواستم ببینم شما در این زمینه کار کردید تا به حال؟
اگه مطالب خوبی مث شماتیک و سورس کدویژن یا بسکام در این زمینه دارید لطفا در پیام خصوصی به من اطلاع بدید تا ایمیلم رو بدم.
(آخرین ویرایش در این ارسال: ۱۰-آبان-۱۳۸۹, ۰۰:۰۶:۵۴، توسط 8511110033.)
۱۰-آبان-۱۳۸۹, ۰۰:۰۵:۳۵
ارسال‌ها
پاسخ
t3r!p3000 آفلاین
         
*****

ارسال‌ها: 5,050
موضوع‌ها: 83
تاریخ عضویت: اردیبهشت ۱۳۸۵

تشکرها : 34447
( 17423 تشکر در 5116 ارسال )
ارسال: #4
RE: کار با MMC
(۱۰-آبان-۱۳۸۹, ۰۰:۰۵:۳۵)8511110033 نوشته است: اگه مطالب خوبی مث شماتیک و سورس کدویژن یا بسکام در این زمینه دارید لطفا در پیام خصوصی به من اطلاع بدید تا ایمیلم رو بدم.
وقت قبلی هم لازم هستش بگیریم که با منشیتون هماهنگ کنیم !!!!




مهندس تو خود سایت بسکام یه نمونه کامل هستش :

http://www.mcselec.com/index.php?option=...&Itemid=57


نقشه :

[تصویر:  mp3b2.jpg]


برنامه :

کد php:
$prog &HFF , &H4F , &HC5 , &HFF 'FUSE BITS generated
$regfile = "M128def.dat" '
IT'S POSSIBLE USE DIFFERENT AVR-CHIPS
$crystal = 14745600 '
BUT this NOT TESTED
$baud 
115200
'-------------------------------------------------------------------------------
Config Timer1 = Timer , Prescale = 64
Config Clock = Soft
Enable Interrupts
Enable Timer1
Enable Urxc '
abilita rs232
On Timer1 Timer_1
On Urxc Rs_232 
'salto per rs232
Config Date = Dmy , Separator = .
'
-------------------------------------------------------------------------------
 
Avanti Alias Ping.0
 Led Alias Portg.1
 Vs_miso Alias Pinc.0
 Vs_mosi Alias Portc.1
Vs_clock Alias Portc.2
 Xcs Alias Portc.3
 Xreset Alias Portc.4
 Dreq Alias Pinc.5
 Bsync Alias Portc.6
'-------------------------------------------------------------------------------
Config Avanti = Input '
pulsante avanti
Config Led 
Output 'led
Config Vs_miso = Input '
serial input vs-1001
Config Vs_mosi 
Output  'serial out vs-1001
Config Vs_clock = Output '
serial clock vs-1001
Config Xcs 
Output 'VS Chip Select
Config Xreset = Output '
VS Reset
Config Dreq 
Input 'VS Data Request
Config Bsync = Output '
VS Stream Request
'-------------------------------------------------------------------------------
Declare Sub Vs_init()
Declare Sub Soft_reset()
Declare Sub Vs_write(byval Vs_address As Byte , Byval Data1 As Byte , Byval Data2 As Byte)
Declare Function Vs_read(byval Vs_address As Byte) As Word
Declare Sub Send_mp3(byval Filename As String)
'
-------------------------------------------------------------------------------
Const 
Vs_rd = &B0000_0011 'Write command vs1001
Const Vs_wr = &B0000_0010 '
Read command vs1001
Const Vs_mode 0
Const Vs_status 1
Const Vs_clockf 3
Const Vs_decode_time 4
Const Vs_audata 5
Const Vs_volume 11
'-------------------------------------------------------------------------------
Dim B As Byte
Dim I As Integer
Dim J As Long
Dim Curbyte As Long
Dim S As String * 20
Dim Sample_rate As Word
Dim Bit_rate As Word
Dim Is_stereo As Word
Dim Audata As Word
Dim Filename As String * 11
Dim Mmc_data(512) As Byte '
512 byte
Dim Tempo_new 
As Word
Dim Tempo_old 
As Word
Dim Flag_read 
As Bit
Dim Flag_play 
As Bit
Dim Comando 
As String 10
Dim Mode_low 
As Byte
Dim Mode_hig 
As Byte
Dim Volume 
As Word
Dim Volume_low 
As Byte
Dim Volume_hig 
As Byte
'-------------------------------------------------------------------------------
$Include "Config_MMC.bas" '
include mmc

If Gbdriveerror <> 0 Then End
$Include 
"Config_AVR-DOS.BAS" 'include avr-dos

B = Initfilesystem(1) '
init file system
If <> 0 Then Print "Errore MMC" 'se errore
'
-------------------------------------------------------------------------------
Bsync 0
Xreset 
0
Xcs 
1
Portg.0 
1  'res pull up
Flag_play = 0 '
sta suonando ?
Flag_read 'gia letto ?
'
-------------------------------------------------------------------------------
'-------------------------- PROGRAM START -------------------------------------
'
-------------------------------------------------------------------------------
Print 
"Dir *.mp3" 'dir mp3
Print
'
-------------------------------------------------------------------------------
'---------------------- crea una lista dei brani mp3 presenti sulla MMC --------
'
-------------------------------------------------------------------------------
Open "Lista.txt" For Output As #9 'create file.list in MMC
Dir"*.mp3")
While 
Len(s) > 0
 
Print " " Filedate() ; " " Filetime() ; " " Filelen()
 Print 
#9 , S 'memorizza la lista
 
Dir()
Wend
Close 
#9
'-------------------------------------------------------------------------------
Print "VS1001 Init"
Vs_init '
reset hardware e inizializza
'-------------------------------------------------------------------------------
'
--------------------------- MAIN PROGRAMM -------------------------------------
'-------------------------------------------------------------------------------
Do
 Open "Lista.txt" For Input As #9 '
OPEN LA LISTA
 
While Eof(#9) = 0
 
Line Input #9 , S 'READ filename Mp3
 
Call Send_mp3(s'play mp3
 Wend
 Close #9

 Loop
End
'
-------------------------------------------------------------------------------
'---------------------------- TIMER 1 ------------------------------------------
'
-------------------------------------------------------------------------------
Timer_1:
  If 
Bsync And Flag_play And Flag_read 1 Then 'per leggere inforamzioni
 Flag_read = 0
 Audata = Vs_read(vs_audata)
 Sample_rate = Audata And &H1E00
 Rotate Sample_rate , Right , 9
 Bit_rate = Audata And &H1FF
  Is_stereo = Audata And &H8000
 Rotate Is_stereo , Right , 15
 Print Sample_rate ; "," ; Bit_rate ; " Kbs," ; Is_stereo '
print informations

 End 
If

 If 
Bsync And Flag_play And Flag_read 0 Then
 Tempo_new 
Vs_read(vs_decode_time)


 If 
Tempo_new <> Tempo_old Then Print Tempo_new " Sec"
 
Tempo_old Tempo_new

 End 
If


Return
'-------------------------------------------------------------------------------
'
---------------------- RS 232 -------------------------------------------------
'-------------------------------------------------------------------------------
Rs_232:
 Comando = Inkey()
 If Comando = "1" Then
 Mode_low.7 = 1
 Bsync = 0
 Vs_write Vs_mode , &H0 , Mode_low '
no loudness

 End 
If
 If 
Comando "2" Then
 Mode_low.7 
0
 Bsync 
0
 Vs_write Vs_mode 
, &H0 Mode_low 'loudness

 End If
 If Comando = "3" Then
 Mode_low.1 = 0
 Bsync = 0
 Vs_write Vs_mode , &H0 , Mode_low '
play normale

 End 
If
 If 
Comando "4" Then
 Mode_low.1 
1
 Bsync 
0
 Vs_write Vs_mode 
, &H0 Mode_low 'play veloce

 End If
 If Comando = "5" And Volume_low < 250 Then
 Volume_hig = Volume_hig + 5
 Volume_low = Volume_low + 5
 Bsync = 0
 Vs_write Vs_volume , Volume_hig , Volume_low '
volume down

 End 
If
 If 
Comando "6" And Volume_low 0 Then
 Volume_hig 
Volume_hig 5
 Volume_low 
Volume_low 5
 Bsync 
0
 Vs_write Vs_volume 
Volume_hig Volume_low 'volume up

 End If
 Comando = ""
Return
'
-------------------------------------------------------------------------------
'------------------------------ MP3 SUBROUTINES --------------------------------
'
-------------------------------------------------------------------------------
Function 
Vs_read(byval Vs_address As Byte) As Word
 Xcs 
'Xcs low
 B = Vs_rd
 Shiftout Vs_mosi , Vs_clock , B , 1
 Shiftout Vs_mosi , Vs_clock , Vs_address , 1
 B = 0
 Shiftin Vs_miso , Vs_clock , B , 1
 Vs_read = B
 Shift Vs_read , Left , 8
 B = 0
 Shiftin Vs_miso , Vs_clock , B , 1
 Vs_read = Vs_read + B
 Xcs = 1 '
Xcs high

 End 
Function
'-------------------------------------------------------------------------------
'
-------------------------------- WRITE ROUTINE --------------------------------
'-------------------------------------------------------------------------------
Sub Vs_write(byval Vs_address As Byte , Byval Data1 As Byte , Byval Data2 As Byte)
 Xcs = 0
 B = Vs_wr
 Shiftout Vs_mosi , Vs_clock , B , 1
 Shiftout Vs_mosi , Vs_clock , Vs_address , 1
 Shiftout Vs_mosi , Vs_clock , Data1 , 1
 Shiftout Vs_mosi , Vs_clock , Data2 , 1
 Xcs = 1

 End Sub
'
-------------------------------------------------------------------------------
'------------------------------- RESETTA E INIZILIZZA --------------------------
'
-------------------------------------------------------------------------------
Sub Vs_init()
 
Xreset 0
 Waitms 5
 Xreset 
1
 Waitms 10


 
Do : Led Dreq Loop Until Dreq 1
 Vs_write Vs_mode 
, &H0 , &H4 'reset
 
 Do : Led = Dreq : Loop Until Dreq = 1
 Mode_low.7 = 1
 Vs_write Vs_mode , &H0 , Mode_low '
bass
 
 
Do : Led Dreq Loop Until Dreq 1
 Vs_write Vs_clockf 
, &H0 , &H0 'clockf 24,xx MHz
 
 Do : Led = Dreq : Loop Until Dreq = 1
 Vs_write Vs_volume , &H0 , &H0 '
volume =0 massimo

 
End Sub
'-------------------------------------------------------------------------------
'
--------------------------- SOFT RESET VS1001 ---------------------------------
'-------------------------------------------------------------------------------
Sub Soft_reset
 Do : Led = Dreq : Loop Until Dreq = 1 '
wait Dreq
 Vs_write Vs_mode 
, &H0 , &H4 'reset

 End Sub
'
-------------------------------------------------------------------------------
'---------------------------- SEND FILE MP3 ------------------------------------
'
-------------------------------------------------------------------------------
Sub Send_mp3(byval Filename As String)
 Print 
"Play : " Filename
 Soft_reset 
'resetta vs1001
 Flag_read = 1 '
per leggere una volta sample rate etc
 Flag_play 
'inizia a leggere dopo che č stato letto il primo pacchetto
 
 Open Filename For Binary As #10 '
apri il file mp3 e play song
 
 
Do : Led Dreq Loop Until Dreq 'wait Dreq
 
 While Eof(#10) = 0
 Get #10 , Mmc_data(1) , , 512 '
preleva 512 byte
 
Do : Led Dreq Loop Until Dreq 'wait Dreq
 
 For I = 1 To 16
 For J = 1 To 32
 
 Bsync = 1
 Shiftout Vs_mosi , Vs_clock , Mmc_data(curbyte) , 1
 Bsync = 0
 Incr Curbyte
 Next J
 Do : Led = Dreq : Loop Until Dreq = 1 '
wait Dreq
 Next I 
'first 32
 Curbyte = 1 '
after 16 16x32=512 byte
 
If Avanti 0 Then Goto Esci 'pulsante up
 Flag_play = 1 '
playing primo pacchetto

 Wend

Esci
:
 
Flag_play 'stop play
 Close #10
 For I = 1 To 2048 '
send 2048 zeros to clear buffer
 B 
0
 Shiftout Vs_mosi 
Vs_clock 'send 2048 byte

 Next I
 Print "MP3 End" '
end song

 Waitms 100 
'aspetta 100
End Sub 


و مدار :

[تصویر:  mp3b1.jpg]


و دریافت فایل های مورد نیاز :

http://www.mcselec.com/index.php?option=...&Itemid=54
۱۰-آبان-۱۳۸۹, ۰۰:۴۴:۳۷
ارسال‌ها
پاسخ
تشکر شده توسط : رسول, reza555


پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 1 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS