亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? key.c

?? 64位鍵盤掃描程序
?? C
字號:
#include <reg51.h>
#include <absacc.h>
#include <intrins.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>

#define uchar unsigned char
#define uint  unsigned int
#define ulong unsigned long

#define O   'O'
#define K   'K'
#define E   'E'
#define R   'R'
//--------------------------------------------------------
#define Wait_ti while(TI==0);TI=0              /*等待一幀發送完畢*/ 
#define Wait_ri while(RI==0);RI=0              /*等待一幀接收完畢*/
/**************************************
 -------------芯片管腳定義--------------
 ***************************************/
sbit   PowerLed=P1^4;
sbit   SHIFTLED=P1^5;
sbit   TestLED=P1^6;
sbit   Beep=P1^7;
sbit   KeyIn=P3^3;
sbit   KeyOut=P3^4;   //0:有鍵按下
//=====================================
#define OK 0
#define ER 1
//=====================================
/**********************************************
  -------------與主機通信命令名柄定義----------
  **********************************************/
#define GetKey          0x90  //有鍵直接返回鍵值
#define OpenBeep        0X91  //打開蜂鳴器,嘟... 嘟....,無返回值 
#define TestKey         0x94  //檢測主板與鍵盤板IC的通信,回送主板Finish命令句柄
#define OpenMoneyBox    0x9a  //開錢箱命令句柄
#define CloseCat        0x9c  //關機
#define English         0x9d  //英文字母命令
#define Number          0x9e  //數字命令
//=====================================
bit err_rxd_flag;  //串口接收數據錯誤
bit rxd_flag;
uchar uc0;
uchar rs232buf[30];  //接收數據緩存
//=====================================
void rxd_order_232(); /*接收命令、數據*/
//=====================================
void ssio0(void) interrupt 4 using 1   //*串行中斷0接收程序*
{
    ES=0;                               //*關串行中斷*
    rxd_order_232();
    rxd_flag=1;
    ES=1;
}
//=====================================
void delayms(uint ti)                    //*延時程序~0.1ms,*
{              //延時時間=[ti(100)+1]*1.08us~=ti*0.108ms
  uint i;
  uchar t;
  for (i=0;i<ti;i++)
  {   
      t=99;
				  do{
			     t--;
				 }while(t!=0);
  } 
}
/*******************************************
 ---------- 初始化串行口來多機通信 ---------
 *******************************************/
void InitSBUF(void)     
{
		   TMOD=0x21;           /* T/C1定義為方式2 */
		   TL1=0xfd;            /* 9600時TH1,TL1=0xfd,1200時TH1,TL1=0XE8 */
		   TH1=0xfd; 
		   PCON=0x00;
		   SCON=0x50;           /* 串行口為方式1,SM2=1,TB8=0,RB8=0 */
		  /* SM0=0;*/
		   TR1=1;   ES=0;  /*ET0=1; ES=1; TR0=1;*/
		  /* SM2=1;   PS=1;*/
		   RI=0;    TI=0; EA=1;
}

//===================================
void sbuwork(uchar d)     /*發送一數據:c*/
{  
   uchar c;
   SBUF=d;             /*發送數據*/
   Wait_ti;             /*等待一幀發送完畢*/
   for(c=0;c<=0x05;c++);
}
//===================================================
/*void buzzer(uchar num,uchar on,uchar off)//蜂鳴器驅動
{  //unm:次數;on:鳴時間;off:停時間
   uchar n;
   if((num==0)|(on==0)){return;}
   for(n=0;n<(num-1);n++)
   {
      Beep=0;
      delayms(on);
      Beep=1;
      delayms(off);
   }
   Beep=0;
   delayms(on);
   Beep=1;
}*/
//=================================================
//
//          key 鍵盤操作程序
//
//==================================================
uchar key_press() //按鍵掃描程序
{ 
   uchar key_num;
   uchar n;
   uchar key_x;
   uchar keybuf[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
   key_num=0xff;
   if(P0==0xff){goto AD;}   //沒鍵按下退出
   delayms(20);
   if(P0==0xff){goto AD;}   //沒鍵按下
   KeyOut=1;                //消除按鍵標志
   Beep=0;
   for(n=0;n<8;n++)
   {
       P2=keybuf[n];
       if(P0<0xff){key_x=P0;key_num=n;goto AA;}
   }
   key_num=0xff;goto AD;//退出
AA:
   for(n=0;n<8;n++)
   {
       if(key_x==keybuf[n])
       {
            key_num=key_num*8;
            key_num=key_num+n;
            while(P0<0xff)//等待抬手
            {
               delayms(20);
            }
           // buzzer(1,120,2);
            goto AD;
       }
   }
AD:
   P0=0xff;
   P2=0x00;
   Beep=1;
   return key_num;
}
/********************************************************/ 
void rxd_by_232()     /*從232接收一個數據,并保存到uc0變量中*/
{ 
	   uchar counter; 
	   counter=0xfe;
	   do{
		     if(counter==0x00)
		     {RI=0;err_rxd_flag=1;return;}
		     else{counter--;}
	   }while(RI==0);
	   RI=0;   
	   uc0=SBUF;
	   err_rxd_flag=0;
}
//===============================
//--------------------------------------------------------------
/*命令格式:0x1b+0x10+命令句柄+數據包序號+命令長度+(命令參數)+CS*/
void rxd_order_232() /*接收命令、數據*/
{ 
		  uchar k,n;
		  uchar length;
		  RI=0;       
		  rs232buf[0]=SBUF;       /*接收包頭:0x1b*/ 
		  rxd_by_232();           /*接收包頭:0x10*/
		  if(err_rxd_flag==1){goto END;}
		  else{rs232buf[1]=uc0;} 
		  rxd_by_232();           /*接收命令句柄*/ 
		  if(err_rxd_flag==1){goto END;} 
		  else{rs232buf[2]=uc0;} 
		  rxd_by_232();           /*接收數據包序號*/ 
		  if(err_rxd_flag==1){goto END;} 
		  else{rs232buf[3]=uc0;}                
		  rxd_by_232();           /*接收數據長度*/  
		  if(err_rxd_flag==1){goto END;} 
		  else{rs232buf[4]=uc0;}   
		  length=uc0;          
		  if(length<5){n=length=5;}//goto AA;
		  else{_nop_();}  
		  for(k=5;k<(length+2);k++) 
		  {
		     rxd_by_232();       /*接收數據*/
		     if(err_rxd_flag==1){goto END;}                        
		     else{rs232buf[k]=uc0; }
		  }
END:
    TestLED=~TestLED;
}
//=============================================================
/* CRC-16的C程序. *ptr指向發送數據塊的首地址, len是數據塊以字節為單位的長度.*/
/* 按位計算CRC雖然代碼簡單,所占用的內存比較少,
   但其最大的缺點就是一位一位地計算會占用很多的處理器處理時間,*/
uint cal_crc(uchar len,uchar *ptr) //crc16計算
{
      uchar i;
      uint crc=0;
      while(len--!=0) 
      {
          for(i=0x80; i!=0; i/=2)
          {
             if((crc&0x8000)!=0) {crc*=2; crc^=0x8005;}     //* 余式CRC乘以2再求CRC *
             else{crc*=2;}
             if((*ptr&i)!=0){crc^=0x8005;}                   //* 再加上本位的CRC *
          }
           ptr++;
     }
     return(crc);
}
//===========================================
void return_OK(uchar d)
{
      uchar n;
      uint crc;
      rs232buf[0]=0x4f;
      rs232buf[1]=0x4b;          //OK
      rs232buf[2]=0x00;       //包序號 
      rs232buf[3]=0x05;       //命令長度
      rs232buf[4]=d;          //命令長度
      crc=cal_crc(5,rs232buf);//crc_16校驗
      rs232buf[5]=crc>>8;
      rs232buf[6]=crc;
      for(n=0;n<7;n++){sbuwork(rs232buf[n]);}//發送數據
}
//===========================================
void main(void)
{
   uchar n;
   uchar handle;
   uchar key_num;
   uchar key_d;
   uchar KeyNum[20];
   ulong coun;
   InitSBUF();
   P0=0xff;
   P2=0x00;
   for(n=0;n<20;n++)
   {KeyNum[n]=0xff;}
   key_num=0xff;
   ES=1;             //開串行中斷
   coun=0;
   rxd_flag=0;
   while(1)
   {
      SHIFTLED=KeyOut;
     // if(coun==0x0ff){coun=0;TestLED=~TestLED;}
      coun++;
      key_d=key_press();
      if(key_d<0xff)
      {key_num=key_d;} 
      /*if(key_d<0xff)      //有鍵值
      {
          for(n=0;n<16;n++)
          {
              if(KeyNum[n]==0xff)
              {
                  KeyNum[n]=key_d;
              }           
          }
      }
      if(KeyNum[15]<0xff){KeyNum[15]=0xff;}
      if((KeyNum[0]<0xff)&&(key_num==0xff))
      {
          key_num=KeyNum[0];
          for(n=0;n<15;n++)
          {
             KeyNum[n]=KeyNum[n+1];
          }
      }*/
      if(key_num==0xff){KeyOut=1;}
      else{KeyOut=0;}  //消除按鍵標志
      if(rxd_flag==1)
      {
          rxd_flag=0;
          ES=0;
          return_OK(key_num);

          handle=rs232buf[2];//命今字
          //for(n=0;n<12;n++){sbuwork(rs232buf[n]);}//發送數據
 /*         //return_OK(key_num);
          switch(handle)
          {
              case GetKey:        //返回鍵值
                 {  
                     return_OK(key_num);
                     break;
                 }
              case OpenBeep:     //開蜂鳴器
                 { 
                     buzzer(rs232buf[5],120,120);
                     return_OK(key_num);
                     break;
                 }
              case TestKey:
                 {
                     return_OK(key_num);
                     break;
                 }
              case OpenMoneyBox:
                 {
                     return_OK(key_num);
                     break;
                 }
              case CloseCat:
                 { 
                     return_OK(key_num);
                     break;
                 }
              case English:
                 {  
                     return_OK(key_num);
                     break;
                 }
              case Number:
                 {  
                     return_OK(key_num);
                     break;
                 } 
              default:{break;}
           }
           key_num=0xff;
           ES=1;
           for(n=0;n<30;n++){rs232buf[n]=0;}//發送數據*/
          key_num=0xff;
          ES=1;
       }
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成av人片观看| 麻豆精品在线观看| 亚洲一区中文日韩| 五月综合激情婷婷六月色窝| 日韩不卡一二三区| 高清国产一区二区| 欧美久久一二三四区| 国产欧美一区二区三区网站| 亚洲五月六月丁香激情| 国产一区二区不卡老阿姨| 91色综合久久久久婷婷| 欧美mv日韩mv亚洲| 亚洲人成精品久久久久| 美女视频黄免费的久久| 99久久精品免费精品国产| 9191成人精品久久| 1024国产精品| 国产精品白丝jk黑袜喷水| 色综合中文字幕国产| 91.com视频| 亚洲三级免费观看| 国产精品中文欧美| 欧美美女喷水视频| 亚洲欧洲综合另类在线| 国产真实乱偷精品视频免| 欧美日韩亚洲综合一区| 国产精品久久久久久久裸模| 另类调教123区| 欧美日韩精品一区二区三区四区 | 97精品国产97久久久久久久久久久久| 欧美日韩电影在线| 日韩理论片中文av| 国产精品1区2区| 日韩欧美一级精品久久| 亚洲成人一区二区在线观看| 91日韩一区二区三区| 国产人成亚洲第一网站在线播放| 日韩精品成人一区二区三区| 日本高清免费不卡视频| 国产精品理论在线观看| 国产麻豆视频一区二区| 欧美一区二区三区在线观看视频 | 亚洲高清免费在线| 色悠悠久久综合| 亚洲欧洲av在线| av福利精品导航| **欧美大码日韩| av在线不卡电影| 亚洲丝袜另类动漫二区| 99久久精品一区二区| 最新国产成人在线观看| 成人精品视频一区二区三区| 国产拍欧美日韩视频二区 | 一区二区三区国产精品| 色女孩综合影院| 一级特黄大欧美久久久| 色婷婷综合久久久| 亚洲自拍偷拍麻豆| 欧美日韩高清一区二区三区| 亚洲国产中文字幕| 欧美日韩成人高清| 日本不卡免费在线视频| 日韩精品一区二区三区在线 | 亚洲日本成人在线观看| 色香蕉久久蜜桃| 午夜精品福利一区二区蜜股av| 欧美日韩一级视频| 免费黄网站欧美| 久久精品人人做人人综合 | 91啦中文在线观看| 五月天国产精品| 欧美日本精品一区二区三区| 日韩电影一区二区三区| 欧美精品一区二区在线播放| 成人综合在线观看| 一区二区三区在线不卡| 91精品欧美福利在线观看| 精品一区二区三区免费毛片爱 | 日本人妖一区二区| 日韩欧美视频一区| 麻豆成人免费电影| 国产精品热久久久久夜色精品三区 | 国产精品伦一区| 99精品视频在线观看免费| 亚洲尤物视频在线| 日韩三级视频中文字幕| 成人中文字幕合集| 亚洲国产裸拍裸体视频在线观看乱了 | 91久久人澡人人添人人爽欧美| 国产欧美精品在线观看| 成人国产一区二区三区精品| 亚洲成人动漫在线观看| 精品久久久网站| 99国内精品久久| 玖玖九九国产精品| 中文字幕在线观看一区| 欧美一区二区三区小说| 97超碰欧美中文字幕| 韩国中文字幕2020精品| 一区二区三区在线视频观看58| 久久综合九色综合97婷婷女人 | 国产亚洲欧美中文| 欧美色精品在线视频| 男女激情视频一区| 不卡视频一二三| 在线影视一区二区三区| 欧美在线一区二区三区| 91麻豆产精品久久久久久| 一区二区三区久久| 欧美激情中文字幕一区二区| 精品国产一区久久| 欧美视频在线一区| 粉嫩在线一区二区三区视频| 国产精品影视网| 香蕉加勒比综合久久| 亚洲h动漫在线| 亚洲三级视频在线观看| 欧美videofree性高清杂交| 欧美一区二区三区免费大片 | 精品电影一区二区| 日本国产一区二区| 日本丰满少妇一区二区三区| 99re热视频这里只精品| 福利一区在线观看| 国产在线视视频有精品| 奇米一区二区三区| 日韩av在线播放中文字幕| 亚洲精品成人天堂一二三| 国产精品久久久久久久久免费桃花| 久久中文娱乐网| wwwwww.欧美系列| 日韩欧美不卡在线观看视频| 欧美丰满少妇xxxbbb| 欧美在线小视频| 欧美在线制服丝袜| 欧美日韩高清一区二区三区| 欧美军同video69gay| 欧美日韩五月天| 欧美私人免费视频| 欧美在线观看禁18| 国产精品一区在线观看乱码 | 日产欧产美韩系列久久99| 亚洲h动漫在线| 免费高清在线一区| 激情国产一区二区| 国产精品一二三| av电影在线不卡| 色婷婷激情一区二区三区| 色天使色偷偷av一区二区| 在线看日韩精品电影| 欧美日韩一区二区三区不卡| 日韩亚洲欧美一区| 久久天堂av综合合色蜜桃网| 国产欧美精品在线观看| 国产精品免费视频观看| 樱桃视频在线观看一区| 婷婷夜色潮精品综合在线| 蜜桃av噜噜一区二区三区小说| 国产精品一区在线观看乱码| 韩国成人在线视频| 秋霞av亚洲一区二区三| 国产伦精品一区二区三区免费迷| 国产乱码精品1区2区3区| 国产99久久久国产精品潘金网站| 91在线播放网址| 制服视频三区第一页精品| 久久女同互慰一区二区三区| 亚洲视频在线一区| 蜜臀精品一区二区三区在线观看| 国产精品 欧美精品| 一本到一区二区三区| 欧美一区二区三区在线电影| 日本一区二区成人在线| 亚洲第四色夜色| 粉嫩一区二区三区性色av| 欧美日韩在线电影| 久久久亚洲国产美女国产盗摄 | 亚洲天堂网中文字| 日本怡春院一区二区| 国产99久久久久久免费看农村| 美女视频一区二区三区| 91在线免费看| 国产女人水真多18毛片18精品视频 | 精品国产a毛片| 日本亚洲免费观看| 欧美日韩视频在线第一区| 亚洲欧美欧美一区二区三区| gogo大胆日本视频一区| 久久久久久久电影| 久久er99精品| 日韩欧美黄色影院| 蜜桃免费网站一区二区三区| 3atv一区二区三区| 秋霞午夜av一区二区三区| 91精品在线一区二区| 天堂成人国产精品一区| 欧美男同性恋视频网站| 天天综合天天做天天综合| 欧美日本在线观看| 亚洲动漫第一页|