a.c

来自「以C语言和Java语言、嵌入式开发、算法实现为主」· C语言 代码 · 共 92 行

C
92
字号
#include "reg51.h"
//#include <REGX51.H>
#define uchar unsigned char
sbit irpot=P3^2;
sbit P2_7 =P2^7;
sbit P2_6 =P2^6;
sbit P2_5 =P2^5;
sbit P2_4 =P2^4;
sbit P2_3 =P2^3;
sbit P2_2 =P2^2;

sbit P2_1 =P2^1;
sbit P2_0 =P2^0;
uchar dat[4]={0,0,0,0};

void main(void)
{
irpot=1;
TMOD=0x01;
EA=1;
EX0=1;
P2=0xff;
P2_7=0;
while(1);
}

void int0(void) interrupt 0
{ uchar i,j;
  EX0=0;
  i=10;
  while(--i)
  {
	TH0=0xfc;
    TL0=0xe7;
	TR0=1;
	while(!TF0); //延时860毫秒
	TF0=0;
	TR0=0;
    if(irpot) {EX0=1; return ;}
  }

 while(!irpot); 

//----------------------------------------
   	TH0=0xf6;
    TL0=0xff;
	TR0=1;
	while(!TF0);
	TF0=0;
	TR0=0;	  //延时2500毫秒
	if(!irpot){EX0=1;return;}
	while(irpot);
//	P2_6 =~P2_6;

//--------------------------------------------------------
 for(i=0;i<4;i++)
 {
  for(j=0;j<8;j++)
   {
	 while(!irpot);
   	 dat[i]>>=1;

	 TH0=0xfc;
     TL0=0xe7;
	 TR0=1;
	  while(!TF0);
	  TR0=0;
	  TF0=0; //延时860us	
			
	  if(irpot) 
	   {
	     dat[i]|=0x80;
	     while(irpot);
	    }
	}
  }	
  
  switch(dat[2])
	{
	case 0x18: P2_0=~P2_0;break;
	case 0x19: P2_1=~P2_1;break;
	case 0x1a: P2_2=~P2_2;break;
	case 0x1b: P2_3=~P2_3;break;
	case 0x1c: P2_4=~P2_4;break;
	case 0x1d: P2_5=~P2_5;break;
	default:dat[2]=0;break;
	}	
   EX0=1;
   return;
}

⌨️ 快捷键说明

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