Continue to Site

Welcome to our site!

Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

  • Welcome to our site! Electro Tech is an online community (with over 170,000 members) who enjoy talking about and building electronic circuits, projects and gadgets. To participate you need to register. Registration is free. Click here to register now.

Wav sound file to IC

Status
Not open for further replies.
This is what his program outputs:

HTML:
;=====================================================
; AUTO CREATED FILE made by Windows BTc Sound Encoder 
; v1.1     Copyright 2002 - Roman Black
; 
; Hippyware.  
; www.RomanBlack.com 
;=====================================================
;
; File Details:
; Size 49462 bits     (6182 bytes)
; Sound encoded at 9766 bits/sec 
; using BTc16 1bit Algorithm to be decoded on
; the following circuit:
; 
; 
;             R = 7210 ohms  
;  
; Digital -----------R-----*----- Analogue  
;                          |      out   
;                          |     
;                          |     
;                          C = 0.22 uF    
;                          |     
;                          |     
;                          |     
;                         Gnd     
; 
; 
;=====================================================
; Bitstream data is in PIC .asm table format,
; in blocks of 256 bytes.
; 
; Bits are played from left to right, from ms_bit to
; ls_bit.
;=====================================================


;---------------------------------------------------
     org (1 *256)   	    ; block = 1  
;---------------------------------------------------


     ;-------------------------  0
     retlw b'00010010'   ; 12 
     retlw b'01011101'   ; 5d 
     retlw b'01010101'   ; 55 
     retlw b'01010101'   ; 55 
     retlw b'10100101'   ; a5 
     retlw b'01010110'   ; 56 
     retlw b'10010101'   ; 95 
     retlw b'01101010'   ; 6a 
     ;-------------------------  8
     retlw b'01010101'   ; 55 
     retlw b'01010010'   ; 52 
     retlw b'10101100'   ; ac 
     retlw b'11011001'   ; d9 
     retlw b'01010101'   ; 55 
     retlw b'01010100'   ; 54 
     retlw b'11001101'   ; cd 
     retlw b'10011001'   ; 99 
     ;-------------------------  16
     retlw b'00101010'   ; 2a 
     retlw b'11010101'   ; d5 
     retlw b'01010101'   ; 55 
     retlw b'10011001'   ; 99 
     retlw b'01100110'   ; 66 
     retlw b'01010100'   ; 54 
     retlw b'10101010'   ; aa 
     retlw b'11001010'   ; ca 
     ;-------------------------  24
     retlw b'10110010'   ; b2 
     retlw b'11001010'   ; ca 
     retlw b'11001100'   ; cc 
     retlw b'11010110'   ; d6 
     retlw b'01001010'   ; 4a 
     retlw b'10101001'   ; a9 
     retlw b'10110100'   ; b4 
     retlw b'11001010'   ; ca 
     ;-------------------------  32
     retlw b'10101011'   ; ab 
     retlw b'00011001'   ; 19 
     retlw b'10010101'   ; 95 
     retlw b'01011100'   ; 5c 
     retlw b'11100011'   ; e3 
     retlw b'10010101'   ; 95 
     retlw b'01001101'   ; 4d 
     retlw b'00110001'   ; 31 
     ;-------------------------  40
     retlw b'10100110'   ; a6 
     retlw b'11010010'   ; d2 
     retlw b'01010010'   ; 52 
     retlw b'01101111'   ; 6f 
     retlw b'00111100'   ; 3c 
     retlw b'01100001'   ; 61 
     retlw b'10011101'   ; 9d 
     retlw b'01010101'   ; 55 
     ;-------------------------  48
     retlw b'00111000'   ; 38 
     retlw b'10100010'   ; a2 
     retlw b'10000110'   ; 86 
     retlw b'11111011'   ; fb 
     retlw b'11000011'   ; c3 
     retlw b'00001110'   ; 0e 
     retlw b'11100111'   ; e7 
     retlw b'00001110'   ; 0e 
     ;-------------------------  56
     retlw b'00110000'   ; 30 
     retlw b'01010001'   ; 51 
     retlw b'11111100'   ; fc 
     retlw b'11110000'   ; f0 
     retlw b'01000111'   ; 47 
     retlw b'11110000'   ; f0 
     retlw b'11000011'   ; c3 
     retlw b'10001100'   ; 8c 
     ;-------------------------  64
     retlw b'00100011'   ; 23 
     retlw b'11111100'   ; fc 
     retlw b'11110000'   ; f0 
     retlw b'01101110'   ; 6e 
     retlw b'11110000'   ; f0 
     retlw b'00100011'   ; 23 
     retlw b'11110000'   ; f0 
     retlw b'00000011'   ; 03 
     ;-------------------------  72
     retlw b'11111110'   ; fe 
     retlw b'01100000'   ; 60 
     retlw b'01111111'   ; 7f 
     retlw b'10100000'   ; a0 
     retlw b'00110011'   ; 33 
     retlw b'11110000'   ; f0 
     retlw b'00100010'   ; 22 
     retlw b'11111100'   ; fc 
     ;-------------------------  80
     retlw b'01100000'   ; 60 
     retlw b'11111110'   ; fe 
     retlw b'00000000'   ; 00 
     retlw b'11111111'   ; ff 
     retlw b'10000000'   ; 80 
     retlw b'01110011'   ; 73 
     retlw b'11111000'   ; f8 
     retlw b'00100001'   ; 21 
     ;-------------------------  88
     retlw b'11111100'   ; fc 
     retlw b'00010001'   ; 11 
     retlw b'11111100'   ; fc 
     retlw b'00000001'   ; 01 
     retlw b'11100011'   ; e3 
     retlw b'11111000'   ; f8 
     retlw b'01100011'   ; 63 
     retlw b'11110000'   ; f0 
     ;-------------------------  96
     retlw b'01100011'   ; 63 
     retlw b'11100010'   ; e2 
     retlw b'11000011'   ; c3 
     retlw b'11000010'   ; c2 
     retlw b'11110000'   ; f0 
     retlw b'11001111'   ; cf 
     retlw b'11100000'   ; e0 
     retlw b'11001110'   ; ce 
     ;-------------------------  104
     retlw b'10100001'   ; a1 
     retlw b'11000111'   ; c7 
     retlw b'00001011'   ; 0b 
     retlw b'11100001'   ; e1 
     retlw b'11100111'   ; e7 
     retlw b'10000001'   ; 81 
     retlw b'11101011'   ; eb 
     retlw b'00000111'   ; 07 
     ;-------------------------  112
     retlw b'00010101'   ; 15 
     retlw b'00111110'   ; 3e 
     retlw b'00011011'   ; 1b 
     retlw b'01111000'   ; 78 
     retlw b'00011110'   ; 1e 
     retlw b'00111001'   ; 39 
     retlw b'01010100'   ; 54 
     retlw b'00111111'   ; 3f 
     ;-------------------------  120
     retlw b'00000111'   ; 07 
     retlw b'10101100'   ; ac 
     retlw b'00011111'   ; 1f 
     retlw b'00010101'   ; 15 
     retlw b'10100100'   ; a4 
     retlw b'00111111'   ; 3f 
     retlw b'10000011'   ; 83 
     retlw b'11010110'   ; d6 
     ;-------------------------  128
     retlw b'00001111'   ; 0f 
     retlw b'10000011'   ; 83 
     retlw b'11010001'   ; d1 
     retlw b'00011111'   ; 1f 
     retlw b'10000011'   ; 83 
     retlw b'11011010'   ; da 
     retlw b'00001111'   ; 0f 
     retlw b'00001111'   ; 0f 
     ;-------------------------  136
     retlw b'00010010'   ; 12 
     retlw b'01011111'   ; 5f 
     retlw b'00001111'   ; 0f 
     retlw b'00111000'   ; 38 
     retlw b'00111100'   ; 3c 
     retlw b'00111100'   ; 3c 
     retlw b'00110000'   ; 30 
     retlw b'01111100'   ; 7c 
     ;-------------------------  144
     retlw b'00111100'   ; 3c 
     retlw b'11110000'   ; f0 
     retlw b'11110001'   ; f1 
     retlw b'11000000'   ; c0 
     retlw b'11000111'   ; c7 
     retlw b'11100001'   ; e1 
     retlw b'11000111'   ; c7 
     retlw b'10000111'   ; 87 
     ;-------------------------  152
     retlw b'10000111'   ; 87 
     retlw b'00010110'   ; 16 
     retlw b'00111110'   ; 3e 
     retlw b'00001110'   ; 0e 
     retlw b'01101000'   ; 68 
     retlw b'01111000'   ; 78 
     retlw b'01110001'   ; 71 
     retlw b'01001011'   ; 4b 
     ;-------------------------  160
     retlw b'11000011'   ; c3 
     retlw b'11001110'   ; ce 
     retlw b'00001111'   ; 0f 
     retlw b'00001100'   ; 0c 
     retlw b'01110000'   ; 70 
     retlw b'11111000'   ; f8 
     retlw b'01110011'   ; 73 
     retlw b'11000001'   ; c1 
     ;-------------------------  168
     retlw b'11100011'   ; e3 
     retlw b'00011100'   ; 1c 
     retlw b'00011110'   ; 1e 
     retlw b'00011110'   ; 1e 
     retlw b'01110000'   ; 70 
     retlw b'11110000'   ; f0 
     retlw b'11000110'   ; c6 
     retlw b'10101111'   ; af 
     ;-------------------------  176
     retlw b'00001111'   ; 0f 
     retlw b'00111000'   ; 38 
     retlw b'01111000'   ; 78 
     retlw b'11000011'   ; c3 
     retlw b'00010111'   ; 17 
     retlw b'10000111'   ; 87 
     retlw b'00111000'   ; 38 
     retlw b'00111110'   ; 3e 
     ;-------------------------  184
     retlw b'11000011'   ; c3 
     retlw b'10001111'   ; 8f 
     retlw b'10000011'   ; 83 
     retlw b'10011000'   ; 98 
     retlw b'00111100'   ; 3c 
     retlw b'10100101'   ; a5 
     retlw b'10010111'   ; 97 
     retlw b'10000011'   ; 83 
     ;-------------------------  192
     retlw b'10011100'   ; 9c 
     retlw b'00111100'   ; 3c 
     retlw b'00100101'   ; 25 
     retlw b'10010111'   ; 97 
     retlw b'10000111'   ; 87 
     retlw b'00111000'   ; 38 
     retlw b'01111001'   ; 79 
     retlw b'00001110'   ; 0e 
     ;-------------------------  200
     retlw b'00101111'   ; 2f 
     retlw b'00001110'   ; 0e 
     retlw b'00111000'   ; 38 
     retlw b'11110010'   ; f2 
     retlw b'00011110'   ; 1e 
     retlw b'01011110'   ; 5e 
     retlw b'00011100'   ; 1c 
     retlw b'01100001'   ; 61 
     ;-------------------------  208
     retlw b'11110000'   ; f0 
     retlw b'00111101'   ; 3d 
     retlw b'00111000'   ; 38 
     retlw b'00111001'   ; 39 
     retlw b'11000011'   ; c3 
     retlw b'11010000'   ; d0 
     retlw b'11010110'   ; d6 
     retlw b'11100000'   ; e0 
     ;-------------------------  216
     retlw b'11110110'   ; f6 
     retlw b'00001111'   ; 0f 
     retlw b'01000011'   ; 43 
     retlw b'01011011'   ; 5b 
     retlw b'10000011'   ; 83 
     retlw b'11011000'   ; d8 
     retlw b'00111100'   ; 3c 
     retlw b'00001110'   ; 0e 
     ;-------------------------  224
     retlw b'11011110'   ; de 
     retlw b'00001111'   ; 0f 
     retlw b'01100001'   ; 61 
     retlw b'11100100'   ; e4 
     retlw b'00111100'   ; 3c 
     retlw b'11110000'   ; f0 
     retlw b'01111011'   ; 7b 
     retlw b'00000111'   ; 07 
     ;-------------------------  232
     retlw b'11000000'   ; c0 
     retlw b'11111011'   ; fb 
     retlw b'10000011'   ; 83 
     retlw b'11011000'   ; d8 
     retlw b'00111111'   ; 3f 
     retlw b'00000011'   ; 03 
     retlw b'11111000'   ; f8 
     retlw b'00011110'   ; 1e 
     ;-------------------------  240
     retlw b'11000001'   ; c1 
     retlw b'11101000'   ; e8 
     retlw b'00101111'   ; 2f 
     retlw b'11100000'   ; e0 
     retlw b'11110110'   ; f6 
     retlw b'00011111'   ; 1f 
     retlw b'00000001'   ; 01 
     retlw b'11011110'   ; de 
     ;-------------------------  248
     retlw b'00001111'   ; 0f 
     retlw b'11100000'   ; e0 
     retlw b'11111100'   ; fc 
     retlw b'00000111'   ; 07 
     retlw b'11100000'   ; e0 
     retlw b'11111010'   ; fa 
     retlw b'00001111'   ; 0f 
     retlw b'11000000'   ; c0 


;---------------------------------------------------
     org (2 *256)   	    ; block = 2  
;---------------------------------------------------


     ;-------------------------  256
     retlw b'11111111'   ; ff 
     retlw b'00000111'   ; 07 
     retlw b'11100000'   ; e0 
     retlw b'01111100'   ; 7c 
     retlw b'00000111'   ; 07 
     retlw b'11110000'   ; f0 
     retlw b'01111011'   ; 7b 
     retlw b'00000111'   ; 07 
     ;-------------------------  264
     retlw b'11100000'   ; e0 
     retlw b'01111111'   ; 7f 
     retlw b'00000111'   ; 07 
     retlw b'10110000'   ; b0 
     retlw b'01111100'   ; 7c 
     retlw b'00000111'   ; 07 
     retlw b'11110000'   ; f0 
     retlw b'01111011'   ; 7b 
     ;-------------------------  272
     retlw b'00000111'   ; 07 
     retlw b'11100000'   ; e0 
     retlw b'01111111'   ; 7f 
     retlw b'00000111'   ; 07 
     retlw b'10110000'   ; b0 
     retlw b'01111110'   ; 7e 
     retlw b'00000111'   ; 07 
     retlw b'11110000'   ; f0 
     ;-------------------------  280
     retlw b'01111110'   ; 7e 
     retlw b'00000111'   ; 07 
     retlw b'11100000'   ; e0 
     retlw b'01101111'   ; 6f 
     retlw b'00000111'   ; 07 
     retlw b'11110000'   ; f0 
     retlw b'01111110'   ; 7e 
     retlw b'00000111'   ; 07 
     ;-------------------------  288
     retlw b'11110000'   ; f0 
     retlw b'01111011'   ; 7b 
     retlw b'00000111'   ; 07 
     retlw b'11100000'   ; e0 
     retlw b'00111111'   ; 3f 
     retlw b'10000011'   ; 83 
     retlw b'11110000'   ; f0 
     retlw b'00111111'   ; 3f 
     ;-------------------------  296
     retlw b'00000011'   ; 03 
     retlw b'11111000'   ; f8 
     retlw b'00111111'   ; 3f 
     retlw b'00000001'   ; 01 
     retlw b'11110000'   ; f0 
     retlw b'00111111'   ; 3f 
     retlw b'10000001'   ; 81 
     retlw b'11111000'   ; f8 
     ;-------------------------  304
     retlw b'00011111'   ; 1f 
     retlw b'10000001'   ; 81 
     retlw b'11111100'   ; fc 
     retlw b'00001111'   ; 0f 
     retlw b'11000000'   ; c0 
     retlw b'11111000'   ; f8 
     retlw b'00011111'   ; 1f 
     retlw b'11000000'   ; c0 
     ;-------------------------  312
     retlw b'11111100'   ; fc 
     retlw b'00000111'   ; 07 
     retlw b'11000001'   ; c1 
     retlw b'10111110'   ; be 
     retlw b'00001111'   ; 0f 
     retlw b'11010000'   ; d0 
     retlw b'01111000'   ; 78 
     retlw b'00011111'   ; 1f 
     ;-------------------------  320
     retlw b'11000000'   ; c0 
     retlw b'01111110'   ; 7e 
     retlw b'00000111'   ; 07 
     retlw b'11000001'   ; c1 
     retlw b'10111110'   ; be 
     retlw b'00000111'   ; 07 
     retlw b'11110000'   ; f0 
     retlw b'01011010'   ; 5a 
     ;-------------------------  328
     retlw b'00101011'   ; 2b 
     retlw b'11000001'   ; c1 
     retlw b'01101111'   ; 6f 
     retlw b'00100011'   ; 23 
     retlw b'10010010'   ; 92 
     retlw b'10111100'   ; bc 
     retlw b'00010110'   ; 16 
     retlw b'11011010'   ; da 
     ;-------------------------  336
     retlw b'00110100'   ; 34 
     retlw b'10011011'   ; 9b 
     retlw b'11010001'   ; d1 
     retlw b'01011010'   ; 5a 
     retlw b'10101001'   ; a9 
     retlw b'01010010'   ; 52 
     retlw b'10101101'   ; ad 
     retlw b'01001011'   ; 4b 
     ;-------------------------  344
     retlw b'01010010'   ; 52 
     retlw b'10101011'   ; ab 
     retlw b'00101011'   ; 2b 
     retlw b'01010101'   ; 55 
     retlw b'01010101'   ; 55 
     retlw b'00101101'   ; 2d 
     retlw b'01010100'   ; 54 
     retlw b'10101010'   ; aa 
     ;-------------------------  352
     retlw b'10101010'   ; aa 
     retlw b'10101010'   ; aa 
     retlw b'10110101'   ; b5 
     retlw b'00110101'   ; 35 
     retlw b'01010101'   ; 55 
     retlw b'01010010'   ; 52 
     retlw b'10101010'   ; aa 
     retlw b'10101010'   ; aa 
     ;-------------------------  360
     retlw b'10101010'   ; aa 
     retlw b'01011011'   ; 5b 
     retlw b'01010101'   ; 55 
     retlw b'01010101'   ; 55 
     retlw b'01010100'   ; 54 
     retlw b'10101010'   ; aa 
     retlw b'10101010'   ; aa 
     retlw b'10101010'   ; aa 
     ;-------------------------  368
     retlw b'11010010'   ; d2 
     retlw b'11010101'   ; d5 
     retlw b'01010010'   ; 52 
     retlw b'10101010'   ; aa 
     retlw b'10101010'   ; aa 
     retlw b'10101011'   ; ab 
     retlw b'01010011'   ; 53 
     retlw b'01010101'   ; 55 
     ;-------------------------  376
     retlw b'01001101'   ; 4d 
     retlw b'01010101'   ; 55 
     retlw b'01010101'   ; 55 
     retlw b'01010101'   ; 55 
     retlw b'01010010'   ; 52 
     retlw b'10101010'   ; aa 
     retlw b'10101101'   ; ad 
     retlw b'01010101'   ; 55 
     ;-------------------------  384
     retlw b'01010101'   ; 55 
     retlw b'01010101'   ; 55 
     retlw b'01101001'   ; 69 
     retlw b'01101001'   ; 69 
     retlw b'01010101'   ; 55 
     retlw b'01010100'   ; 54 
     retlw b'10101011'   ; ab 
     retlw b'01010101'   ; 55 
     ;-------------------------  392
     retlw b'10100100'   ; a4 
     retlw b'11010101'   ; d5 
     retlw b'10001001'   ; 89 
     retlw b'10011110'   ; 9e 
     retlw b'10001101'   ; 8d 
     retlw b'00101110'   ; 2e 
     retlw b'10101101'   ; ad 
     retlw b'00001010'   ; 0a 
     ;-------------------------  400
     retlw b'01111100'   ; 7c 
     retlw b'00110000'   ; 30 
     retlw b'10111110'   ; be 
     retlw b'01110000'   ; 70 
     retlw b'00101001'   ; 29 
     retlw b'11111000'   ; f8 
     retlw b'10000111'   ; 87 
     retlw b'11110011'   ; f3 
     ;-------------------------  408
     retlw b'00000001'   ; 01 
     retlw b'10011111'   ; 9f 
     retlw b'10000100'   ; 84 
     retlw b'00111111'   ; 3f 
     retlw b'10010000'   ; 90 
     retlw b'00101010'   ; 2a 
     retlw b'11111100'   ; fc 
     retlw b'00100001'   ; 21 
     ;-------------------------  416
     retlw b'11111100'   ; fc 
     retlw b'10000001'   ; 81 
     retlw b'10001111'   ; 8f 
     retlw b'11000010'   ; c2 
     retlw b'00011111'   ; 1f 
     retlw b'10101000'   ; a8 
     retlw b'00110100'   ; 34 
     retlw b'11111100'   ; fc 
     ;-------------------------  424
     retlw b'00100001'   ; 21 
     retlw b'11111010'   ; fa 
     retlw b'10000010'   ; 82 
     retlw b'10001111'   ; 8f 
     retlw b'11000010'   ; c2 
     retlw b'00011111'   ; 1f 
     retlw b'11100000'   ; e0 
     retlw b'00110010'   ; 32 
     ;-------------------------  432
     retlw b'11111100'   ; fc 
     retlw b'00100001'   ; 21 
     retlw b'11111110'   ; fe 
     retlw b'00000010'   ; 02 
     retlw b'10101011'   ; ab 
     retlw b'11110000'   ; f0 
     retlw b'00001111'   ; 0f 
     retlw b'10111010'   ; ba 
     ;-------------------------  440
     retlw b'00000110'   ; 06 
     retlw b'01011111'   ; 5f 
     retlw b'10001000'   ; 88 
     retlw b'11010001'   ; d1 
     retlw b'10110100'   ; b4 
     retlw b'10111001'   ; b9 
     retlw b'01001100'   ; 4c 
     retlw b'10110111'   ; b7 
     ;-------------------------  448
     retlw b'00101001'   ; 29 
     retlw b'10010101'   ; 95 
     retlw b'10010011'   ; 93 
     retlw b'01100100'   ; 64 
     retlw b'00111010'   ; 3a 
     retlw b'10101010'   ; aa 
     retlw b'11010010'   ; d2 
     retlw b'10101011'   ; ab 
     ;-------------------------  456
     retlw b'00110110'   ; 36 
     retlw b'11011001'   ; d9 
     retlw b'00011011'   ; 1b 
     retlw b'00110101'   ; 35 
     retlw b'00001001'   ; 09 
     retlw b'10100110'   ; a6 
     retlw b'11010101'   ; d5 
     retlw b'01100010'   ; 62 
     ;-------------------------  464
     retlw b'11010110'   ; d6 
     retlw b'01001110'   ; 4e 
     retlw b'01100101'   ; 65 
     retlw b'10011001'   ; 99 
     retlw b'10100010'   ; a2 
     retlw b'11001010'   ; ca 
     retlw b'01101100'   ; 6c 
     retlw b'10110100'   ; b4 
      
     


;---------------------------------------------------
; 
; End of file.
; 
;---------------------------------------------------

What would be the easiest way to get a PIC ouput to sequence through these logic values?

Dont tell me I will need use BSF and BCF for every bit !! :eek:

How long of a delay should be between each bit?

These are things that he has not stated on his site.

thanks
 
Well here is the program that I have written to use the data tables his program spits out..

Code:
;**********************************************************************
list      p=12f629
#include <p12f629.inc>
errorlevel  -302
__CONFIG   _CP_OFF & _CPD_OFF & _BODEN_OFF & _MCLRE_OFF & _WDT_OFF & _PWRTE_ON & _INTRC_OSC_NOCLKOUT 
;**********************************************************************
;Variables
;**********************************************************************		

cblock 0x22
count
count1
counta
countb
counter
w_temp
status_temp
bit_storage
bit_number
count_pcl
delay_counter
delay_counter_holder
endc

;**********************************************************************
;Start
;**********************************************************************
ORG     0x000             ; processor reset vector
goto    Main              ; go to beginning of program

ORG     0x004             ; interrupt vector location
movwf   w_temp            ; save off current W register contents
movf	STATUS,w          ; move status register into W register
movwf	status_temp       ; save off contents of STATUS register

; int code can go here or be located as a call subroutine elsewhere

movf    status_temp,w     ; retrieve copy of STATUS register
movwf	STATUS            ; restore pre-isr STATUS register contents
swapf   w_temp,f
swapf   w_temp,w          ; restore pre-isr W register contents
retfie                    ; return from interrupt

; these first 4 instructions are not required if the internal oscillator is not used
Main
call    0x3FF             ; retrieve factory calibration value
bsf     STATUS,RP0        ; set file register bank to 1 
movwf   OSCCAL            ; update register with factory cal value 
bcf     STATUS,RP0        ; set file register bank to 0

movlw	0x07		;turn comparators off
movwf	CMCON

bsf	STATUS,RP0
movlw	b'00000000'
movwf	TRISIO
bcf	STATUS,RP0

Loop
clrf	count_pcl			;set counter register to zero
movlw 	d'7'
movwf 	bit_number

Byte_Extraction	
movf	count_pcl, w		;put counter value in W
call	Data_Table			;get a character from the text table
xorlw	0x00				;is it a zero?
btfsc	STATUS, Z
goto	Loop 				;It is zero.. we have used every byte
movwf 	bit_storage			;Now contains 8Bits

Bit_Extraction
[COLOR="Red"]btfsc 	bit_storage,bit_number       ;is this allowed in assembly??[/COLOR]		;is it 0? or is it 1?
call 	is_High						;it is 1
call 	is_Low						;it is 0

Resume
movfw bit_number					
xorlw d'0'
btfsc 	STATUS,Z					;Have we used all the bits of this byte?
goto Byte_Extraction_setup			;Yes we have - get next byte

movlw d'50'
movwf delay_counter

delay_counting
decfsz delay_counter,f
goto delay_counting

decf bit_number,f					;decrease this variable so we can extract each of the 8 bits from 
goto Bit_Extraction					;bit_storage

Byte_Extraction_setup		
incf	count_pcl, f				;increment so we get next byte in data table
movlw 	d'7'
movwf 	bit_number					;get ready to extract 8 more bits
goto	Byte_Extraction

is_High
bsf GPIO,0
goto Resume

is_Low
bcf GPIO,0
goto Resume

Data_Table addwf	PCL, f

     retlw b'00010010'   ; 12 
     retlw b'01011101'   ; 5d 
     retlw b'01010101'   ; 55 
     retlw b'01010101'   ; 55 
     retlw b'10100101'   ; a5 
     retlw b'01010110'   ; 56 
     retlw b'10010101'   ; 95 
     retlw b'01101010'   ; 6a 
     ;-------------------------  8
     retlw b'01010101'   ; 55 
     retlw b'01010010'   ; 52 
     retlw b'10101100'   ; ac 
     retlw b'11011001'   ; d9 
     retlw b'01010101'   ; 55 
     retlw b'01010100'   ; 54 
     retlw b'11001101'   ; cd 
     retlw b'10011001'   ; 99 
     ;-------------------------  16
     retlw b'00101010'   ; 2a 
     retlw b'11010101'   ; d5 
     retlw b'01010101'   ; 55 
     retlw b'10011001'   ; 99 
     retlw b'01100110'   ; 66 
     retlw b'01010100'   ; 54 
     retlw b'10101010'   ; aa 
     retlw b'11001010'   ; ca 
     ;-------------------------  24
     retlw b'10110010'   ; b2 
     retlw b'11001010'   ; ca 
     retlw b'11001100'   ; cc 
     retlw b'11010110'   ; d6 
     retlw b'01001010'   ; 4a 
     retlw b'10101001'   ; a9 
     retlw b'10110100'   ; b4 
     retlw b'11001010'   ; ca 
     ;-------------------------  32
     retlw b'10101011'   ; ab 
     retlw b'00011001'   ; 19 
     retlw b'10010101'   ; 95 
     retlw b'01011100'   ; 5c 
     retlw b'11100011'   ; e3 
     retlw b'10010101'   ; 95 
     retlw b'01001101'   ; 4d 
     retlw b'00110001'   ; 31 
     ;-------------------------  40
     retlw b'10100110'   ; a6 
     retlw b'11010010'   ; d2 
     retlw b'01010010'   ; 52 
     retlw b'01101111'   ; 6f 
     retlw b'00111100'   ; 3c 
     retlw b'01100001'   ; 61 
     retlw b'10011101'   ; 9d 
     retlw b'01010101'   ; 55 
     ;-------------------------  48
     retlw b'00111000'   ; 38 
     retlw b'10100010'   ; a2 
     retlw b'10000110'   ; 86 
     retlw b'11111011'   ; fb 
     retlw b'11000011'   ; c3 
     retlw b'00001110'   ; 0e 
     retlw b'11100111'   ; e7 
     retlw b'00001110'   ; 0e 
     ;-------------------------  56
     retlw b'00110000'   ; 30 
     retlw b'01010001'   ; 51 
     retlw b'11111100'   ; fc 
     retlw b'11110000'   ; f0 
     retlw b'01000111'   ; 47 
     retlw b'11110000'   ; f0 
     retlw b'11000011'   ; c3 
     retlw b'10001100'   ; 8c 
     ;-------------------------  64
     retlw b'00100011'   ; 23 
     retlw b'11111100'   ; fc 
     retlw b'11110000'   ; f0 
     retlw b'01101110'   ; 6e 
     retlw b'11110000'   ; f0 
     retlw b'00100011'   ; 23 
     retlw b'11110000'   ; f0 
     retlw b'00000011'   ; 03 
     ;-------------------------  72
     retlw b'11111110'   ; fe 
     retlw b'01100000'   ; 60 
     retlw b'01111111'   ; 7f 
     retlw b'10100000'   ; a0 
     retlw b'00110011'   ; 33 
     retlw b'11110000'   ; f0 
     retlw b'00100010'   ; 22 
     retlw b'11111100'   ; fc 
     ;-------------------------  80
     retlw b'01100000'   ; 60 
     retlw b'11111110'   ; fe 
     retlw b'00000000'   ; 00 
     retlw b'11111111'   ; ff 
     retlw b'10000000'   ; 80 
     retlw b'01110011'   ; 73 
     retlw b'11111000'   ; f8 
     retlw b'00100001'   ; 21 
     ;-------------------------  88
     retlw b'11111100'   ; fc 
     retlw b'00010001'   ; 11 
     retlw b'11111100'   ; fc 
     retlw b'00000001'   ; 01 
     retlw b'11100011'   ; e3 
     retlw b'11111000'   ; f8 
     retlw b'01100011'   ; 63 
     retlw b'11110000'   ; f0 
     ;-------------------------  96
     retlw b'01100011'   ; 63 
     retlw b'11100010'   ; e2 
     retlw b'11000011'   ; c3 
     retlw b'11000010'   ; c2 
     retlw b'11110000'   ; f0 
     retlw b'11001111'   ; cf 
     retlw b'11100000'   ; e0 
     retlw b'11001110'   ; ce 
     ;-------------------------  104
     retlw b'10100001'   ; a1 
     retlw b'11000111'   ; c7 
     retlw b'00001011'   ; 0b 
     retlw b'11100001'   ; e1 
     retlw b'11100111'   ; e7 
     retlw b'10000001'   ; 81 
     retlw b'11101011'   ; eb 
     retlw b'00000111'   ; 07 
     ;-------------------------  112
     retlw b'00010101'   ; 15 
     retlw b'00111110'   ; 3e 
     retlw b'00011011'   ; 1b 
     retlw b'01111000'   ; 78 
     retlw b'00011110'   ; 1e 
     retlw b'00111001'   ; 39 
     retlw b'01010100'   ; 54 
     retlw b'00111111'   ; 3f 
     ;-------------------------  120
     retlw b'00000111'   ; 07 
     retlw b'10101100'   ; ac 
     retlw b'00011111'   ; 1f 
     retlw b'00010101'   ; 15 
     retlw b'10100100'   ; a4 
     retlw b'00111111'   ; 3f 
     retlw b'10000011'   ; 83 
     retlw b'11010110'   ; d6 
     ;-------------------------  128
     retlw b'00001111'   ; 0f 
     retlw b'10000011'   ; 83 
     retlw b'11010001'   ; d1 
     retlw b'00011111'   ; 1f 
     retlw b'10000011'   ; 83 
     retlw b'11011010'   ; da 
     retlw b'00001111'   ; 0f 
     retlw b'00001111'   ; 0f 
     ;-------------------------  136
     retlw b'00010010'   ; 12 
     retlw b'01011111'   ; 5f 
     retlw b'00001111'   ; 0f 
     retlw b'00111000'   ; 38 
     retlw b'00111100'   ; 3c 
     retlw b'00111100'   ; 3c 
     retlw b'00110000'   ; 30 
     retlw b'01111100'   ; 7c 
     ;-------------------------  144
     retlw b'00111100'   ; 3c 
     retlw b'11110000'   ; f0 
     retlw b'11110001'   ; f1 
     retlw b'11000000'   ; c0 
     retlw b'11000111'   ; c7 
     retlw b'11100001'   ; e1 
     retlw b'11000111'   ; c7 
     retlw b'10000111'   ; 87 
     ;-------------------------  152
     retlw b'10000111'   ; 87 
     retlw b'00010110'   ; 16 
     retlw b'00111110'   ; 3e 
     retlw b'00001110'   ; 0e 
     retlw b'01101000'   ; 68 
     retlw b'01111000'   ; 78 
     retlw b'01110001'   ; 71 
     retlw b'01001011'   ; 4b 
     ;-------------------------  160
     retlw b'11000011'   ; c3 
     retlw b'11001110'   ; ce 
     retlw b'00001111'   ; 0f 
     retlw b'00001100'   ; 0c 
     retlw b'01110000'   ; 70 
     retlw b'11111000'   ; f8 
     retlw b'01110011'   ; 73 
     retlw b'11000001'   ; c1 
     ;-------------------------  168
     retlw b'11100011'   ; e3 
     retlw b'00011100'   ; 1c 
     retlw b'00011110'   ; 1e 
     retlw b'00011110'   ; 1e 
     retlw b'01110000'   ; 70 
     retlw b'11110000'   ; f0 
     retlw b'11000110'   ; c6 
     retlw b'10101111'   ; af 
     ;-------------------------  176
     retlw b'00001111'   ; 0f 
     retlw b'00111000'   ; 38 
     retlw b'01111000'   ; 78 
     retlw b'11000011'   ; c3 
     retlw b'00010111'   ; 17 
     retlw b'10000111'   ; 87 
     retlw b'00111000'   ; 38 
     retlw b'00111110'   ; 3e 
     ;-------------------------  184
     retlw b'11000011'   ; c3 
     retlw b'10001111'   ; 8f 
     retlw b'10000011'   ; 83 
     retlw b'10011000'   ; 98 
     retlw b'00111100'   ; 3c 
     retlw b'10100101'   ; a5 
     retlw b'10010111'   ; 97 
     retlw b'10000011'   ; 83 
     ;-------------------------  192
     retlw b'10011100'   ; 9c 
     retlw b'00111100'   ; 3c 
     retlw b'00100101'   ; 25 
     retlw b'10010111'   ; 97 
     retlw b'10000111'   ; 87 
     retlw b'00111000'   ; 38 
     retlw b'01111001'   ; 79 
     retlw b'00001110'   ; 0e 
     ;-------------------------  200
     retlw b'00101111'   ; 2f 
     retlw b'00001110'   ; 0e 
     retlw b'00111000'   ; 38 
     retlw b'11110010'   ; f2 
     retlw b'00011110'   ; 1e 
     retlw b'01011110'   ; 5e 
     retlw b'00011100'   ; 1c 
     retlw b'01100001'   ; 61 
     ;-------------------------  208
     retlw b'11110000'   ; f0 
     retlw b'00111101'   ; 3d 
     retlw b'00111000'   ; 38 
     retlw b'00111001'   ; 39 
     retlw b'11000011'   ; c3 
     retlw b'11010000'   ; d0 
     retlw b'11010110'   ; d6 
     retlw b'11100000'   ; e0 
     ;-------------------------  216
     retlw b'11110110'   ; f6 
     retlw b'00001111'   ; 0f 
     retlw b'01000011'   ; 43 
     retlw b'01011011'   ; 5b 
     retlw b'10000011'   ; 83 
     retlw b'11011000'   ; d8 
     retlw b'00111100'   ; 3c 
     retlw b'00001110'   ; 0e 
     ;-------------------------  224
     retlw b'11011110'   ; de 
     retlw b'00001111'   ; 0f 
     retlw b'01100001'   ; 61 
     retlw b'11100100'   ; e4 
     retlw b'00111100'   ; 3c 
     retlw b'11110000'   ; f0 
     retlw b'01111011'   ; 7b 
     retlw b'00000111'   ; 07 
     ;-------------------------  232
     retlw b'11000000'   ; c0 
     retlw b'11111011'   ; fb 
     retlw b'10000011'   ; 83 
     retlw b'11011000'   ; d8 
     retlw b'00111111'   ; 3f 
     retlw b'00000011'   ; 03 
     retlw b'11111000'   ; f8 
     retlw b'00011110'   ; 1e 
     ;-------------------------  240
     retlw b'11000001'   ; c1 
     retlw b'11101000'   ; e8 
     retlw b'00101111'   ; 2f 
     retlw b'11100000'   ; e0 
     retlw b'11110110'   ; f6 
     retlw b'00011111'   ; 1f 
     retlw b'00000001'   ; 01 
     retlw b'11011110'   ; de 
     ;-------------------------  248
	 retlw	0x00 


;**********************************************************************
;Delay Routines
;**********************************************************************
delay       movwf    count1 
d1          movlw    0xC7        ;delay 1mS 
            movwf    counta 
            movlw    0x01 
            movwf    countb 
delay_0 
           	decfsz    counta,f 
          	goto    $+2 
           	decfsz    countb,f 
           	goto    delay_0 

           	decfsz    count1,f 
           	goto    d1 
           	retlw    0x00 

end

It works... as in I can hear the output runing through the 8*248 = 1984bits..

however, that is only 1984/6000*8 = 4% of the 5.3second sound clip..

So.. since I can fit only 1 984 of the 49 000 bits on the PIC I can play .22s of the sound... AKA useless :eek:

I also cant figure out how long a delay I should be using so as to get the correct bitrate of 9766hz or bit/second.

It would be SOO awesome to make projects incorporating sounds from PICS!

I wish I could figure this one out.

Yes I know Im using one of the smallest PICs out there .. as I am waiting for my 877As to show up.. maybe with 4K of code space I will get be able to figure this out.
 
Last edited:
Well I've got the algorithm made as you can see up there.

Is this legal in assembly?
btfsc bit_storage,bit_number ;is this allowed in assembly??

using the bit_number var like this?

I just realized the 877a is 8k which is enough to play the whole song.

Can PICS use peripherial memory ICs? And if so can someone link to what I would be looking for?

Would like to save the sound bits on a seperate memory IC and play the bits with a PIC.
 
Peter_wadley said:
Well I've got the algorithm made as you can see up there.

Again, check my RS232 routines (that I stole from an ancient Parallax application note), they are nice and simple - and WORK!.

Is this legal in assembly?
btfsc bit_storage,bit_number ;is this allowed in assembly??

using the bit_number var like this?

No it's not - remember what I said in a previous thread about equ names? (I think it was to you?). All the assembler does is replace the name with the number it equates to - so in your case every occurance of 'bit_number' will be replaced with 0x2A (which isn't a valid bit value 0-7 only).

I just realized the 877a is 8k which is enough to play the whole song.

Be aware of table 'limits', you need special attention to use a table more than 256 bytes, or one that crosses a 256 byte boundary - it's been mentioned often on here, and my LED matrix uses the same technique.

Can PICS use peripherial memory ICs? And if so can someone link to what I would be looking for?

Not as such - you can use external I2C EEPROM and read from that, it's common practice.

Would like to save the sound bits on a seperate memory IC and play the bits with a PIC.

A reasonable thing to do!.
 
I was looking into EEPROM memory..

Would the 24C512 chip be what im looking for?

My programmer can program it.. but iprog doesnt list it.. maybe your program does (havent checked yet)

is this the best memory to use for this application?

Also, is it a one time write? I would much prefer a chip that allows for more then 1 write.

Thanks
 
ikalogic said:
this should be doable, but you'll have to use very fast flash memory and PIC. use the maximum oscillator the PIC support..

for the DAC, an R/2R D/A can do the trick.. without any filter, but depensding on the size of your speaker you may need an LM386 audio AMP...
This is Ok . we have to identify the possibility of playing w/o use of PC--

Incidentally DRM rado has become popular across Europe, Germany and Even some parts of Soudi--

there are some softwares Like DREAM1.6.1CVS using it thro a PC we can retuireve the audio.

I am wondering if the MP# format or a nearby format is used, can any PIC chip can help in converting the !@KHz IF frqiency based DRM signal and deliver Audio.

Perhaps some chips used in portable MP3 players can be of help.- provided some reverse engg can be done. for example chips like ATJ2085 may be of some help
 
Status
Not open for further replies.

New Articles From Microcontroller Tips

Back
Top