سلام
من میخواستم ببینم که کسی یه آمپلی فایر کوچیک برای بلندگو8اهمی برای تقویت خروجی میکرو کنترلر داره
در ضمن برنامه ای که من استفاده کرده ام اینه:
من میخواستم ببینم که کسی یه آمپلی فایر کوچیک برای بلندگو8اهمی برای تقویت خروجی میکرو کنترلر داره
در ضمن برنامه ای که من استفاده کرده ام اینه:
کد:
$regfile = "m8def.dat"
$crystal = 16000000
$hwstack = 64
$swstack = 64
$framesize = 64
'LCD
Config Lcdpin = Pin , Db4 = Pind.2 , Db5 = Pind.3 , Db6 = Pind.4 , Db7 = _
Pind.5 , E = Pind.1 , Rs = Pind.0
Config Lcd = 16 * 2
Cursor Off : Cls
Deflcdchar 0 , 32 , 32 , 31 , 31 , 31 , 31 , 31 , 32 'First #
Deflcdchar 1 , 32 , 32 , 18 , 26 , 30 , 26 , 18 , 32 'Play/Pause >|
Deflcdchar 2 , 32 , 32 , 2 , 6 , 14 , 6 , 2 , 32 'Back <<
Deflcdchar 3 , 32 , 32 , 8 , 12 , 14 , 12 , 8 , 32 'Forward >>
'PWM
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Prescale = 1
'Constants
Const Msbl = 0
'Variables
Dim Indat(512) As Byte 'Memory buffer
Dim Dat As Byte
Dim Resp As Byte
Dim I As Word
Dim Addr As Long
Dim Address As Long
Dim Fat As String * 5
Dim Firstaddr As Long
Dim Play As Bit
'Aliases
Cs Alias Portc.5
Clk Alias Portc.3
Miso Alias Pinc.2 'Mcu inp <- MMC
Mosi Alias Portc.4 'Mcu out -> MMC
'Declarations
Declare Sub Minit
Declare Sub Mread(byval Addr As Long)
Declare Sub Msearch
Declare Sub Mfirstfile
Declare Sub Menu
Config Pinc.5 = Output
Config Pinc.3 = Output
Config Pinc.4 = Output
Config Pinc.2 = Input
Waitms 300
Config Spi = Soft , Din = Pinc.2 , Dout = Portc.4 , Ss = Portc.5 , Clock = Portc.3
Spiinit
'Keys
Config Pind.6 = Input
Config Pind.7 = Input
Config Pinb.2 = Input
Config Pinb.3 = Input
'Set Pullup
Portd.6 = 1
Portd.7 = 1
Portb.2 = 1
Portb.3 = 1
'Alias
First_key Alias Pind.6
Play_key Alias Pind.7
Prev_key Alias Pinb.2
Next_key Alias Pinb.3
'_______________________________________________________________________________
'Main Prog Start Here:
For I = 1 To 100
Pwm1a = 0
Waitms 1
Pwm1a = 64
Waitms 1
Next I
Cls : Lcd " Search Card..."
Call Minit
Call Msearch
Call Mfirstfile
Call Menu
'Adrrr = 281600 '256MB Micro SD FAT16 Start Addr
'Adrrr = 265728 '1GB Micro SD FAT16 Start Addr
'Adrrr = 396288 '1GB DVRS MMC FAT16 Start Addr
'Adrrr = 2113024 '1GB DVRS MMC FAT32 Start Addr
'FAT Addr
'Adrrr = 19968 '256 Micro SD FAT16/32 Addr
'Adrrr = 0 '1GB Micro SD FAT16/32 Addr
'Adrrr = 130560 '1GB DVRS MMC FAT16/32 Addr
Xloop:
Set Cs
Shiftout Mosi , Clk , Dat , Msbl
End
'_______________________________________________________________________________
'Init SD/MMC By Diol [Compsys1.com]
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
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
End Sub
'_______________________________________________________________________________
'Read SD/MMC Sector By Diol [Compsys1.com]
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
Dim Stn As Byte , A As String * 20 , C As Byte , J1 As Byte
For I = 1 To 512
Shiftin Miso , Clk , Resp , Msbl
Indat(i) = Resp
If Play = 1 Then
Pwm1a = Resp
Waitus 30
End If
Next I
Shiftin Miso , Clk , Resp , Msbl
Shiftin Miso , Clk , Resp , Msbl
Set Cs
End Sub
'_______________________________________________________________________________
'Search FAT Table Of SD/MMC By Sasan
Sub Msearch
Address = 0
Do
Call Mread(address)
For I = 1 To 512
'M is First Char Of "MSDOS5.0" In FAT Sector
If Indat(i) = "M" Then Exit Do
Next I
Address = Address + 512
Home L : Lcd "Addr:" ; Address
Loop
Cls : Lcd "MMC OK"
Lowerline
Lcd "MMC FAT: "
'------------------------ Byte 55 to 59 Contain "FAT16" String, IF FATis16
For I = 55 To 59
Fat = Fat + Chr(indat(i))
Next I
If Fat = "FAT16" Then
Lcd "FAT16"
End If
'------------------------ Byte 83 to 87 Contain "FAT32" String, IF FATis32
For I = 83 To 87
Fat = Fat + Chr(indat(i))
Next I
If Fat = "FAT32" Then
Lcd "FAT32"
End If
Wait 2
End Sub
'_______________________________________________________________________________
'Find First File Address Of SD/MMC By Sasan
Sub Mfirstfile
Cls : Lcd " Search File..."
Address = 0
Do
Call Mread(address)
For I = 1 To 512
'1 is Last Char Of "F1" In First File Sector
If Indat(i) = "1" And Indat(i -1) = "F" Then Exit Do
Next I
Address = Address + 512
Home L : Lcd "Addr:" ; Address
Loop
Cls : Lcd "First File:"
Lowerline
Lcd Address
Firstaddr = Address 'Copy FirstFile Addr
Wait 2
End Sub
'_______________________________________________________________________________
Sub Menu
Address = Firstaddr
Play = 1
Cls : Lcd " Wave Player"
Lowerline
Lcd Chr(0) ; Spc(4) ; Chr(1) ; Spc(4) ; Chr(2) ; Spc(4) ; Chr(3)
Do
'Read Keys
If Play_key = 0 Then 'Pause
Waitms 300
Do
If Play_key = 0 Then Exit Do 'Play
Loop
Waitms 300
End If
If First_key = 0 Then Address = Firstaddr 'First
If Prev_key = 0 Then 'Prev
If Address > Firstaddr Then Address = Address - 1048576
Waitms 50
End If
If Next_key = 0 Then 'Next
Address = Address + 1048576
Waitms 50
End If
Call Mread(address)
Address = Address + 512
Loop
End Sub








دیدگاه