久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

51學(xué)習(xí)板4*4鍵盤的c51與匯編程序

作者:huqin   來源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2008年10月19日   【字體:

今天無聊就隨便寫了個(gè)4*4鍵盤的程序來試下單片機(jī)學(xué)習(xí)板!
分C和匯編還有PS仿真!

下面這個(gè)就是ps仿真圖 已經(jīng)通過,朋友們可以直接燒寫到學(xué)習(xí)板上跑一下。

C語言的:
/******************************************************************
** 文件名:51學(xué)習(xí)板4*4鍵盤  
** 創(chuàng)建人: 謝軍洋
** 日 期: 2008/01/07
** 描 述:4*4鍵盤,用P1口(p1.0~p1.3列p1.4~p1.7行)。
** 版 本: 1.1
**------------------------------------------------------------------
**  CPU:MCS-51
** 語言:C
** Fosc=12M
********************************************************************/
#include< at89x51.h>
#define uint  unsigned int
#define uchar unsigned char
#define ulong unsigned long
void delay10ms();  //按鍵去抖。
uchar table[]={0x3f,0x06,0x5b,0x4f,
               0x66,0x6d,0x7d,0x07,
      0x7f,0x6f,0x77,0x7c,
      0x39,0x5e,0x79,0x71,0xff};
void main()
{
uchar key;
while(1)
{
P1=0xff;
P1_4=0;
key=P1&0x0f;
if(key!=0x0f)
  {
  delay10ms();
  key=P1&0x0f;
  if(key!=0x0f)
    {
switch(key)
  {
  case 0x0e:key=0;break;
  case 0x0d:key=1;break;
  case 0x0b:key=2;break;
  case 0x07:key=3;break;
  }
     P0=table[key];
     key=key&0x0f;              
     while(key!=0x0f)
     {key=P1;
      key=key&0x0f;
  }              
    }  
  }
P1=0xff;
P1_5=0;
key=P1;
key=key&0x0f;
if(key!=0x0f)
  {
  delay10ms();
  key=P1&0x0f;
  if(key!=0x0f)
    {
switch(key)
   {
   case 0x0e:key=4;break;
   case 0x0d:key=5;break;
   case 0x0b:key=6;break;
   case 0x07:key=7;break;
   }
   P0=table[key];
      key=key&0x0f;              
      while(key!=0x0f)
           {key=P1;
            key=key&0x0f;
        }
}
  }
P1=0xff;
P1_6=0;
key=P1;
key=key&0x0f;
if(key!=0x0f)
  {
  delay10ms();
  key=P1&0x0f;
  if(key!=0x0f)
    {
switch(key)
   {
   case 0x0e:key=8 ;break;
   case 0x0d:key=9 ;break;
   case 0x0b:key=10;break;
   case 0x07:key=11;break;
   }
   P0=table[key];
      key=key&0x0f;              
      while(key!=0x0f)
          {key=P1;
           key=key&0x0f;
       }              
     }
  }
P1=0xff;
P1_7=0;
key=P1;
key=key&0x0f;
if(key!=0x0f)
  {
  delay10ms();
  key=P1&0x0f;
  if(key!=0x0f)
    {
switch(key)
   {
   case 0x0e:key=12;break;
   case 0x0d:key=13;break;
   case 0x0b:key=14;break;
   case 0x07:key=15;break;
   }
   P0=table[key];
      key=key&0x0f;              
      while(key!=0x0f)
           {key=P1;
            key=key&0x0f;
        }              
     }  
  }
}
}
void delay10ms()
{
uchar i,j;
for(i=50;i>0;i--)
   for(j=200;j>0;j--);
}

匯編的:
/******************************************************************
** 文件名:51單片機(jī)學(xué)習(xí)板4*4鍵盤程序
** Copyright (c)單片機(jī)教程網(wǎng)http://m.zg4o1577.cn
** 創(chuàng)建人: 謝軍洋
** 日 期: 2008/01/07
** 描 述:4*4鍵盤,用P1口(p1.0~p1.3列p1.4~p1.7行)。
** 版 本: 1.1
**------------------------------------------------------------------
**  CPU:MCS-51
** 語言:匯編
** Fosc=12M
********************************************************************/
KEY EQU 30H
ORG 0000H
SJMP START
START:MOV P0,#00H
JIXU:MOV P1,#0FFH
   CLR P1.4
   MOV A,P1
   ANL A,#0FH
   XRL A,#0FH
   JZ NOKEY0
   LCALL DELAY10MS
   MOV A,P1
   ANL A,#0FH
   XRL A,#0FH
   JZ NOKEY0
   MOV A,P1
   ANL A,#0FH
   CJNE A,#0EH,NEXT1
   MOV KEY,#0
   LJMP OK
NEXT1:CJNE A,#0DH,NEXT2
      MOV KEY,#1
   LJMP OK
NEXT2:CJNE A,#0BH,NEXT3
      MOV KEY,#2
   LJMP OK
NEXT3:CJNE A,#07H,NOKEY0
   MOV KEY,#3
   LJMP OK
NOKEY0:MOV P1,#0FFH
      CLR P1.5
   MOV A,P1
   ANL A,#0FH
   XRL A,#0FH
   JZ NOKEY1
   LCALL DELAY10MS
   MOV A,P1
   ANL A,#0FH
   XRL A,#0FH
   JZ NOKEY1
   MOV A,P1
   ANL A,#0FH
   CJNE A,#0EH,NEXT5
   MOV KEY,#4
   LJMP OK
NEXT5:CJNE A,#0DH,NEXT6
      MOV KEY,#5
   LJMP OK
NEXT6:CJNE A,#0BH,NEXT7
      MOV KEY,#6
   LJMP OK
NEXT7:CJNE A,#07,NOKEY1
      MOV KEY,#7
   LJMP OK
NOKEY1:MOV P1,#0FFH
      CLR P1.6
   MOV A,P1
   ANL A,#0FH
   XRL A,#0FH
   JZ NOKEY2
   LCALL DELAY10MS
   MOV A,P1
   ANL A,#0FH
   XRL A,#0FH
   JZ NOKEY2
   MOV A,P1
   ANL A,#0FH
   CJNE A,#0EH,NEXT9
   MOV KEY,#8
   SJMP OK
NEXT9:CJNE A,#0DH,NEXT10
      MOV KEY,#9
   SJMP OK
NEXT10:CJNE A,#0BH,NEXT11
       MOV KEY,#10
    SJMP OK
NEXT11:CJNE A,#07,NOKEY2
    MOV KEY,#11
    SJMP OK
NOKEY2:MOV P1,#0FFH
    CLR P1.7
    MOV A,#P1
    ANL A,#0FH
    XRL A,#0FH
    JZ NEXT16
    LCALL DELAY10MS
    MOV A,P1
    ANL A,#0FH
    XRL A,#0FH
    JZ NEXT16
    MOV A,P1
    ANL A,#0FH
    CJNE A,#0EH,NEXT13
    MOV KEY,#12
    SJMP OK
NEXT13:CJNE A,#0DH,NEXT14
       MOV KEY,#13
    SJMP OK
NEXT14:CJNE A,#0BH,NEXT15
       MOV KEY,#14
    SJMP OK
NEXT15:CJNE A,#07H,NEXT16
    MOV KEY,#15
    SJMP OK
NEXT16:LJMP JIXU
    OK:MOV A,KEY
    MOV DPTR,#TABLE
    MOVC A,@A+DPTR
    MOV P0,A
    LJMP JIXU
DELAY10MS:MOV R6,#10
       D1:MOV R7,#248
          DJNZ R7,$
          DJNZ R6,D1
          RET
    
TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H
       DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H
END

關(guān)閉窗口
主站蜘蛛池模板: 日本不卡一区 | 北条麻妃99精品青青久久主播 | 日韩亚洲视频 | 国产精品久久国产精品 | 色网站在线免费观看 | 欧美精品一区三区 | a在线观看| 国产精品久久精品 | 男人的天堂久久 | 午夜影院黄 | 亚洲激情综合网 | 成人av免费在线观看 | 国内自拍视频在线观看 | 午夜影院在线视频 | 欧美精品久久久久 | 国产精品美女久久久久aⅴ国产馆 | 亚洲成人一区 | 国产精品视频网站 | 日韩免费在线视频 | 日韩av高清 | 九久久| 婷婷亚洲综合 | 国产精品v | 国产资源一区二区三区 | 天天操天天射天天 | 亚洲国产自产 | 亚洲欧洲一区二区 | 久久国品片 | a级性视频| 欧美夜夜 | 亚洲日本一区二区 | 欧美一级在线免费观看 | 久久国产精品视频 | 精品一区二区三区视频在线观看 | 亚洲欧美视频一区 | 亚洲不卡在线观看 | 一级黄色片一级黄色片 | 久99久视频| 国产成人精品一区二区三 | 国产精品久久国产精品 | 国产小视频在线观看 |