久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2822|回復(fù): 0
收起左側(cè)

BASCOM AVR版簡(jiǎn)單SD卡播放器仿真

[復(fù)制鏈接]
ID:342822 發(fā)表于 2021-6-15 17:48 | 顯示全部樓層 |閱讀模式
屏幕截圖(71).png
提醒:由于SD卡周邊電路欠缺此圖只能仿真使用!如據(jù)此圖做實(shí)物將損壞你的SD卡


源程序:

'---------------------------------------------------------------

'簡(jiǎn)單波形播放器(SD/MMC)<Wave1.0.bas>

'程序員:Behnam Zakizade

'>>>所有MMC接口子程序由:Ranjit Diol編寫(xiě)


'>非常感謝迪奧,他允許使用MMC代碼

'編譯器:BASCOM 1.11.9.1

'創(chuàng)建日期:2009年12月5

'版權(quán)所有:(C)2009wwwavr64com

'許可證:這是一個(gè)免費(fèi)固件,不用于商業(yè)用途版本:1.00
'---------------------------------------------------------------
$regfile = "m8def.dat"
$crystal = 8000000
$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 '光標(biāo)關(guān)閉
Cls
'顯示圖形塊
Deflcdchar 0 , 32 , 32 , 31 , 31 , 31 , 31 , 31 , 32        '第一個(gè) #
Deflcdchar 1 , 32 , 32 , 18 , 26 , 30 , 26 , 18 , 32        '播放/暫停 >|
Deflcdchar 2 , 32 , 32 , 2 , 6 , 14 , 6 , 2 , 32            '返回 <<
Deflcdchar 3 , 32 , 32 , 8 , 12 , 14 , 12 , 8 , 32          '前進(jìn) >>
'PWM
Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Prescale = 1

'常量
Const Msbl = 0

'變量
Dim Indat(512) As Byte                                      '內(nèi)存緩沖區(qū)
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

'別名
Cs Alias Portc.5
Clk Alias Portc.3
Miso Alias Pinc.2                                           'Mcu輸入 <- MMC
Mosi Alias Portc.4                                          'Mcu輸出 -> MMC

'聲明
Declare Sub Minit                                    'M初始化
Declare Sub Mread(byval Addr As Long)                 'M讀取
Declare Sub Msearch                                  'M搜索
Declare Sub Mfirstfile                              'M第一個(gè)文件
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

' 按鍵
Config Pind.6 = Input
Config Pind.7 = Input
Config Pinb.2 = Input
Config Pinb.3 = Input

'設(shè)置上拉
Portd.6 = 1
Portd.7 = 1
Portb.2 = 1
Portb.3 = 1

'別名
First_key Alias Pind.6
Play_key Alias Pind.7
Prev_key Alias Pinb.2
Next_key Alias Pinb.3

'_______________________________________________________________________________
'主程序從這里開(kāi)始:
For I = 1 To 100
   Pwm1a = 0
   Waitms 1
   Pwm1a = 64
   Waitms 1
Next I

Cls : Lcd " Search Card..."                       '搜索SD卡。。。
Call Minit                                          '調(diào)用M 初始化
Call Msearch                                       '調(diào)用M搜索
Call Mfirstfile                                    '調(diào)用M第一個(gè)文件
Call Menu                                           ' 調(diào)用菜單

'Adrrr = 281600                                    '256MB微型的 SD FAT16 起始地址
'Adrrr = 265728                                    '1GB   微型的 SD FAT16 起始地址
'Adrrr = 396288                                    '1GB   數(shù)字硬盤(pán) MMC FAT16 起始地址
'Adrrr = 2113024                                   '1GB   數(shù)字硬盤(pán) MMC FAT32 起始地址

'FAT Addr
'Adrrr = 19968                                     '256 微型的 SD FAT16/32 地址
'Adrrr = 0                                         '1GB 微型的 SD FAT16/32 地址
'Adrrr = 130560                                    '1GB 數(shù)字硬盤(pán) MMC FAT16/32 地址

Xloop:
Set Cs
Shiftout Mosi , Clk , Dat , Msbl      
'Mosi =         要輸出數(shù)據(jù)的端口引腳的名稱(chēng)。 ( A , B , C , D , E , F ) ( 0 ~ 7 )
'Clk =                 時(shí)鐘的端口引腳的名稱(chēng)。 (A, B, C, D, E, F) (0~7)
'Dat =         包含要輸出的數(shù)據(jù)的變量名稱(chēng)。
'Msbl =         輸出位方向和時(shí)鐘邊緣。 (0 到 3)

End
'_______________________________________________________________________________
'DIO提供的初始化SD/MMC[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
'_______________________________________________________________________________
'Diol提供的讀取SD/MMC扇區(qū)[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
'_______________________________________________________________________________
'Behnam提供的搜索SD/MMC的FAT表
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: "
   '------------------------ 如果FAT16,字節(jié)55到59包含“FAT16”字符串
   For I = 55 To 59
      Fat = Fat + Chr(indat(i))
   Next I
   If Fat = "FAT16" Then
      Lcd "FAT16"
   End If
   '------------------------ 如果FAT32,字節(jié)83到87包含“FAT32”字符串
   For I = 83 To 87
      Fat = Fat + Chr(indat(i))
   Next I
   If Fat = "FAT32" Then
      Lcd "FAT32"
   End If
   Wait 2
End Sub
'_______________________________________________________________________________
'Behnam提供的查找SD/MMC的第一個(gè)文件地址
Sub Mfirstfile
   Cls : Lcd " Search File..."
   Address = 0
   Do
      Call Mread(address)
      For I = 1 To 512
         '1是第一個(gè)文件扇區(qū)中“F1”的最后一個(gè)字符
         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                                  '暫停
         Waitms 300
         Do
            If Play_key = 0 Then Exit Do                    '播放
         Loop
         Waitms 300
      End If
      If First_key = 0 Then Address = Firstaddr             '第一個(gè)
      If Prev_key = 0 Then                                  '上一個(gè)
         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


工程文件用Proteus 8.9打開(kāi)




51hei.png

新建文件夾.zip

5.02 MB, 下載次數(shù): 14, 下載積分: 黑幣 -5

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品久久久久无码av | 亚洲www啪成人一区二区麻豆 | 中文字幕在线一区 | 一级做a爰片性色毛片16美国 | 亚洲精品国产电影 | 亚洲精品国产电影 | 国产一区中文 | 日本久久精品 | 伊人久久在线观看 | 日日操av | 久久精品一区二区三区四区 | 亚洲精品一区二区三区四区高清 | 91视频精选 | 中文字幕在线看人 | 久久精品久久久久久 | 色综久久 | 免费一级片 | 久久精品99国产精品 | 亚洲九色 | 玖玖久久 | 国产精品久久久99 | 亚洲日本中文字幕在线 | 久久一| 日本a∨精品中文字幕在线 亚洲91视频 | 日韩在线国产 | 91成人免费观看 | 日韩av在线一区 | 午夜电影在线播放 | 亚洲国产成人精品久久久国产成人一区 | 午夜一区| 伊人爽 | 成年人在线视频 | 日韩国产一区二区 | 亚洲不卡av在线 | 久久免费看 | 国产 日韩 欧美 中文 在线播放 | 亚洲成人网在线观看 | 欧美中文字幕 | 日韩精品一区二区三区中文在线 | 亚洲精品乱码久久久久久久久 | 国产精品区二区三区日本 |