⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 beicheng2s.c

📁 基于89c2051开发的ptr8000一对多无线通信程序.
💻 C
字号:
#include <reg51.h>
#include <absacc.h> 
#include <stdio.h>
#define RBUFFLEN 7
#define SBUFFLEN 7
unsigned char TLV=0;
unsigned char THV=0;
unsigned short SECTICKS=18; //65536/(65536-(THV*256+TLV))*18;
unsigned short HALFSECTICKS=9;
unsigned short adbuff[8];
unsigned char rbuff[RBUFFLEN],sbuff[SBUFFLEN];
unsigned char rbuffp=0,sbuffp=0;
unsigned char count=0,chno=0,lastchno;
unsigned char ticks=0;ticks1=0,ticks2=0,ticksl2=0,ticksh2=0;
unsigned char in;
unsigned short advalue,advl,advh;
bit triggle=0,sendbz=0;
void delay()
{
 unsigned short i,j;
 for(i=0;i<30;i++) j=i;
}
void e0int() interrupt 0
{
 //P1=P1 ^ 0x80; // Feed watchdog.
 //advh=XBYTE[0x4002];
 //advl=XBYTE[0x4003];
 //advalue=(advh<<4)+(advl>>4);
 //adbuff[chno]=(adbuff[chno]+advalue)>>1; //advalue;
 ticks1++;
 //XBYTE[0x4000]=0; //Start AD.
 //lastchno=chno;
 //if(++chno == 8) chno=0;
 //P1=0xf8+chno; //Change channl.}
}
void e1int() interrupt 2
{
 ticks2++;
}
void t0int() interrupt 1
{
 //unsigned char i;
 count++;
 //XBYTE[0x4000]=0; //Start AD.
 if(count == HALFSECTICKS)
 {
  //sbuff[17]=XBYTE[0x2103]; //Read PC.
  //for(i=0;i<22;i++) putchar(sbuff[i]);
  triggle=1;
 }
 if(count == SECTICKS)
 {
  count=0;
  ticks=ticks1;
  ticks1=ticks2=0;
  triggle=1;
 }
}
void comint() interrupt 4
{
 if(RI)
 {
  RI=0;
  rbuff[rbuffp]=SBUF;
  if((rbuff[rbuffp] == 'E') && (rbuff[(rbuffp+RBUFFLEN-4)%RBUFFLEN] == 'S'))
  {
   switch (rbuff[(rbuffp+RBUFFLEN-3)%RBUFFLEN])
   {
    case 'O':
	XBYTE[0x2102]=rbuff[(rbuffp+RBUFFLEN-2)%RBUFFLEN]; //Set PB.
	break;
    case 'D':
	XBYTE[0x6000]=rbuff[(rbuffp+RBUFFLEN-2)%RBUFFLEN]; //Set DA.
	break;
	default:break;
   }
  }
  rbuffp++;
  if(rbuffp == RBUFFLEN) rbuffp=0;
 }
 /*
 if(TI)
 {
  TI=0;
  if(sendbz) SBUF=sbuff[sbuffp];
  if(++sbuffp==SBUFFLEN)
  {
   sbuffp=0;
   sendbz=0;
  }
 }
 */
}
void main (void)
{
 unsigned char  i;
 sbuff[0]=0xd7;
 sbuff[1]=0x06;
 sbuff[2]='S';
 sbuff[5]=0x00;
 sbuff[6]='E';
 XBYTE[0x6000]=0; //Set DA=0V.
 XBYTE[0x2104]=0x80;
 XBYTE[0x2105]=0x40;
 XBYTE[0x2100]=0xc0; //pa,pb,pc in.//0xc3; //Control byte set,pa,pb out,pc in
 SCON  = 0x50;		        /* SCON: mode 1, 8-bit UART, enable rcvr      */
 TMOD |= 0x21;               /* TMOD: timer 1, mode 2, 8-bit reload        */
 TH1   = 0xfd; //9600bps 0xe8; //1200bps,0xfd;               //9600bps for 11.0592M /* TH1:  reload value for 1200 baud @ 16MHz   */
 TR1   = 1;                  /* TR1:  timer 1 run                          */
 IT1   = 1;
 IT0   = 1;
 TI    = 1;                  /* TI:   set TI to send first char of UART    */
 TR0   = 1;
 IE    = 0x87;
 P1=0xf8;   //Select chno=0;
 for(i=0;i<8;i++) adbuff[i]=0;
 XBYTE[0x4000]=0; //Start AD.
 while (1)
 {
  delay();
  //adbuff[chno]=(adbuff[chno]>>1)+(adbuff[chno]>>2)+(advalue>>2); //ReadAD.
  //adbuff[lastchno]=(adbuff[lastchno]+(adbuff[lastchno]<<1)+advalue)>>2; //ReadAD.
  //sbuff[lastchno*2+1]=(unsigned char)(adbuff[lastchno]>>8);
  //sbuff[lastchno*2+2]=(unsigned char)(adbuff[lastchno] & 0x00ff);
  if(triggle)
  {
   triggle=0;
   in=XBYTE[0x2101]; //Read PA port.
   sbuff[3]=in;
   in=XBYTE[0x2102]; //Read PB port.
   sbuff[4]=in;
   for(i=0;i<RBUFFLEN;i++) putchar(sbuff[i]);
   //printf("AD=");
   //for(i=0;i<8;i++)
   //printf("%03X,",adbuff[i]);
   //%03X,%03X,%03X,%03X,%03X,%03X,%03X,%03X,IO=%02BX,END\n",adbuff[0],adbuff[1],adbuff[2],adbuff[3],adbuff[4],adbuff[5],adbuff[6],adbuff[7],in);
   //printf("IO=%02BX,",ticks); //in);
   //printf("END\n");
   //sbuffp=0;
   //sendbz=1;
   //TI=1;
  }
 }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -