A2D question


Results 1 to 11 of 11

Thread: A2D question

Threaded View

  1. #3
    Join Date
    Jul 2010
    Posts
    10


    Did you find this post helpful? Yes | No

    Default Here is my code.

    Here is my code, feel free to offer suggestions or modifications.

    Code:
    ' Read and write hardware USART
    
    B1      var     byte
    Done    var     byte
    TxBuf   var     byte[3]
    STX     var     byte
    ETX     var     byte
    Period  var     byte
    i       var     byte
    tmpval var     byte
    ' Initialize USART
            TRISC = %10111111       ' Set TX (PortC.6) to out, rest in
            SPBRG = 25              ' Set baud rate to 2400
            RCSTA = %10010000       ' Enable serial port and continuous receive
            TXSTA = %00100000       ' Enable transmit and asynchronous mode
    
    ' Define ADCIN parameters
    Define    ADC_BITS    10         ' Set number of bits in result
    Define    ADC_CLOCK    3         ' Set clock source (3=rc)
    Define    ADC_SAMPLEUS    50     ' Set sampling time in uS
    
    adval    var    word        ' Create adval to store result
    
    
        TRISA = %11111111    ' Set PORTA to all input
        ADCON1 = %10000010    ' Set PORTA analog and right justify result
        Pause 500        ' Wait .5 second
    
    
    ' Echo received characters in infinite loop
    STX = 2
    ETX = 3
    Period = 46
    TxBuf[1] = 51
    TxBuf[2] = 54
    TxBuf[3] = 56
    mainloop: 
            ADCIN 0, adval    ' Read channel 0 to adval
    'basicaly here i want to convert advar into 3 ascii numbers
    'representing advar
    'So a result like 936 would put 
    '57 in txbuf[1] 
    '51 in txbuf[2]
    '54 in txbuf[3]
    'Then call the serial output routine which adds a stx char, 2 digits
    'a period then the last digit followed by an ETX char
            Gosub StringOut         ' Send character to serial output
            pause 500               ' Wait half second
            Goto mainloop           ' Do it forever
    
    
    ' Subroutine to get a character from USART receiver
    charin: B1 = 0                  ' Preset to no character received
    
            If PIR1.5 = 1 Then      ' If receive flag then...
                    B1 = RCREG      ' ...get received character to B1
            Endif
    
    ciret:  Return                  ' Go back to caller
    
    
    ' Subroutine to send a character to USART transmitter
    charout: If PIR1.4 = 0 Then charout     ' Wait for transmit register empty
                   
            TXREG = B1              ' Send character to transmit register
           done = 1
            Return                  ' Go back to caller
    ' Subroutine to send a character string to USART transmitter
    'First Send STX (02)  then 2 digits, then period (46), then 1 digit, then ETX (03)
    StringOut: If PIR1.4 = 0 Then StringOut     ' Wait for transmit register empty
           done = 1
                   
           TXREG = STX              ' Send character to transmit register
           while PIR1.4 = 0
           wend
           for i = 1 to 2
               TXREG = TxBuf[i]              ' Send character to transmit register
               while PIR1.4 = 0
               wend
           next i
           TXREG = Period              ' Send character to transmit register
           while PIR1.4 = 0
           wend
           TXREG = TxBuf[3]              ' Send character to transmit register
           while PIR1.4 = 0
           wend
           TXREG = ETX              ' Send character to transmit register
           while PIR1.4 = 0
           wend
        Return                  ' Go back to caller
    Attached Files Attached Files
    Last edited by ScaleRobotics; - 24th July 2010 at 03:22. Reason: added code tags

Members who have read this thread : 0

You do not have permission to view the list of names.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts