Aktyw Forum

Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.

Sprawdź punkty Zarejestruj się

attiny 2313 + wstawki asemblerowe + UART = Problem

Awatar użytkownika
amok67
-
-
Posty:108
Rejestracja:12 lip 2004, o 09:17
Lokalizacja:Warszawa
attiny 2313 + wstawki asemblerowe + UART = Problem

Postautor: amok67 » 20 sie 2006, o 10:57

Witam.
Problem jest następujący:
ATTiny2313,Sterowany wew.oscylatorem 8MHz.
Chcę wysłać bit UARTem.
Kiedy uzywam instr.PRINT wszystko jest OK,ale w
chwili przejscia na asembler(wstawki) układ wysyła mi znak w ASCII
zamiast owego Bitu(Bita?)

Oto program:
'==============================================
$crystal=8000000
$regfile="attiny2313.dat"
$baud=9600

dim a as byte
a=48

$asm
.def zaladuj=R16
$end asm

print a '<-tutaj układ wyśle 48 jako 48 :-)

loadadr a,x 'a tutaj wysle 0(zero) czyli kod ASCII
ld zaladuj,x
gosub wyslij_bit

do
loop

wyslij_bit:
$asm
zajete:
sbis ucsra,udre
rjmp zajete
out udr,zaladuj
$end asm
return
'=========================================

szymel
-
-
Posty:212
Rejestracja:16 sty 2005, o 16:42
Lokalizacja:Włocławek

Postautor: szymel » 21 sie 2006, o 15:34

Funkcja Print , zanim wyśle zmienną/stałą liczbową(BYTE,INTEGER,itp.) do rejestru portu szeregowego , skonwertują ją do postaci zrozumiałej przez odbiorcę , czyli program typu terminal . A więc Print tworzy tymczasową zmienną tekstową (STRING) , w której to umieszcza kody ASCII cyfr , reprezentujących tę liczbę i dopiero te kody , wysyła przez port szeregowy.Natomiast Twoja "wstawka" , emuluje Print Chr(a); , a nie Print a.
Podsumowując , wszystko zależy od punktu widzenia , tudzież interpretacji.Dla jednego 4-8-99 to działanie arytmetyczne , a dla innego np. czwarty sierpień dziewięćdziesiąt dziewięć :D

Piotrek

Wróć do „Projektowanie PCB, programy EDA, CAD, narzędziowe”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 52 gości