L A B 7 C O D E

T A L K I N G T O M I D I D E V I C E


DEFINE osc 20

DEFINE ADC_BITS 10
DEFINE ADC_CLOCK 3
DEFINE ADC_SAMPLEUS 15

DEFINE HSER_RCSTA 90h
DEFINE HSER_TXSTA 20h
DEFINE HSER_BAUD 31250

TRISA = %11111111 ' SET PORTA to all input
ADCON1 = %10000010

ylLED var portd.1
note var byte
ADCVAR var word
pitch VAR BYTE(12)

OUTPUT ylLed

' Initialize by blinking
HIGH ylLEd
PAUSE 300
LOW ylLED
PAUSE 300
HIGH ylLEd
PAUSE 300
LOW ylLED
PAUSE 300
HIGH ylLEd
PAUSE 300
LOW ylLED
PAUSE 300
HIGH ylLED

'initialize pitch array
pitch(0) = 60 'middle C
pitch(1) = 61 'C#
pitch(2) = 62 'D
pitch(3) = 63 'D#
pitch(4) = 64 'E
pitch(5) = 65 'F
pitch(6) = 66 'F#
pitch(7) = 67 'G
pitch(8) = 68 'G#
pitch(9) = 69 'A
pitch(10) = 70 'A#
pitch(11) = 71 'B
main:
     ' READ in pot value -
     ADCIN 0, ADCVAR
     '' PREVIOUS TRIAL - TEST RANGE OF POT
    'serout2 portc.6, 16468, ["ADC VAR = ", DEC ADCVAR, 13, 10]
     ' RANGE = 0 to 1023
     'CONVERT hardcoded pot range to note
      Note = ADCVAR/100
     'play note
     hserout[$90, pitch(note), $40]
     pause 250
     hserout[$90, pitch(note), $00]

goto main