• 回复
  • 收藏
  • 点赞
  • 分享
  • 发新帖

单片机替代2272解码

  这几天用到很老的固定吗解码,有用到的么 ,为什么我感觉我写的程序好复杂啊 ;

void exint0() interrupt 0       //INT0中断入口
{
static bit flag_start=0;
static u8 temp_pl=0; 
//TR0=0;  //经过测试定时器0使用不自动重装模式之后不用再频繁开关定时器
EX0 = 0; //执行中断里面的程序的时候关闭外部中断防止里面数据没有处理完外部中断就进来
//sum=ace*65536+TH0*256+TL0;
sum=TH0*256+TL0;
TH0=0;
TL0=0;
ace=0;
//TR0=1;

test=~test;
	if((ap==1)&&(sum>14000)&&(sum<16000))
	{
		temp2=sum;
		flag_start=1;
		ap=2;
		cp=0;
		pl=temp_pl;
		temp_pl=0;
	}
	if((ap==0)&&(sum>14000)&&(sum<16000))
	{
	    temp1=sum;
	   	ap=1;
			temp_pl=0;
	}
	temp_pl++;
	if(temp_pl==60)
	{
		temp_pl=0;
		temp1=temp2=0;
		ap=0;
	}
if((flag_start==1)&&(cp==48)){ ccap[47]=sum/((temp2+temp1)>>8);cp=0;flag_start=0;ap=0;test1=~test1;}
if((flag_start==1)&&(cp==47)){ ccap[46]=sum/((temp2+temp1)>>8);cp=48;test1=~test1;}	
if((flag_start==1)&&(cp==46)){ ccap[45]=sum/((temp2+temp1)>>8);cp=47;test1=~test1;}	
if((flag_start==1)&&(cp==45)){ ccap[44]=sum/((temp2+temp1)>>8);cp=46;test1=~test1;}	
if((flag_start==1)&&(cp==44)){ ccap[43]=sum/((temp2+temp1)>>8);cp=45;test1=~test1;}	
if((flag_start==1)&&(cp==43)){ ccap[42]=sum/((temp2+temp1)>>8);cp=44;test1=~test1;}	

大概思路就是,找到两次间隔小于两个周期的同步脉冲,然后就开始逐个解码收到的;然后在处理

全部回复(0)
正序查看
倒序查看
现在还没有回复呢,说说你的想法