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

📄 l7461.c

📁 lC7461解码程序。单片机用的PIC16F877。
💻 C
字号:
//***************RB0****************7461————————LT0038接收程序**************PIC16F877.4M晶振****************/

#include<pic.h>
#include<stdio.h>
#define uchar unsigned char
uchar key_inte;
/*********************************************************
7+(3*(Y-1)+7)*(X-1)
如果再加上函数调用的call指令、页面设定、传递参数花掉的7个指令。
则是:14+(3*(Y-1)+7)*(X-1)。
**********************************************************/
void delayus(char x,char y)
{
       char z;
          do{
                  z=y;
               do{;}while(--z);
             }while(--x);
}

void delayms(uchar x,uchar y)		//延时ms级的程序,延时时间为:(3*y+4)*x+10=?
{
  uchar z;
 do{
   z=y;
//   do{;}while(--z);
    while(--z);		//此句与上一句等效!
   }while(--x);
 asm("nop");
}



uchar dm,i,j,k;
uchar  key_data[4];//定义4个数组,用来存储代码
void ds_889us(void)  //860us
{
 delayus(18,14);
}
void ds_1ms(void)
{
 delayus(19,16);
}
void ds4_73ms(void)    //4.78ms
{
 delayus(39,39);
}
void ds2s(void)
{
unsigned char i,j,k;
 for(i=200;i>0;i--)  
  for(j=200;j>0;j--)
     for(k=10;k>0;k--) ;
}

void main()
{

INTCON=0X00;
//PIE1=0X00;
//PIE2=0X00;

INTE=1;
INTF=0;
TRISD=0X00;
TRISB0=1;
GIE=1;
INTEDG=0;
PORTD=0X00;
dm=0;//中问读数的变量


while(1){  PORTD=key_inte;  }
}


void interrupt RB0int()
{  
   uchar dm,i,j,k,flag_inte,key_b[2];

   if(INTF==1)
   { 
      INTF=0;
      flag_inte=0;
      INTE=0;
      dm=0; 
      for(k=0;k<9;k++)
        {
          ds_889us();
       if (RB0==1)flag_inte=1;
        }
      if(flag_inte==0)
        {  
          while(RB0==0);
          ds4_73ms();
          for(i=0;i<26;i++)
            {
               while(RB0==0);
               ds_889us();
               if(RB0==1)
                  {
                     ds_1ms();
                  }
                      
             }
               
           for(i=0;i<2;i++)
             {
                for(j=1;j<=8;j++)
                  {
                    while(RB0==0);
                    ds_889us();
                         if(RB0==1)
                        {
                          ds_1ms();
                          dm=dm|0x80;
                          if(j<8) {dm=dm>>1;dm=dm&0x7f;}
                         }
                       else  if (j<8)
                       {dm=dm>>1;dm=dm&0x7f;}
                   }
                   key_b[i]=dm;
                   dm=0;
                }
            key_b[1]=key_b[1]^0xff;
            if(key_b[0]==key_b[1])
            { key_inte=key_b[0];}
             
           
             }
             INTE=1;
 
   }
}

⌨️ 快捷键说明

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