View Single Post
Old 03-05-2008, 02:07 PM   #16
uydanh
Đệ tử 4 túi
 
Tham gia ngày: Jan 2007
Bài gửi: 79
:
Đoạn chương trình PIC gửi một ký tự
Code:
#include <16f877a.h>
#include <def_877a.h>
#FUSES NOWDT, HS, NOPUT,NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use delay(clock=4000000)
#use rs232(baud=9600, parity=N, xmit=pin_C6, rcv=pin_C7, bits=9)
char c;
void main()
{
putc(c);
while(1)
{
}
}
Đoạn trên tôi gửi số 1 ký tự ( chẳng hạn 1 số từ 0 đến 255) lên máy tính. Trên máy tính tôi nhận số đó và đổi ra số Hex hiện ra ô receivetxt thì trong chương trình con mscomm_oncomm() tôi viết như sau :
Code:
Private Sub MSComm1_OnComm()
Dim buffer() As Byte
Dim j1 As String
If MSComm1.CommEvent = comEvReceive Then
    buffer = MSComm1.Input
    If buffer(0) < 16 Then
    j1 = "0" & Hex(buffer(0))
    Else
    j1 = Hex(buffer(0))
    End If
txtreceive.Text = j1
End If
End Sub
còn MScomm1_oncomm() là gì thì chắc bạn phải đọc thêm trong sách !
Chương trình trên để truyền 1 ký tự lên máy tính. Hoàn toàn tương tự bạn lại thêm một lệnh putc() như vậy nữa để truyền ký tự thứ 2 lên máy tính. Thế nhưng thực tế bạn lại không thể truyền được ký tự thứ 2 này vì tốc độ xử lý của PIC6F877a đáp ứng ko kịp (có lẽ vậy), nên giữa 2 lệnh putc() này bạn thêm một lệnh delay một khoảng thời gian nào đó thì mới truyền đúng được. Đó là một ví dụ nhỏ để chứng tỏ với bạn rằng chỉ có chính mình xoắn tay vào làm nó thì mới thành công được.
uydanh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn