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

📄 clpl.c

📁 单片机遥控
💻 C
字号:
#include <REGX51.H>
#define uchar unsigned char
#define uint unsigned int
uchar t0cout,t1cout;
unsigned long fx,res;

sbit rst=P1^0;
sbit sda=P1^1;
sbit scl=P1^2;

delay(uint k)
{
  while(--k);
}

stari2c()
{
  sda=1;
  scl=1;
  delay(1);
  sda=0;
  delay(1);
  scl=0; 
}

endi2c()
{
  sda=0;
  scl=1;
  delay(1);
  sda=1;
  delay(1);

}

sendi2c(uchar c)
{
  uchar i;
  for(i=0;i<8;i++)
  {
    sda=c&0x80;
	c=c<<1;
	scl=1;
	delay(1);
	scl=0;
	sda=0;
	delay(1);
  }
  scl=1;
  delay(1);
  scl=0;
  delay(1);
}

uchar readi2c()
{
  uchar i,c;
  sda=1;
  for(i=0;i<8;i++)
  {
	scl=1;
	c=c<<1;
	if(sda==1)c=c+1;
	delay(1);
	scl=0;
  }
  scl=1;
  delay(1);
  scl=0;
  delay(1);
  return(c);
}

sendic(uchar ma,uchar sa,uchar c)
{
  stari2c();
  sendi2c(ma);
  sendi2c(sa);
  sendi2c(c);
  endi2c();

}

uchar readic(uchar ma,uchar sa)
{
  uchar c;
  stari2c();
  sendi2c(ma);
  sendi2c(sa);
  stari2c();
  sendi2c(ma+1);
  c=readi2c();
  endi2c();
  return(c);

}

main()
{
//  uchar c;
  rst=0;
  delay(10);
  rst=1;
  EA=1;
  TMOD=0x51;
  ET0=1;ET1=0;
  TR0=1;TR1=1;
  TL0=(65536-50000)%256;
  TH0=(65536-50000)/256;  

  while(1)
  {
   // c=readic(0xa2,0x02);	 delay(100);
	//c=c&0x7f;
	res=((14430000/fx)-1000)/2;
	sendic(0x70,0x08,res%10);	 delay(100);
	sendic(0x70,0x07,0x60);	 delay(100);
	sendic(0x70,0x08,res%100/10);	 delay(100);
	sendic(0x70,0x07,0x61);	 delay(100);

	sendic(0x70,0x08,res%1000/100);	 delay(100);
	sendic(0x70,0x07,0x62);	 delay(100);
	sendic(0x70,0x08,res%10000/1000);	 delay(100);
	sendic(0x70,0x07,0x63);	 delay(100);

	sendic(0x70,0x08,res%100000/10000);	 delay(100);
	sendic(0x70,0x07,0x64);	 delay(100);
	sendic(0x70,0x08,res%1000000/100000);	 delay(100);
	sendic(0x70,0x07,0x65);	 delay(100);

	sendic(0x70,0x08,res%10000000/1000000);	 delay(100);
	sendic(0x70,0x07,0x66);	 delay(100);
	sendic(0x70,0x08,res%10000000/10000000);	 delay(100);
	sendic(0x70,0x07,0x67);	 delay(100);
  }  
}
intt0() interrupt 1 using 2
{
  TL0=(65536-50000)%256;
  TH0=(65536-50000)/256;
  t0cout++;	
  if(t0cout>=20)
  {
    fx=t1cout*65536+TH1*256+TL1;
	  TL0=(65536-50000)%256;
  TH0=(65536-50000)/256;
  TL1=0;TH1=0;
	
	
	t0cout=0;
	t1cout=0;
	
  }

}
intt1() interrupt 3 using 3
{
  t1cout++;
}

⌨️ 快捷键说明

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