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

📄 per.c

📁 嵌入式键盘
💻 C
字号:
#include <at89s52.h>
#include <stdio.h>
#include <intrins.h>
#include<per.h>
extern unsigned char MSA[3][4];
/*
void DelayTime(uchar T)
{
  uchar i;
  for(i=T;i>0;i--);
}*/
void WDT(void)
{
  WDT_CONTR=0x3C;
}
void Project_Int(void)
{
  TMOD=0X21;
//  SCON=0Xf0;//串口工作在方式三,SM2=1,REN=1,处于接收状态
  PCON=0X80;
  TL0=T0_L; 
  TH0=T0_H;
//  TL1=T1_L;//
 // TH1=T1_H;
  IP=0x10;//Uart has the highest interrupt priority
  TR0=1;
//  TR1=1;
  ET0=1;
//  ES=1;
  WDT();
  EA=1;
}
void SendBit(bit b)
{
  uchar i;
  Dat_SP2=b;
  for(i=9;i>0;i--);//20us
  Clk_SP2=0;
  for(i=18;i>0;i--);//40us
  Clk_SP2=1;
  for(i=9;i>0;i--);//20us
}
//================
//if send success,return 0;if inhibit by host,return 0xfe;if interrupt by host,return 0xff;
//================
/*
uchar SendByte(uchar dat)
{
  uchar temp,i,sum;
  bit s;
  sum=0;
  temp=dat;
  if(Clk_SP2)
    {
      for(i=23;i>0;i--);//50us
      if(Clk_SP2)
        {
          if(Dat_SP2)
            {
              for(i=9;i>0;i--);//20us
              SendBit(0);//start bit
              for(i=0;i<8;i++)
                {
                  s=temp&0x01;
                  sum+=(uchar)s;
                  temp>>=1;
                  SendBit(s);//8 data bit
                }
              sum+=1;
              s=sum&0x01;
              SendBit(s);//parity bit
              SendBit(1);//stop bit
              for(i=14;i>0;i--);//30us
              return 0;//send success
            }
          else
              return 0xff;//send lose
        }
      else
          return 0xff;//send lose
    }
  else
      return 0xff;//send lose
}*/

uchar SendByte(uchar dat)
{
  uchar temp,i,sum;
  bit s;
  sum=0;
  temp=dat;
  Clk_SP2 = 1;
  Dat_SP2 = 1;
  if(Clk_SP2)
    {
      for(i=23;i>0;i--);//50us
      if(Clk_SP2)
        {
          if(Dat_SP2)
            {
              for(i=9;i>0;i--);//20us
              SendBit(0);//start bit
              if(!Clk_SP2)
                 return 0xfe;
              for(i=0;i<8;i++)
                {
                  s=temp&0x01;
                  sum+=(uchar)s;
                  temp>>=1;
                  SendBit(s);//8 data bit
                  if(!Clk_SP2)
                     return 0xfe;
                }
              sum+=1;
              s=sum&0x01;
              SendBit(s);//parity bit
              if(!Clk_SP2)
                 return 0xfe;
              SendBit(1);//stop bit
              for(i=14;i>0;i--);//30us
              return 0;//send success
            }
          else
              return 0xff;//send lose
        }
      else
          return 0xff;//send lose
    }
  else
      return 0xff;//send lose
}
/*
uchar SendCode(uchar *px)
{
  uchar sendnumtemp;
  uchar *p1;
  p1=px;
  while((*p1)!=0)
    {
      if(!SendByte(*p1))
       {
         p1++;
         sendnumtemp++;
       }
      else
         return sendnumtemp;
    }
  return sendnumtemp;
}

void SendMakeCode(uchar num,uchar *p)
{
  uchar i;
  bit  b;
  for(i=num;i>0;i--)
    {
      b=SendByte(*p);
      if(b)
        p++;
      else
        i++;
    } 
}
void SendbreakCode(uchar num,uchar *p)
{
  uchar i;
  bit  b;
  do
     b=SendByte(0xf0);
  while(!b);
  for(i=num;i>0;i--)
    {
      b=SendByte(*p);
      if(b)
        p++;
      else
        i++;
    } 

}
*/

⌨️ 快捷键说明

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