magcard.c

来自「不少单片机C代码」· C语言 代码 · 共 51 行

C
51
字号
#include <reg51.h>
#define uchar unsigned char
sbit  p1_4=P1^4;
sbit  p1_5=P1^5;
sbit  int0=P3^2;
bit  flag=0;
uchar idata cardbuf[10];
uchar idata disbuf[10];
void disp(uchar idata *p);
void dlms(void);
uchar ascc(uchar cb); 

void main(void)
{ uchar i=0;
  uchar hdline[8]={"welcome"};
  TMOD=0x01;
  EX0=1;EA=1;
  disp(hdline);
  while(flag!=1);
  while(cardbuf[i]!=0x0f)
  { disbuf[i]=ascc(cardbuf[i]);
   i++;
  }
  disbuf[i]=0x00;
  disp(disbuf);
}

void cardint(void) interrupt 0 using 1
{ uchar i,state=0;
  uchar j,d,bitc;
  for(j=0;j<10;j++) {cardbuf[j]=0;}
init:d=bitc=0;
  do
  { while(p1_5!=0);
    while(p1_5!=1);
    dlms(); 
    if(p1_4==1) {
      if(state!=1) {state=1;bitc=0;d=0;}
      d|=0x10;
    }
    bitc++;
    if(bitc>=5)
     { if(state!=1) goto init;
       cardbuf[i]=d&0x0f;i++;
       d=0; bitc=0;
       if (d==0x0f) flag=1;
     }
    else d=d>>1;
  } while (int0==0);
}

⌨️ 快捷键说明

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