Делаю диплом, пытаюсь написать проги для стыковки ATMega8535 с ПК. Сейчас есть есть программа в МК принимающая данные котрые отображаются на индикаторе(7 сегментов), с ПК из проги на Delphi7 данные выталкиваются, индикатор зажигается(за основу взяты проги из книжек), но высвечивает непонятно что. У кого есть информация по программированию МК - поделитесь.
Пишу на ассемблере.
Добавлено спустя 4 минуты 32 секунды:
В книжке читаю в примере "отправляем в порт строку 5А 21 00 00 00 00 7А
дальше коментируется 5А - стартовый байт"
не понимаю, вот этот стартовый байт всегда должен быть 5А или нет, может это конкретный пример (для конкретной проги)?
Вот часть кода для проги на Delphi:
begin
if not VaComm1.Active then VaComm1.Open;
sCMD:='5A'+Format(' %2.x',[cmRS]);
sum:=$5A+$21;
sCMD:=sCMD+' 00 00';
for J:=1 to 128 do begin
sum:= sum+I;
sCMD:= sCMD+Format(' %.2x',[J]);
end;
sCMD:= sCMD+A+Format(' %.2x',[12]);
sum:= sum+$12;
sCMD:=sCMD+Format(' %.2x',[Hi(sum)])+Format(' %.2x',[Lo(sum)]);
Edit1.Text :=sCMD;
VaComm1.WriteText(sCMD);
end;
end.
Строковая переменная sCMD и есть то что мы передаём на контророллер. Она формируется из стартового байта(5А) и байта команды(cmRS=$21). Непонятно зачем добавляются вот это '00 00'. То что цикл забивает 128 байт цифрами вроде понял, но итересует как вместо цифр забить конкретные данные. Да и вообще как изменить длину слова данных.
Вот кусочек для МК:
**********************
LOOP:
clr r18;
rcall RECIVE
cbi UCSRB,pb4 ;Disable Receiver and Transmitter
out porta,r18 ;это
sbi portb,pb0 ;семисеоментник
sbi portb,pb1 ;
rjmp LOOP
RECIVE:
ldi r16,0x12
out UBRRH, r16
ldi r16, (1<<URSEL)|(0<<USBS)|(2<<UCSZ0) ;Set frame format: 7data, 1stop bit
out UCSRC,r16
ldi r16, (1<<RXEN) ;Enable Receiver and Transmitter
out UCSRB,r16
rec: sbis UCSRA,RXC ;ждать загрузки данных в буфер приёмника
rjmp rec
in r18,UDR
ret
**************
Раз протокола нет, то вроде бы больше ничего не нужно, но наверное я чего-то не понимаю.
Помогите плиз!!!
Страница 1 из 1
Стыковка AVR с ПК по СОМ порту?
#3
Отправлено 12 Март 2007 - 01:06
А не проще будет на АВР прописать эмуляцию терминала через уарт и посылать с компа просто нужную строку из того же delphi?
Подсказал как знал, прогу для мк не понял - просто в ассемблере я не силен...
Подсказал как знал, прогу для мк не понял - просто в ассемблере я не силен...
#4
Отправлено 12 Март 2007 - 09:42
Rocketer сказал:
А не проще будет на АВР прописать эмуляцию терминала через уарт и посылать с компа просто нужную строку из того же delphi?
Подсказал как знал, прогу для мк не понял - просто в ассемблере я не силен...
Подсказал как знал, прогу для мк не понял - просто в ассемблере я не силен...
а, что значит эмуляцию терминала?
#5
Отправлено 12 Март 2007 - 15:33
то есть заставить контроллер вести себя как программу-терминал (например HyperTerminal в винде).
неплохой пример реализации такой идеи: http://avr123.nm.ru/z4.htm
неплохой пример реализации такой идеи: http://avr123.nm.ru/z4.htm
Поделиться темой:
Страница 1 из 1