![]() |
|
Tài trợ cho PIC Vietnam |
Giao tiếp cổng COM và LPT RS232, RS485 và LPT là những giao tiếp cơ bản và kinh điển khi mới học về vi điều khiển... |
|
Ðiều Chỉnh | Xếp Bài |
![]() |
#33 |
Nhập môn đệ tử
Tham gia ngày: Dec 2007
Bài gửi: 4
: |
Chào các bạn, minh đang làm giao tiếp PC và PIC sử dụng com ảo, nhưng giá trị gửi từ máy tính 4 số 0, 1, 2, 3, 4 chỉ nhận đúng 0 và 1, còn 3 thì nhận được 1, 4 thì nhận được 0, nói chung số chẫn nhân 0, số lẻ nhận được 1. Nhờ các bạn giải thích và sửa dúp dùm mình.
Chương trình VB Dim i As Byte Private Sub CmdSend_Click() i = 0 MSComm1.Output = Chr(i) End Sub Private Sub Command1_Click() i = 1 MSComm1.Output = Chr(i) End Sub Private Sub Command2_Click() End End Sub Private Sub Command3_Click() i = 2 MSComm1.Output = Chr(i) End Sub Private Sub Command4_Click() i = 3 MSComm1.Output = Chr(i) End Sub Private Sub Form_Load() MSComm1.CommPort = 5 MSComm1.PortOpen = True 'i = 0 Text1.Text = "DKM" Text1.Enabled = False End Sub Chương trình CSS #include <16F877A.h> #FUSES NOWDT, HS, PUT, NOPROTECT, NODEBUG, BROWNOUT, NOLVP, NOCPD, NOWRT #use delay (clock=20000000) #use rs232(baud=9600,parity=n,xmit=pin_C6,rcv=pin_C7) #include <DEFS_16F877A.h> char value; #int_RDA void RDA_isr(void) { value = getc(); switch(value) { case 0: { PORTB = 0x0f; break; } case 1: { PORTB = 0x07; break; } case 2: { PORTB = 0x08; } case 3: { PORTB = 0x09; break; } } } void main() { enable_interrupts(GLOBAL); enable_interrupts(INT_RDA); set_tris_B(0); PORTB = 0; while(true) { ; } } |
![]() |
![]() |
Ðiều Chỉnh | |
Xếp Bài | |
|
|