📄 psp_wrt_receiver.c
字号:
// Master of all
// Thuc hien theo giai thuat Lyapunov
#device PIC16F877 *=16 ADC=10
#include <16f877.h>
#include <math.h>
#include <stdlib.h>
#fuses hs,nowdt,noprotect,put,nolvp,brownout
#use delay(clock=20000000) // 20 MhZ
#use rs232(baud=56000,parity=N,xmit=PIN_C6, rcv=PIN_C7)
#use I2C(master, sda=PIN_C4, scl=PIN_C3,NOFORCE_SW)
#use fast_io(E)
float e2=0,e3=0;
//psp variable
unsigned int frame1[16];
int ip=0;
int16 pspt=0,sampling_T=0;
byte* ptr;
int i;
boolean Rev_OK=0;
boolean the_first=0;
//-----------------------------------------------------------------------------
#INT_PSP
void psp_isr()
{
int rev_byte=0;
while(!psp_input_full()) ; // wait data
if ( (!psp_overflow()) )
{
rev_byte = psp_data;
if (ip==0) {Rev_OK=0;set_timer1(0);}
frame1[ip] = rev_byte;
ip++;
if ((ip==16) && (frame1[0]==252))
{
ip=0; Rev_OK = 1;
the_first=1;
ptr = (byte*) &e2; // Khoi phuc e2
for (i=1;i<=4;i++) {*ptr = frame1[i]; ptr++;}
ptr = (byte*) &e3; // Khoi phuc e3
for (i=12;i<=15;i++) {*ptr = frame1[i]; ptr++;}
pspt=get_timer1();
set_timer1(0);
}
}
}
//-----------------------------------------------------------------------------
#INT_TIMER1
void isr_timer1()
{
set_timer1(0);
dem=dem+1;
}
//-----------------------------------------------------------------------------
void main()
{
set_tris_e(0xff); // Port E Input
set_tris_b(0x00);
setup_adc_ports( NO_ANALOGS);
setup_psp(PSP_ENABLED);
enable_interrupts(INT_PSP);
enable_interrupts(INT_TIMER1);
enable_interrupts(GLOBAL);
setup_timer_1(T1_INTERNAL | T1_DIV_BY_8);
set_timer1(0);
while (1)
{ printf("Ok1\r");
while (!REV_OK) ; //neu dang nhan thi cho*`, nhung neu chua nhan hoac nhan roi thi van lam voi goi toa do cu
printf("e3=%1.5f e2=%1.5f\r",e3,e2);
printf("pspt=%lu sampling_tC=%u dem=%d\r",pspt,frame1[11],dem);
printf("f0=%u XX1=%d XX2=%d x1=%d y1=%d x2=%d y2=%d\r",frame1[0],frame1[5],frame1[6],frame1[7],frame1[8],frame1[9],frame1[10]);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -