Я так понимаю, что каждому символу соответствует число которое выдает АЦП
Ну да, у Вас в VMLAB в настройках TTY указана опция "Display RX as ASCII" , вот терминал и интерпретирует принятые значения как коды символов в ASCII. Символы, которые при обычном выводе не имеют значка, обозначаются аббревиатурой в скобках. Хотите числа - поставьте соответствующую опцию вывода.
<LF>=Line Feed, перевод строки; говорит терминалу, чтобы он передвинул курсор на новую строку. В реальном терминале отображаться не будет. Просто VMLAB делает так, чтобы мы видели все, что реально идет через UART.
а как убрать <LF>?
Не писать в конце "/n". Тогда все значения будут в одну строку, что, в общем-то, лучше в случае, если Вы будете сопрягать свое творение с программой на ПК (типа осцил /вольтметр).
[IMHO]Для такой задачи использовать С - извращение.

На асме гораздо быстрее работает (что для АЦП немаловажно), гораздо более компактный код... Недавно сам по приколу писал подобную штуку, с маджонгом и гейшами

:
Код: Выделить всё
;ADC on COM port (c) YS 2009
;DEVICE: ATmega48; CLOCK: internal, 8MHz
.include "D:\vmlab\include\m48def.inc"
.def t=R16
.def t1=R17
.cseg
.org 0
rjmp RESET ; Reset Handler
rjmp EXT_INT0 ; IRQ0 Handler
rjmp EXT_INT1 ; IRQ1 Handler
rjmp PCINT0 ; PCINT0 Handler
rjmp PCINT1 ; PCINT1 Handler
rjmp PCINT2 ; PCINT2 Handler
rjmp WDT ; Watchdog Timer Handler
rjmp TIM2_COMPA ; Timer2 Compare A Handler
rjmp TIM2_COMPB ; Timer2 Compare B Handler
rjmp TIM2_OVF ; Timer2 Overflow Handler
rjmp TIM1_CAPT ; Timer1 Capture Handler
rjmp TIM1_COMPA ; Timer1 Compare A Handler
rjmp TIM1_COMPB ; Timer1 Compare B Handler
rjmp TIM1_OVF ; Timer1 Overflow Handler
rjmp TIM0_COMPA ; Timer0 Compare A Handler
rjmp TIM0_COMPB ; Timer0 Compare B Handler
rjmp TIM0_OVF ; Timer0 Overflow Handler
rjmp SPI_STC ; SPI Transfer Complete Handler
rjmp USART_RXC ; USART, RX Complete Handler
rjmp USART_UDRE ; USART, UDR Empty Handler
rjmp USART_TXC ; USART, TX Complete Handler
rjmp ADC_CCPL ; ADC Conversion Complete Handler
rjmp EE_RDY ; EEPROM Ready Handler
rjmp ANA_COMP ; Analog Comparator Handler
rjmp TWI ; 2-wire Serial Interface Handler
rjmp SPM_RDY ; Store Program Memory Ready Handler
EXT_INT0 :
EXT_INT1 :
_PCINT0 :
_PCINT1 :
_PCINT2 :
WDT :
TIM2_COMPA:
TIM2_COMPB:
TIM2_OVF :
TIM1_CAPT :
TIM1_COMPA:
TIM1_COMPB:
TIM1_OVF :
TIM0_COMPA:
TIM0_COMPB:
TIM0_OVF :
SPI_STC :
USART_UDRE:
USART_TXC :
ADC_CCPL :
EE_RDY :
ANA_COMP :
TWI :
SPM_RDY :
reti
RESET:
ldi t,HIGH(RamEnd) ;stack initialization
out SPH,t
ldi t,LOW(RamEnd)
out SPL,t
ldi t,0
sts PRR,t ;no power reduction
;ADC initialization
ldi t,0b00000001 ;disable digital input on ADC0/PC0 pin
sts DIDR0,t
ldi t,0b01000000 ;Vref=Vcc, input=ADC0 pin
sts ADMUX,t
ldi t,0b10000111 ;ADC enable, ADC clock=62,5KHz
sts ADCSRA,t
;UART initialization
ldi t,0b10011000 ;RX complete interrupt enable, RX enable, TX enable
sts UCSR0B,t
ldi t,0b00000110 ;async, no parity, one stopbit, 8 bit character
sts UCSR0C,t
ldi t,0 ;work at 19200Bps
sts UBRR0H,t
ldi t,25
sts UBRR0L,t
ldi ZH,HIGH(HelloMessage*2)
ldi ZL,LOW(HelloMessage*2)
rcall SendMessage
sei
LOOP: ;main loop
rjmp LOOP
USART_RXC: ;USART RX complete interrupt handler
cli
lds t,UCSR0A
sbrc t,FE0 ;Error?
rjmp FRAMING_ERROR
lds t,UDR0
cpi t,'i'
breq SEND_INFO
cpi t,'c'
breq CONVERT_VALUE
rjmp ERROR_UNKNOWN
CONVERT_VALUE:
ldi t,0b11000111 ;Start conversion
sts ADCSRA,t
WAIT_ADC:
lds t,ADCSRA
sbrc t,ADSC
rjmp WAIT_ADC
lds t,ADCL
sts UDR0,t
rcall WaitUART
lds t,ADCH
sts UDR0,t
rcall WaitUART
ldi t,0xD
sts UDR0,t
rcall WaitUART
ldi t,0xA
sts UDR0,t
rcall WaitUART
rjmp RX_END
ERROR_UNKNOWN:
ldi ZH,HIGH(ErrorMessage2*2)
ldi ZL,LOW(ErrorMessage2*2)
rcall SendMessage
rjmp RX_END
SEND_INFO:
ldi ZH,HIGH(InfoMessage*2)
ldi ZL,LOW(InfoMessage*2)
rcall SendMessage
rjmp RX_END
FRAMING_ERROR:
ldi ZH,HIGH(ErrorMessage1*2)
ldi ZL,LOW(ErrorMessage1*2)
rcall SendMessage
RX_END:
sei
reti
;Subroutines
SendMessage:
lpm
mov t,R0
cpi t,0
breq SEND_END
sts UDR0,t
rcall WaitUART
ldi t,1
ldi t1,0
add ZL,t
adc ZH,t1
rjmp SendMessage
SEND_END:
ret
WaitUART: ;wait while sending the character
lds t,UCSR0A
sbrs t,UDRE0
rjmp WaitUART
ret
;Predefinied messages
ErrorMessage1:
.db "Framing error",0xD,0xA,0
ErrorMessage2:
.db "Unknown command",0xD,0xA,0
InfoMessage:
.db "Commands: i-help, c-start conversion",0xD,0xA,0,0
HelloMessage:
.db "ADC on COM port by YS",0xD,0xA,0
Символы 0xD, 0xA в конце строк - это <CR><LF> - перевод строки и возврат курсора в начало. Для передачи данных бесполезны. Создают красоту для глаза.
[/IMHO]
Разница между теорией и практикой на практике гораздо больше, чем в теории.