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

📄 wang(c).c

📁 串口数据采集
💻 C
字号:
#include  <at89x51.h>
void delay0()   	//精确延时898微妙
{int i,j;
for(i=0;i<9;i++)
 for(j=0;j<11;j++)
 {;}
 }
void delay1()   	//精确延时4822微妙
{int i,j;
for(i=0;i<45;i++)
 for(j=0;j<12;j++)
 {;}
 }
void delay2()   	//精确延时970微妙
{int i,j;
for(i=0;i<9;i++)
 for(j=0;j<12;j++)
 {;}
 }
  void interrupt0() interrupt 0 using 2

{ int i,j;bit flag;unsigned char data1=0x00,data2=0x00;//存放数据码
  unsigned int code1=0x00,code2=0x00;					//存放系统码
EA=0 ;		 	//暂时关闭CPU的所有中断请求
for(i=0;i<9;i++)
{delay0();		//;调用882微秒延时子程序
if(P3_2==1) 	//;延时882微秒后判断P3.2脚是否出现高电平如果有就退出解码程序
goto  exit;}
//重复10次,目的是检测在8820微秒内如果出现高电平就退出解码程序 
//;以上完成对遥控信号的9000微秒的初始低电平信号的识别。
while(!P3_2);//毫秒低电平引导脉冲
delay1();//4.74毫秒避开4.5毫秒的结果码
for(j=0;j<26;j++)//;忽略前26位系统识别码 
{while(!P3_2);//等待地址码第一位的高电平信号
delay0();//高电平开始后用882微秒的时间尺去判断信号此时的高低电平状态
flag=P3_2;//将P3.2引脚此时的电平状态0或1存入C中
if(flag==1)
delay2();//检测到高电平1的话延时1毫秒等待脉冲高电平结束
if(j<=12)
{code1=code1>>1;
if(flag)
code1=code1+0x1000;}
else
{code2=code2>>1;
if(flag)
code2=code2+0x1000;}
}
if((code1!=0x0119)||(code2!=0x1ee6))//识别系统码
goto exit;
for(j=0;j<2;j++)
for(i=0;i<8;i++)
{while(!P3_2);
delay0();
flag=P3_2;
if(flag==1)
delay2();//检测到高电平1的话延时1毫秒等待脉冲高电平结束
if(j==0)
{data1=data1>>1;
if(flag)
data1=data1+0x80;}
else
{data2=data2>>1;
if(flag)
data2=data2+0x80;}
}
if((data1^data2)!=0xff)
goto exit;
P2=data1;//;将按键的键值通过P1口的8个LED显示出来!
P1_0=1;//;蜂鸣器鸣响-嘀嘀嘀-的声音,表示解码成功
delay1();
delay1();
delay1();
P1_0=0;//;蜂鸣器停止
exit:  EA =1;//允许中断
}
void main()
{ EA=1 ;//打开CPU总中断请求
 IT0=1 ;//设定INT0的触发方式为脉冲负边沿触发
 EX0=1 ;//打开INT0中断请求
		// ;以下对单片机的所有引脚进行初始化,全部设置成高电平
 P1=0xfe;
 P2=0xff;
 while(1);
}


⌨️ 快捷键说明

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