| Автор |
Сообщение |
Papan Junior Member
Зарегистрирован: 20.02.2007 Сообщения: 4
|
28.02.2007 13:48 Стыковка AVR с ПК по СОМ порту? |
профиль цитировать |
|
Делаю диплом, пытаюсь написать проги для стыковки 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
**************
Раз протокола нет, то вроде бы больше ничего не нужно, но наверное я чего-то не понимаю.
Помогите плиз!!! |
|
Papan Junior Member
Зарегистрирован: 20.02.2007 Сообщения: 4
|
|
Rocketer Junior Member

Зарегистрирован: 19.12.2005 Сообщения: 56 Откуда: Москва
|
12.03.2007 02:06 |
профиль цитировать |
|
А не проще будет на АВР прописать эмуляцию терминала через уарт и посылать с компа просто нужную строку из того же delphi?
Подсказал как знал, прогу для мк не понял - просто в ассемблере я не силен... |
|
Papan Junior Member
Зарегистрирован: 20.02.2007 Сообщения: 4
|
12.03.2007 10:42 |
профиль цитировать |
|
Rocketer писал(а): А не проще будет на АВР прописать эмуляцию терминала через уарт и посылать с компа просто нужную строку из того же delphi?
Подсказал как знал, прогу для мк не понял - просто в ассемблере я не силен...
а, что значит эмуляцию терминала? |
|
Rocketer Junior Member

Зарегистрирован: 19.12.2005 Сообщения: 56 Откуда: Москва
|
|
Papan Junior Member
Зарегистрирован: 20.02.2007 Сообщения: 4
|
|
|