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

📄 mima.lst

📁 基于89s51单片机开发板创建的密码锁程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.02   MIMA                                                                  08/31/2007 15:30:05 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE MIMA
OBJECT MODULE PLACED IN mima.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE mima.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<reg51.h>
   2          #define uchar unsigned char
   3          #define uint unsigned int
   4          //////////////////////////////////////////////////////////
   5          //LED显示段码显示
   6          #define a 0x80
   7          #define b 0x40
   8          #define c 0x20
   9          #define d 0x10
  10          #define e 0x08
  11          #define f 0x04
  12          #define g 0x02
  13          #define dp 0x01
  14          ////////////////////////////////////////////////
  15          //LED显示位数
  16          uint weishu;
  17          ///////////////////////////////////////////////////////
  18          //延时程序
  19          /*void delay1ms(uint count)
  20                  {
  21                          uint i,j;
  22                          for(i=0;i<count;i++)
  23                                  for(j=0;j<120;j++)
  24                                          ;
  25                  }*/
  26          void delay10ms(uint count)
  27                  {
  28   1                      uint i,j,k;
  29   1                      for(i=0;i<count;i++)
  30   1                              for(j=0;j<10;j++)
  31   1                                      for(k=0;k<120;k++)
  32   1                                              ;
  33   1              }
  34          /*void delay100ms(uint count)
  35                  {
  36                          uint i,j,k;
  37                          for(i=0;i<count;i++)
  38                                  for(j=0;j<100;j++)
  39                                          for(k=0;k<120;k++)
  40                                                  ;
  41                  }*/
  42          /////////////////////////////////////////////////
  43          //数据显示字模(共阴)
  44          uchar const disp_code[16]={a+b+c+d+e+f,
  45                                     b+c,
  46                                     a+b+d+e+g,
  47                                                             a+b+c+d+g,
  48                                                             b+c+f+g,
  49                                                             a+c+d+f+g,
  50                                                             a+c+d+e+f+g,
  51                                                             a+b+c,
  52                                                             a+b+c+d+e+f+g,
  53                                                             a+b+c+d+f+g,
  54                                     a+b+c+e+f+g,
  55                                     c+d+e+f+g,
C51 COMPILER V8.02   MIMA                                                                  08/31/2007 15:30:05 PAGE 2   

  56                                     a+d+e+f,
  57                                     b+c+d+e+g,
  58                                     a+d+e+f+g,
  59                                     a+e+f+g};
  60          ///////////////////////////////////////////////////
  61          //16进制转换为10进制的子程序
  62          uchar disp_busf[4];
  63          /*void hex_bcd(uint i)
  64                  {
  65                          uchar j;
  66                          for(j=0;j<4;j++)
  67                                  {
  68                                          disp_busf[j]=i%10;
  69                                          i=i/10;
  70                                  }
  71                  }*/
  72          /////////////////////////////////////////////////////
  73          //动态显示子程序                   
  74          void display(void)
  75                  {
  76   1                      switch(weishu)                                                    //利用switch控制LED四个的显示位数,如果我们只用了2位,则只显示2位
  77   1                      {
  78   2                      case 4:
  79   2                              P0&=~0x08;
  80   2                  P2=~disp_code[disp_busf[0]];                                                                        
  81   2                              delay10ms(3);
  82   2                              P0|=0x0f;
  83   2                      case 3:
  84   2                  P0&=~0x04;
  85   2                              P2=~disp_code[disp_busf[1]];
  86   2                              delay10ms(3);
  87   2                              P0|=0x0f;
  88   2                      case 2:
  89   2                              P0&=~0x02;
  90   2                  P2=~disp_code[disp_busf[2]];
  91   2                              delay10ms(3);
  92   2                              P0|=0x0f;
  93   2                      case 1:
  94   2                              P0&=~0x01;
  95   2                              P2=~disp_code[disp_busf[3]];
  96   2                              delay10ms(3);
  97   2                              P0|=0x0f;
  98   2                      default:
  99   2                              P0&=~0x00;
 100   2                              delay10ms(3);
 101   2                      }
 102   1              }
 103          ///////////////////////////////////////////////////////////
 104          //键盘扫描子程序(反转法)
 105          uchar key_scan(void)
 106                  {
 107   1                      uchar i,j;
 108   1              P1=0x0f;
 109   1              i=P1;
 110   1              i&=0x0f;
 111   1              if(i==0x0f)
 112   1                              return(0xff);
 113   1              delay10ms(1);
 114   1              P1|=0x0f;
 115   1              i=P1;
 116   1              i&=0x0f;
 117   1              if(i==0x0f)
C51 COMPILER V8.02   MIMA                                                                  08/31/2007 15:30:05 PAGE 3   

 118   1                              return(0xff);
 119   1              P1=0xf0;
 120   1              j=P1;
 121   1              j&=0xf0;
 122   1              return(i+j);
 123   1              }
 124          //////////////////////////////////////////////////////////
 125          //键盘键值
 126          uchar const key_code[16]={0x77,0x7b,0x7d,0x7e,0xb7,0xbb,0xbd,0xbe,
 127                                   /*k1   k2   k3   k4   k5   k6   k7   k8*/
 128                                    0xd7,0xdb,0xdd,0xde,0xe7,0xeb,0xed,0xee};
 129                                   /*k9   k10  k11  k12  k13  k14  k15  k16*/ 
 130          ////////////////////////////////////////////////////////////
 131          //键盘扫描与键值译码子程序
 132          uchar key(void)
 133                  {
 134   1                      uchar i,j;
 135   1              i=key_scan();
 136   1              if(i==0xff)
 137   1                              return(0xff);
 138   1              loop:
 139   1                      j=key_scan();
 140   1              if(j!=0xff) goto loop;
 141   1              for(j=0;j<16;j++)
 142   1                              {
 143   2                                      if(i==key_code[j])
 144   2                                              break;
 145   2                              }
 146   1                      return(j);
 147   1              }
 148          //////////////////////////////////////////////////
 149          //定时器0的中断服务程序
 150          void xianshi(void) interrupt 1 using 1///中断方式显示数据
 151               {
 152   1                      TH0=50000/256;
 153   1              TL0=50000%256;
 154   1              display();
 155   1              }
 156          /*//////////////////////////////////////////////////
 157          //定时器1的中断服务程序
 158          void alarm(void) interrupt 3 using 2///中断方式控制蜂鸣器
 159               {
 160                          P3&=0xbf;
 161                  }*/
 162          uchar key_busf;
 163          /*////////////////////////////////////////////////////
 164          //16进制高低位分解子程序
 165          void hex_fen(uchar i)
 166                  {
 167                          disp_busf[0]=i&0x0f;

⌨️ 快捷键说明

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