📄 transmit.c
字号:
//dung cho PIC TRANSMIT PC
#include <18f458.h>
#device *=16 ADC=10
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=40000000)
#use rs232(baud=9600 , parity=n , xmit=pin_C6 , rcv=pin_C7 )
int8 message[6]={0x01,0x03,0x01,0x01,0x00,0x01};
int8 huy[3];
int8 CRC[2];
int8 conv[2];
int8 count=0;
int8 value=0;
#int_rda
void receive()
{
huy[count]=getc();
count++;
if(count==2)
{
count=0;
value=1;
}
}
void getCRC() // chuong tring con tinh CRC
{
int16 CRCFull = 0xFFFF;
int8 CRCHigh = 0xFF, CRCLow = 0xFF;
int16 CRCLSB;
int i,j;
for ( i = 0; i < 6; i++)
{
CRCFull = (int16)(CRCFull ^ message[i]);
for (j = 0; j < 8; j++)
{
CRCLSB = (int16)(CRCFull & 0x0001);
CRCFull = (int16)((CRCFull >> 1) & 0x7FFF);
if (CRCLSB == 1)
CRCFull = (int16)(CRCFull ^ 0xA001);
}
}
CRC[0] = CRCHigh = (int8)((CRCFull >> 8) & 0xFF); //char
CRC[1] = CRCLow = (int8)(CRCFull & 0xFF); //char
//conv[0]=(int8)(CRC[1]);
//conv[1]=(int8)(CRC[0]);
}
void main()
{
int i=0;
enable_interrupts(global);
enable_interrupts(int_rda);
delay_ms(200);
message[0]=1;
//CRC[1]=255;
//CRC[0]=15;
getCRC();
while(true)
{
if(value==1)
{
value=0;
if(huy[0]==2)
{
putc(message[0]);
putc(CRC[1]);
putc(CRC[0]);
delay_ms(500);
putc(message[0]);
putc(CRC[1]);
putc(CRC[0]);
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -