Chào các bạn trong bài đăng này mình sẽ hướng dẫn các bạn giao tiếp máy tính thông qua cổng com ảo và RS232 sử dụng phần mềm VB6.0 và trình biên dịch CCS PIC16F877A.
Ảnh mô phỏng protues.
Đây là code cho PIC.
#include <16f877a.h>
#device 16f877a*16ADC=10
#include <def_877a.h>
#fuses nowdt,nolvp,noprotect,xt,put
#use delay(clock=4000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7)
int x;
#int_RDA
void ngat_RDA()
{
char data;
data=getc();
switch (data)
{
case '1':
{
RB0=1;
break;
}
case '2':
{
RB1=1;
break;
}
case '3':
{
RB2=1;
break;
}
case '4':
{
RB3=1;
break;
}
case '5':
{
RB4=1;
break;
}
case '6':
{
RB5=1;
break;
}
case '7':
{
RB6=1;
break;
}
case '8':
{
RB7=1;
break;
}
case '9':
{
PORTB=255;
break;
}
case '0':
{
PORTB=0;
putc('0');
break;
}
}
}
void main()
{
enable_interrupts(int_RDA);
enable_interrupts(global);
trisb=0x00;
PORTB=0;
trisc=0x80;
while(1)
{
}
}
Ảnh mô phỏng protues.
Đây là code cho PIC.
#include <16f877a.h>
#device 16f877a*16ADC=10
#include <def_877a.h>
#fuses nowdt,nolvp,noprotect,xt,put
#use delay(clock=4000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7)
int x;
#int_RDA
void ngat_RDA()
{
char data;
data=getc();
switch (data)
{
case '1':
{
RB0=1;
break;
}
case '2':
{
RB1=1;
break;
}
case '3':
{
RB2=1;
break;
}
case '4':
{
RB3=1;
break;
}
case '5':
{
RB4=1;
break;
}
case '6':
{
RB5=1;
break;
}
case '7':
{
RB6=1;
break;
}
case '8':
{
RB7=1;
break;
}
case '9':
{
PORTB=255;
break;
}
case '0':
{
PORTB=0;
putc('0');
break;
}
}
}
void main()
{
enable_interrupts(int_RDA);
enable_interrupts(global);
trisb=0x00;
PORTB=0;
trisc=0x80;
while(1)
{
}
}
Đây là giao diện VB.
Đây là code VB.
Private Sub Command1_Click() 'nhấn nhấn truyền
Dim b As String
b = Text1.Text
MSComm1.Output = b
End Sub
' khởi tạo cổng com
Private Sub Form_Load()
MSComm1.CommPort = 1
MSComm1.Settings = "9600,N,8,1"
MSComm1.RThreshold = 0
MSComm1.InputLen = 1
MSComm1.PortOpen = True
End Sub
Link download project.
EmoticonEmoticon