Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Исходники » Играем WAV с SD карты


Играем WAV с SD карты

Сообщений 1 страница 29 из 29

1

Код:
'---------------------------------------------
'Проигрыватель Wav с карточки SD\MMC Y.D.E. 2011
'Первоисточник http://avrprojects.info/avr-projects/mmc-card-based-wav-player/
'---------------------------------------------

'  mega8      SD\MMC
'  25 PC2-----1 CS
'  26 PC3-----2 MOSI
'           --3 Gnd
'           --4 +3.3v
'  27 PC4-----5 SCK
'           --6 Gnd
'  28 PC5-----7 MISO
'
'  15 PB1--4,7mF--Speeker--Gnd
'
'------------------------------------------
$regfile = "m8def.dat"
$crystal = 11059200                                         '
$baud = 9600

Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Down , Prescale = 1       ' шим модулятор PWM
Pwm1a = 255
Pwm1b = 255
'Constants
Const Msbl = 0
Const Msbh = 1
Const Dly = 2
Const Bits8 = 8
Const Bits16 = 16
Const Bits32 = 32

'Dim
Dim Dat As Byte
Dim Resp As Byte
Dim I As Word
Dim Addr As Long
Dim Adres As Long
Dim Tanzim As Byte
Dim Ali As Byte
Dim Test As Long
Dim Copy As Long
Dim Shomare As Long
Dim Hassan As Byte
'Aliases
Cs Alias Portc.2
Mosi Alias Portc.3
Clk Alias Portc.4
Miso Alias Pinc.5


'Declarations
Declare Sub Minit
Declare Sub Readmmc(byval Addr As Long )
Declare Sub Mread(byval Addr As Long )
'Configs
Config Portc.5 = Output
Config Portc.2 = Output
Config Portc.4 = Output
Config Pinc.3 = Input


Waitms 300
Config Spi = Soft , Din = Pinc.5 , Dout = Portc.3 , Ss = Portc.2 , Clock = Portc.4
 Enable Interrupts
 Enable Spi

 Spiinit

'******** MAIN PROGRAM *************

' Reset Portd.3
Main:
 'Initialize the MMCC
 Wait 2
  Print ""
  Print "Init MMC"
 Minit
 Adres = 0
  Print "ok"

 Wait 2
  Print "read"
    Test = 512 * 12877
' Inja:
While Adres <> Test

 ' Print Adres
  Call Readmmc(adres)
  Adres = Adres + 512
Wend
Print "End of program"
Endloop:
Goto Endloop
End                                                         'end program
'***************************** END OF PROGRAM **********************************

'======= SUB ROUTINES AND FUNCTIONS =======
'*** Инициализация карты MMC ***
Sub Minit
 Set Cs
 Dat = &HFF                                                 ' отправляем FF
 For I = 1 To 10                                            '10 раз чтоб MMC получила тактовые импульсы для свойх нужд (не менее 8)
  Shiftout Mosi , Clk , Dat , Msbl                          '
 Next I

 Resp = 255
 Reset Cs

Print "Reset MMC"
 Cmd0:                                                      ' команда 0 сброс карты 40,00,00,00,00,95
  Dat = &H40                                                '40
    Shiftout Mosi , Clk , Dat , Msbl
  Addr = &H00000000
    Shiftout Mosi , Clk , Addr , Msbl
  Dat = &H95
    Shiftout Mosi , Clk , Dat , Msbl

  While Resp <> &H01                                        ' ждем отклик 01 если всё нормально (другие биты указывают на ошибку)
    Shiftin Miso , Clk , Resp , Msbl
        Print "Otklik " ; Resp
  Wend
 Print "Reset OK!"
 Set Cs
  Waitms 50
 Reset Cs

 Dat = &HFF
 Print "Return SPI"
 Cmd1:                                                      ' команда 1 перевод карты в режим spi 41,00,00,00,00,FF
 While Resp <> &H00                                         ' ждем отклик 00 если всё нормально в противном случае повторяем
  Set Cs
    Shiftout Mosi , Clk , Dat , Msbl
    Shiftin Miso , Clk , Resp , Msbl
  Reset Cs
  Dat = &H41                                                ' код команды 41
    Shiftout Mosi , Clk , Dat , Msbl                        ' 00000000
  Addr = 0
    Shiftout Mosi , Clk , Addr , Msbl                       ' FF вместо CRC
  Dat = &HFF
    Shiftout Mosi , Clk , Dat , Msbl                        ' пустой для тактов
    Shiftout Mosi , Clk , Dat , Msbl
    Shiftin Miso , Clk , Resp , Msbl                        ' принимаем отклик (01)
   Print "otklik SPI " ; Resp
 Wend

 Dat = &HFF
 Set Cs
 Print "Init OK!"
End Sub



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

 Dat = &H51                                                 'команда 51 читать блок 512 байт
   Shiftout Mosi , Clk , Dat , Msbl                         'адрес
   Shiftout Mosi , Clk , Addr , Msbl

 Dat = &HFF                                                 'FF вместо СRC
   Shiftout Mosi , Clk , Dat , Msbl
   Shiftin Miso , Clk , Resp , Msbl

 While Resp <> 0                                            ' пока карта думает, перед посылкой она даст 0 потом FE
   Shiftin Miso , Clk , Resp , Msbl
 Wend

 While Resp <> &HFE                                         ' посылка данных предваряется байтом FE перед
   Shiftin Miso , Clk , Resp , Msbl
 Wend

 For I = 1 To 512                                           ' принимаем блок 512 байт
    Shiftin Miso , Clk , Resp , Msbl
'    If Resp <> 255 And Resp <> 0 Then                       'Записываем на чистую карточку FAT 1 файл WAV 22кгц 8бит моно
'     Print "Block # " ; Addr ; " " ; I ; " - " ; Resp       'с помощью этого кода высматриваем адрес где данные не равны 0 или 255
'     Waitms 50                                              'потом подставляем этот адрес в качестве стартового
'    End If
      Pwm1a = Resp
      Pwm1b = Resp

      Waitus 29
 Next I

 Shiftin Miso , Clk , Resp , Msbl                           ' пропускаем два байта CRC
 Shiftin Miso , Clk , Resp , Msbl
Set Cs

End Sub

Играет Wav 22кГц 8бит моно начиная с нулевого адреса.
с FAT пока только пытаюсь разобраться.

Конвертировал Nero Wav Editor
На карточку записывал с помощью картридера
программой: http://mh-nexus.de/downloads/HxDen.zip редактор диска

0

2

Вот бы сделать что бы оно записывало и потом воспроизводило, просто есть идея сделать эхо репитер (попугай) для радиостанции

0

3

Димон написал(а):

Играем WAV с SD карты

Добрый вечер. Вопрос, а как изменяется объём карты памяти. Вот пример:

Код:
Test = 512 * 7800 'Это объём 1Гб

А мне надо 128 Мб

0

4

Карта памяти, это массив. Данные хранятся блоками по 512 байт. Мы задаём адрес блока и считываем его целиком - все 512 байт, а потом разбираем его на части. От размера карты зависит количество этих блоков. Программа не знает какая у неё карта памяти просто мы не должны задавать адреса которых нет.

0

5

А комп как-то же знает размер ? Может сначала размер считывать ??

0

6

Димон написал(а):

Карта памяти, это массив. Данные хранятся блоками по 512 байт. Мы задаём адрес блока и считываем его целиком - все 512 байт, а потом разбираем его на части. От размера карты зависит количество этих блоков. Программа не знает какая у неё карта памяти просто мы не должны задавать адреса которых нет.

Я так  ничего не понял

Код:
 
Wait 2
  Print "read"
    Test = 512 * 12877
' Inja:
While Adres <> Test

То есть, если у нас карта памяти 128Мб=125642752 байт то у нас получается 125642752/512=245396 - это количество блоков. И это кол-во мы должны вписать в код?

Код:
Wait 2
  Print "read"
    Test = 512 * 245396
' Inja:
While Adres <> Test

Если я ошибаюсь поправите меня. :dontknow:

0

7

nagana написал(а):

Если я ошибаюсь поправите меня

test=512*12877 это размер файла который надо прочитать. в общем считываем именно столько байт блоками по 512 байт

0

8

Собрал устройство по вашей схеме, Atmega8L и MicroSD карта, питается 3.3В от блока питания на MC34063 собранного по примеру с Даташита с указаным там доп.фильтром
http://s3.uploads.ru/t/tcEvT.jpg

на выходе шима меги последовательно с динамиком 0,25Вт 8Ом стоит конденсатор 4.7мкФ, сама логика работает правильно, всё утсраивает, но только включается ШИМ для генерации звука - сразу появляется фон, на слух килогерц 10... как можно от него избавиться, не подскажете? великое качество звука от устройства не требуется, нужно издавать "дань-дынь" в машине при открытой двери, но этот ВЧ писк высверливает мозг... :(

Отредактировано phantom36 (2013-04-06 18:25:38)

0

9

вообще у DC-DC преобразователя частота плавающая, резать фильтрами - не получится или это всё сильно повлияет на сам источник звука
варианта есть два: попробовать питание с импульсника профильтровать ёмкостями (по НЧ и ВЧ) + дросселем (надеюсь он у вас стоит как на схеме?) или взять попробовать другой преобразователь в районе 2МГц
впрочем есть ещё обертоны - их никто не отменял, следовательно надо пробовать..

хотя пардон, судя по описанию проблема в низкой скорости самого ШИМа (раз свистит), попробуйте его частоту увеличить (пред делитель уменьшить)

Отредактировано RDW (2013-04-07 11:32:15)

0

10

Да, проблема однозначно в низкой частоте ШИМ.
Не обязательно так )) нужно просто фильтр второго или третьего порядка с частотой среза наивысшей воспроизводимой частоты. Можно организовать что-то вроде Баттерворта на ОУ, так меньше деталей. Можно конечно несколько RC цепочек, но сильно ослабляет и искажает звук. Если интересно, почитать можно с примерами ЗДЕСЬ
или ТУТ
UPD. Да, и еще есть шикарнейшая книга, там тоже все доходчиво- Хоровиц П., Хилл У. Искусство схемотехники

В качестве варианта могу еще посоветовать фильтр-пробку на частоту ШИМ. Дело в том, что если сместить ШИМ в неслышимую область, это еще не значит, что усилитель не будет ее воспроизводить. Вернее, он точно будет ее воспроизводить, уменьшая КУ основного сигнала и расходуя энергию в тепло. Да и ультразвук думаю не полезен ушам и здоровью...  На выходе импульсного БП крайне нелишне ставить двойной LC фильтр, первый- пробка на основную частоту, второй- на вторую гармонику. Причем неполярный конденсатор можно ставить и параллельно основному электролиту, т.к. у них значительная индуктивность, и ВЧ они нифига не фильтруют- проверено.

Отредактировано Skull (2013-04-07 14:10:43)

0

11

http://s2.uploads.ru/t/gLVxp.jpg

Вот, кстати , попалось под руку, решил показать хороший и плохой блоки питания.
Слева всем известный ОВЕН, справа MeanWell. Обратите внимание, что Овен, будучи дороже на 20%, во первых содержит меньше деталей, во вторых схемотехнически хуже. Если присмотреться к рисунку, в MeanWell (Да, Китай, и мне он нравится,дешево, сердито, и , как оказалось, НАДЕЖНО) можно увидеть перед счетверенным разъемом как раз 2 фильтра (вторая катушка залита сверху термоклеем) и наличие токовой защиты (одна из 2х оптопар сзади) Входные фильтры имеют одинаковые. схемы тоже разные- овен- ТОР250Y по классической схеме из даташита, MeanWell - UC3845 с защитой от перегрузки по току и напряжению.
Понял разницу я только потеряв 2 Snap-In модуля контроллера Unitronics, стоимостью 12700 грн, в которых потихоньку посыпались все каналы ЦАП и АЦП. После замены БП 2 года полет нормальный. Показания токовых датчиков  перестали изображать из себя эпилептические конвульсии. А казалось бы делов- одна дополнительная катушка....

0

12

Интересно, за 6 лет у кого-нибудь этот проект заработал?
Все сразу ушли от темы.
То есть, никто кроме 1 человека и не отписался по работе.
У меня лично не заработал проект. Только шум в динамике.

0

13

Код:
'Графический ЖКИ 240*128 с контроллером T6963C, модель
' изменить fuse для откл JTAG !!! иначе PortC не весь будет работать

' картинки и шрифты хранятся в самом МК

$regfile = "m128def.dat"      ' specify the used micro
$crystal = 16000000           ' used crystal frequency
$baud = 19200                 ' use baud rate
$baud1 = 19200                ' use baud rate
$hwstack = 128                ' hardware stack
$swstack = 128                ' SW stack
$framesize = 128              ' frame space


Dim Mybyte As Byte

Config Porta = Output         ' Внешний порт Выходы

Config Portb = Output         ' SD-Карта и свдиг.регистр
Portd = &B_0111_0000          ' Резисторы pull-up на концевики и кнопки
Pwm_audio Alias Portb.5       ' Звук, ШИМ, подключен на УНЧ LM386

Config Portc = Output         ' Дисплей T6963C

Config Portd = Input          ' 4-бита порта Входы,  Пропадание_Питания и шина 1wire
Portd = &B_0111_0000          ' Резисторы pull-up на концевики и кнопки

Config Porte = Input          ' 4-бита порта Входы,
Config Porte.2 = Output       '   управление шиной 485
Config Porte.3 = Output       '   подсв. LCD

Config Portg = Output : Portg = 0       ' шина I2C и управление LCD
Config Scl = Portg.3          ' I2C      Часы и EEPROM
Config Sda = Portg.4          ' I2C

Sound Pwm_audio , 250 , 250   ' пикнем






$include "Config_MMCSD_HC.bas"
$include "Config_AVR-DOS.BAS"

Print "Init File System ... ";
Mybyte = Initfilesystem(1)    ' Partition 1
' use 0 for drive without Master boot record

If Mybyte <> 0 Then
   Print "Error: " ; Mybyte ; " at Init file system"
Else
   Print " OK"
   Print "Filesystem: " ; Gbfilesystem
   Print "FAT Start Sector: " ; Glfatfirstsector
   Print "Root Start Sector: " ; Glrootfirstsector
   Print "Data First Sector: " ; Gldatafirstsector
   Print "Max. Cluster Nummber: " ; Glmaxclusternumber
   Print "Sectors per Cluster: " ; Gbsectorspercluster
   Print "Root Entries: " ; Gwrootentries
   Print "Sectors per FAT: " ; Glsectorsperfat
   Print "Number of FATs: " ; Gbnumberoffats
End If



Do

   Open "1.wav" For Binary As #9
   Config Timer1 = Pwm , Pwm = 8 , Prescale = 1 , Compare A Pwm = Clear Down

   Do
      Waitus 90               ' wav 8000Hz
      Get #9 , Mybyte
      Pwm1a = Mybyte
   Loop Until Eof(#9) <> 0

   Pwm1a = 1
   Seek #9 , Pwm1a
   Config Timer1 = Timer , Prescale = 1 , Compare A Pwm = Disconnect , Clear Timer = 1
   Close #9

   Wait 2


Loop

0

14

samego написал(а):

Интересно, за 6 лет у кого-нибудь этот проект заработал?
Все сразу ушли от темы.
То есть, никто кроме 1 человека и не отписался по работе.
У меня лично не заработал проект. Только шум в динамике.


Продолжение

0

15

samego написал(а):

Интересно, за 6 лет у кого-нибудь этот проект заработал?
Все сразу ушли от темы.
То есть, никто кроме 1 человека и не отписался по работе.
У меня лично не заработал проект. Только шум в динамике.

Тоже самое, шумит с намёками на то, что на флешке записано, а модули ("WTV020") конечно хорошие, но из 5-ти флех, одна с горем пополам заработала...

0

16

Володя написал(а):

Тоже самое, шумит с намёками на то, что на флешке записано


Вам именно Atmega8 нужна ?

Володя написал(а):

а модули ("WTV020") конечно хорошие, но из 5-ти флех, одна с горем пополам заработала...


Модуль не понимает SD Card > 2 Gb + перед записью файлов необходимо низкоуровневое форматирование (быстрая очистка или удаление не проходит)

+1

17

Я делал себе говорилку. На радиокоте выкладывал. Всё на баскоме. Да и здесь, помню, на какой то ветке форума код выкладывал, сейчас чё та найти не могу.
http://radiokot.ru/circuit/digital/game/58/

+1

18

Володя написал(а):

а модули ("WTV020") конечно хорошие, но из 5-ти флех, одна с горем пополам заработала...


Есть ещё такие , тем более на них, сильно упала цена, я брал для пробы по 8$ за шт.

Пробовал карточки micro SD Card: 128 Mb; 512 Mb; 1 Gb; 2 Gb; 4 Gb; 8 Gb  -  все читаются без проблем

Файлы можно раскладывать по папкам, аппаратное декодирование MP3, общение с модулем по USART

В общем, перешёл только на них, очень удобно, всё никак не дойдут руки сделать Reverse-Eengineering трассировки, что-бы можно было вставлять в свою плату при необходимости.

0

19

sasha_1973 написал(а):

Есть ещё такие , тем более на них, сильно упала цена, я брал для пробы по 8$ за шт.

Пробовал карточки micro SD Card: 128 Mb; 512 Mb; 1 Gb; 2 Gb; 4 Gb; 8 Gb  -  все читаются без проблем

Файлы можно раскладывать по папкам, аппаратное декодирование MP3, общение с модулем по USART

В общем, перешёл только на них, очень удобно, всё никак не дойдут руки сделать Reverse-Eengineering трассировки, что-бы можно было вставлять в свою плату при необходимости.

Да как раз месяц уже их жду, давно хочу озвучить машину свою, никак надёжного модуля не найду, может как раз этот и подойдёт.

0

20

Володя написал(а):

никак надёжного модуля не найду

Ну как бы есть готовое решение, если описанные проблемы не смущают, то вполне себе вариант (плеер с простеньким УНЧ в одной коробке).

0

21

А по факту в режиме ожидания сколько потребляет, не микроамперы? И из Sleep долго просыпается? Лежит для квартирного звонка, питать от АКБ.

0

22

Если вопрос ко мне, то в статье описаны ряд моментов. Недостаток модуля, что он много жрет, т.к. на борту УНЧ и просто динамик (сопротивление которого может быть 4-32 Ом), следовательно нужно его обесточивать от питания на момент спячки (это тоже есть в статье). Ну и включается он не срзу, с задержкой от 3 сек, т.к. он сканирует всю SD карту, а там вложенность и контент весьма может быть не малого объёма.

0

23

Вот пришёл DF Playr мини. Прошу помощи разобраться как запустить отдельный файл мп3, вот тут код, но что то работать не хочет, а так работает без контроллера.

Код:
$regfile = "m8def.dat"
$crystal = 8000000
$hwstack = 32
$swstack = 8
$framesize = 24
$baud = 9600


Config Portc.5 = Input : Set Portc.5
Config Portc.4 = Input : Set Portc.4
Config Portc.3 = Input : Set Portc.3
Config Portb.1 = Output

Do

If Pinc.5 = 0 Then
Print "&H7E ; &HFF ; &H06 ; &H12 ; &H00 ; &H00 ; &H01 ; &HEF"       '&H7E ; &HFF ; &H06 ; &H12 ; &H00 ; &H00 ; &H01 ; &HFE ; &HE8 ; &HEF
Portb.1 = 1
Waitms 500
Portb.1 = 0
End If
If Pinc.4 = 0 Then
 Print &H7E ; &HFF ; &H06 ; &H01 ; &H00 ; &H00 ; &H01 ; &HEF       '&H7E ; &HFF ; &H06 ; &H12 ; &H00 ; &H00 ; &H02 ; &HFE ; &HE8 ; &HEF
Portb.1 = 1
Waitms 500
Portb.1 = 0
 End If
 If Pinc.3 = 0 Then
  Printbin &H7E ; &HFF ; &H06 ; &H3F ; &H00 ; &H00 ; &H03 ; &HFE ; &HE8 ; &HEF
 Portb.1 = 1
Waitms 500
Portb.1 = 0
  End If

  Loop

0

24

может необходимо обозначить конец строки..

0

25

Володя написал(а):

Do

If Pinc.5 = 0 Then
Print "&H7E ; &HFF ; &H06 ; &H12 ; &H00 ; &H00 ; &H01 ; &HEF"       '&H7E ; &HFF ; &H06 ; &H12 ; &H00 ; &H00 ; &H01 ; &HFE ; &HE8 ; &HEF
Portb.1 = 1

  Print "&H7E...
А это ˄ (кавычки) обязательно ? ;)
Тогда и в других аналогичных строках ставьте...

Отредактировано Nord (2017-02-08 21:11:55)

0

26

Мой кусок управления:

Код:
Const Df_track = &H0F

Dim Df_sum As Word
Dim Df_sum_low As Byte At Df_sum + 0 Overlay
Dim Df_sum_high As Byte At Df_sum + 1 Overlay

   Df_command = Df_track
   Df_param1 = 4                                            ' папка
   Df_param2 = F4num                                        ' дорожка

   Mp3_data(1) = &H7E
   Mp3_data(2) = &HFF
   Mp3_data(3) = &H06
   Mp3_data(4) = Df_command
   Mp3_data(5) = &H00
   Mp3_data(6) = Df_param1
   Mp3_data(7) = Df_param2
   Df_tmp_word = 0
   For Df_tmp_byte = 2 To 7
      Df_tmp_word = Df_tmp_word + Mp3_data(df_tmp_byte)
   Next Df_tmp_byte
   Df_sum = 0 - Df_tmp_word
   Mp3_data(8) = Df_sum_high
   Mp3_data(9) = Df_sum_low
   Mp3_data(10) = &HEF
   Printbin #1 , Mp3_data(1)

Структура папок/файлов (пример):

Код:
\01\001_3D-zvuki-Zvuk-poezda.mp3
\01\002_Gudok-poezda-i-stuk-koles.mp3
\01\003_Neizvesten-zvuk-poezda.mp3
\01\004_Poezd_-_gul_poezda_muzofon.mp3
\01\005_Poezd_-_Shum_proezzhayuschego_poezda_muzofon.mp3
\01\006_Poezd_-_Zvuk_poezda%29%29_muzofon.mp3
\01\007_sound_cd3_103.mp3
\01\008_zvuk-poezda.mp3
\01\009_Zvuk -starogo-poezda.mp3
\01\Readme.txt
\02\001_15_30.mp3
\02\002_6033_56.mp3
\02\003_sound_cd3_107.mp3
\02\004_Zvuk-Gudok-poezda.mp3
\02\Readme.txt
\03\001_sound_cd3_113.mp3
\03\002_st._Rostov-glavnyy_-_Ob_yavlenie_ob_opravke_poezda_%E2%84%96248_Moskva_%E2%80%94_Anapa_muzofon.mp3
\03\003_st._Rostov-glavnyy_-_Ob_yavleniya_skoro_pribytiya_poezda_%E2%84%9634_Moskva_%E2%80%94_Vladikavkaz_muzofon.mp3
\03\Readme.txt
\04\001_poezd_dinozavrov_-_Poezd_letit%21_muzofon.mp3
\04\002_poezd_dinozavrov_-_Poezd_letit_muzofon.mp3
\04\003_Tehnologiya_-_Poezd_na_Leningrad_Nas_razluchit_s_toboyu%2C_Glaza_svoi_zakroyu%2C_Ya_ne_smiryus__s_sud_boyu._Poezd_na_Leningrad%2C__muzofon.mp3
\04\004_Obrazcovyy_voennyy_orkestr_-_Pribytie_poezda_muzofon.mp3
\04\Readme.txt
\99\001_intro.mp3

Текстовые файлы игнорируются. Имена файлов тоже, главное чтобы вначале цифры были.

Вообще есть дока на модуль в инете.

+1

27

Всем большое спасибо, разобрался, работает только на 4 мгц и только если файлы ложить в папку с именем 01,02....
а если назвать MP3(как в даташите) не хочет запускаться, вот простой код . Это пуск файла и два уровня громкости.

Код:
$regfile = "m8def.dat"
$crystal = 4000000
$hwstack = 32
$swstack = 8
$framesize = 24
$baud = 9600


Config Portc.5 = Input : Set Portc.5
Config Portc.4 = Input : Set Portc.4
Config Portc.3 = Input : Set Portc.3
Config Portb.1 = Output

Do

If Pinc.5 = 0 Then
Printbin &H7E ; &HFF ; &H06 ; &H06 ; &H00 ; &H00 ; &H0F ; &HEF       ' громкость 15
Portb.1 = 1
Waitms 500
Portb.1 = 0
End If
If Pinc.4 = 0 Then
Printbin &H7E ; &HFF ; &H06 ; &H06 ; &H00 ; &H00 ; &H05 ; &HEF       ' громкость 5
Portb.1 = 1
Waitms 500
Portb.1 = 0
 End If
 If Pinc.3 = 0 Then
  Printbin &H7E ; &HFF ; &H06 ; &H0F ; &H00 ; &H01 ; &H03 ; &HFE ; &HE8 ; &HEF       ' файл
 Portb.1 = 1
Waitms 500
Portb.1 = 0
  End If

  Loop

0

28

Посмотрите здесь

0

29

Ещё раз, всем большое спасибо! :flag:

Отредактировано Володя (2017-02-09 10:52:40)

0


Вы здесь » Программирование ATMEL в BASCOM. » Исходники » Играем WAV с SD карты