با عرض سلام و درود
من میخوام با کامپیوتر یه سری داده رو به از طریق پورت سریال به میکرو ارسال کنم و وقتی که یه کاراکتر خاص مثلا A دریافت شد میکرو داده های قبلی رو تا وقتی که داده ی جدیدی ارسال نشده به ترتیب روی یکی از پورتهاش نمایش بده، و زمانی که داده جدیدی ارسال شد دوباره تا دریافت A به دریافت ادامه بده و... .
من از وقفه سریال برای این کار استفاده کردم و مطابق کدهایی که توی سایت بود کدم رو نوشتم ولی جواب دلخواه رو نگرفتم، کد رو قرار میدم ممنون میشم راهنمایی کنید.
...
Enable Interrupts
Enable Urxc
On Urxc Label
Dim A As Integer , B As Integer
Dim Receive(514) As Byte
$asm
CLI
LDI R16,$2
Out Ucsra , R16
LDI R16,$10
Out Ucsrb , R16
LDI R16,$86
Out Ucsrc , R16
CLR R16
Out Ubrrh , R16
LDI R16,$33
Out Ubrrl , R16
SEI
$end Asm
Do
For A = 1 To B
Portb = Receive(a)
Next A
Loop
End
Label:
For A = 1 To 514
$asm
L:
SBIS UCSRA,7
RJMP L
$end Asm
Receive(a) = Udr
If Receive(a) = 65 Then
B = A - 1
Exit For
End If
Next A
Return
من میخوام با کامپیوتر یه سری داده رو به از طریق پورت سریال به میکرو ارسال کنم و وقتی که یه کاراکتر خاص مثلا A دریافت شد میکرو داده های قبلی رو تا وقتی که داده ی جدیدی ارسال نشده به ترتیب روی یکی از پورتهاش نمایش بده، و زمانی که داده جدیدی ارسال شد دوباره تا دریافت A به دریافت ادامه بده و... .
من از وقفه سریال برای این کار استفاده کردم و مطابق کدهایی که توی سایت بود کدم رو نوشتم ولی جواب دلخواه رو نگرفتم، کد رو قرار میدم ممنون میشم راهنمایی کنید.
...
Enable Interrupts
Enable Urxc
On Urxc Label
Dim A As Integer , B As Integer
Dim Receive(514) As Byte
$asm
CLI
LDI R16,$2
Out Ucsra , R16
LDI R16,$10
Out Ucsrb , R16
LDI R16,$86
Out Ucsrc , R16
CLR R16
Out Ubrrh , R16
LDI R16,$33
Out Ubrrl , R16
SEI
$end Asm
Do
For A = 1 To B
Portb = Receive(a)
Next A
Loop
End
Label:
For A = 1 To 514
$asm
L:
SBIS UCSRA,7
RJMP L
$end Asm
Receive(a) = Udr
If Receive(a) = 65 Then
B = A - 1
Exit For
End If
Next A
Return
دیدگاه