Siedze od dwoch dni nad odbiorem danych przez At89C4051 po RS232 i nie moge sobie za cholere z tym poradzic.
Przyblize moze moj problem.
Wysylam do urzadznia ramke danych
$crystal = 14745600
$baud = 19200
Config Sda = P3.5
Config Scl = P3.7
Declare Sub Write(adres As Byte , Value As Byte)
Dim Adres As Byte
Dim Value As Byte
Dim Tx(25) as byte
Dim Licznik As Byte
On Serial Zapisz
Enable Serial
Enable Interrupts
Set P3.3
Reset P1.5
Adres = 0
Licznik = 0
Do
If P3.3 = 0 Then
Printhex &H02
Printhex &H0F
Printhex &H68
Printhex &H01
Printhex &H85
End If
Loop
Zapisz:
If Scon.0 = 1 Then
Reset Scon.0
Value = Sbuf
Tx(licznik) = Value
incr Licznik
If Licznik = 26 Then
Licznik = 0
For Adres = 0 To 25
Call Write Adres , Tx(adres)
Next Adres
End If
End If
If Scon.1 = 1 Then
Reset Scon.1
End If
Return
Sub Write(adres As Byte , Value As Byte)
Set P1.5
I2cstart
I2cwbyte 160
I2cwbyte Adres
I2cwbyte Value
I2cstop
Waitms 10
Reset P1.5
End Sub
No wiec moj problem jest nastepujacy:
Po wyslaniu ramki danych do urzadzenia ( to akurat przebiega bez problemu), urzadzonko odpowiada mi ramka zawirajaca 58 bajtow i tutaj polega problem!!!!!. Musze gdzies przechowywac te wszystkie odebrane dane a biarac pod uwage skromniutki RAM w AT89C4051 nie zmiesci sie tam te 58 bajtow, wiec pozostaje tylko zapis do eeproma ( tak mi sie przynajmniej wydaje). Ale OK. Program w takiej formie jak pozyzej zapisuje do eepromu 25 pierwszych odebranych bajtow, i mie mam pojecia jak zapisac reszte a malo tego po wystapieniu przetwania z seriala nie chce mi wszystko wrocic do petli DO/LOOP a przeciez resetuje flagi Scon.0 i Scon.1. Nie moge bezposrednio zapisywac dane do eeproma podczas odbioru bo przeciez wystapia bledy!!!!!
NA CHLOPSKI ROZUM

**********************
Musze jakos odebrac te 58 bajtow i gdzies je przechowac i musze to zrobic na AT89C4051. Bede bardzo wdzieczny za jakieklowiek wskazowki !!!!!
BARDZO PROSZE O POMOC !!!!!!!!!!
Pozdrawiam