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

📄 mcu_ext.lst

📁 MS2 程序分析 Lldwsw 一:下载MS2.RAR 压缩包解压缩后可以看到如下界面: 第一项为MS2 软件包
💻 LST
字号:
C51 COMPILER V7.10   MCU_EXT                                                               03/04/2008 11:51:13 PAGE 1   


C51 COMPILER V7.10, COMPILATION OF MODULE MCU_EXT
OBJECT MODULE PLACED IN .\mcu_ext.obj
COMPILER INVOKED BY: C:\Program Files\Keil\C51\BIN\C51.EXE ..\SourceFile\mcu_ext.c BROWSE DEBUG OBJECTEXTEND PRINT(.\mcu
                    -_ext.lst) OBJECT(.\mcu_ext.obj)

line level    source

   1          
   2          /***************************************************************************************
   3          ****************************************************************************************
   4          * FILE          : mcu_ext.c
   5          * Description   : 
   6          *                         
   7          * Copyright (c) 2007 by WANG SHAOWEI. All Rights Reserved.
   8          * 
   9          * History:
  10          * Version               Name                    Date                    Description
  11             0.1          WANG SHAOWEI    2007/05/09      Initial Version
  12             
  13          ****************************************************************************************
  14          ****************************************************************************************/
  15          
  16          
  17          
  18          
  19          #include "common.h"
  20          
  21          
  22          
  23          
  24          
  25          
  26          
  27          
  28          
  29          
  30          
  31          
  32          
  33          #ifdef DP51
  34          sbit SDA = P1^0;                        /*模拟串行转并行口,下降沿有效,输出为低电平可控点亮*/
  35          sbit SCL = P1^1;                        /*模拟串并行转换的时钟信号线*/
  36          
  37          sbit KEY = P1^2;                        /*键盘,低电平有效,检测位*/
  38          
  39          sbit DISPLAY0 = P1^3;           /*EBIT4, 低电平有效*/
  40          sbit DISPLAY1 = P1^4;           /*EBIT3*/
  41          sbit DISPLAY2 = P1^5;           /*EBIT2*/
  42          sbit DISPLAY3 = P1^6;           /*EBIT1*/
  43          
  44          sbit LED = P1^7;                        /*EBIT0,低电平有效*/
  45          
  46          U8 code LedDisplayMap[2][16] =
  47          {
  48                  {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E},
  49                  {0x40, 0x79, 0x24, 0x30, 0x19, 0x12, 0x02, 0x78, 0x00, 0x10, 0x08, 0x03, 0x46, 0x21, 0x06, 0x0E}
  50          };
  51          
  52          
  53          
  54          
C51 COMPILER V7.10   MCU_EXT                                                               03/04/2008 11:51:13 PAGE 2   

  55          
  56          
  57          U8 key_read(void)
  58          {
  59   1              U8 i;
  60   1              U8 KeySave;
  61   1              P1 = 0xFF;
  62   1              SDA = 0;                        /*注意,原来数据为0,现在为1*/
  63   1              for(i = 0; i < 8; i++)                  /*r先将扫描线上都置为高电平*/
  64   1              {
  65   2                      SCL = 0;                
  66   2                      SCL = 1;
  67   2              }
  68   1              uty_delay(1);
  69   1              if(KEY)
  70   1              {
  71   2                      return(ERROR);
  72   2              }
  73   1      
  74   1              
  75   1              SDA = 1;                        /*注意,原来数据为0,现在为1*/
  76   1              for(i = 0; i < 8; i++)                  /*r先将扫描线上都置为高电平*/
  77   1              {
  78   2                      SCL = 0;        
  79   2                      SCL = 1;
  80   2                      uty_delay(1);
  81   2                      if(KEY)
  82   2                      {
  83   3                              KeySave = i;
  84   3                              break;
  85   3                      }
  86   2      
  87   2              }
  88   1              SDA = 0;                        /*注意,原来数据为0,现在为1*/
  89   1              for(i = 0; i < 8; i++)                  /*r先将扫描线上都置为高电平*/
  90   1              {
  91   2                      SCL = 0;        
  92   2                      SCL = 1;
  93   2                      uty_delay(1);
  94   2                      if(!KEY)
  95   2                      {
  96   3                              if(KeySave == i)
  97   3                              {
  98   4                                      return(i);
  99   4                              }
 100   3                              else
 101   3                              {
 102   4                                      return(ERROR);
 103   4                              }
 104   3                      }
 105   2              }
 106   1      
 107   1      
 108   1              return(ERROR);                          /*r若没有扫描到按下键就返回ERROR*/
 109   1      }
 110          
 111          
 112          void SendData(U8 Val)
 113          {
 114   1              U8 i;
 115   1              
 116   1              SCL = 1;
C51 COMPILER V7.10   MCU_EXT                                                               03/04/2008 11:51:13 PAGE 3   

 117   1              for(i = 0; i < 8; i++)
 118   1              {
 119   2                      if(Val & 0x80)          /*判断数据*/
 120   2                      {
 121   3                              SDA = 1;
 122   3                      }
 123   2                      else
 124   2                      {
 125   3                              SDA = 0;
 126   3                      }
 127   2                      SCL = 0;                                        /*产生时钟动作*/
 128   2                      SCL = 1;
 129   2                      Val = Val << 1;
 130   2              }
 131   1      }
 132          
 133          
 134          void led_control(U8 LedIndex)
 135          {
 136   1              P1 = 0xFF;
 137   1              if((LedIndex > 0) && (LedIndex < 9))
 138   1              {
 139   2                      LedIndex = 1 << (LedIndex - 1);         /*r当1左移(LedIndex-1)位后,发送到串并行转换电路*/
 140   2                      SendData(~LedIndex);
 141   2                      LED = 0;                                                        /*r开启DP-51的Q1三极管,这样就可以开启LED管点亮*/
 142   2              }
 143   1              
 144   1              
 145   1      }
 146          
 147          
 148           void LedDisplay_control(U1 boDp, U8 LedDisplayIndex, U8 value)
 149          {
 150   1              U1 i;
 151   1              i = boDp;
 152   1              P1 = 0xFF;
 153   1              SendData(LedDisplayMap[i][value]);              /*r发送LED显示数据到串并转换电路*/
 154   1      
 155   1              P1 &= ~(0x04 << LedDisplayIndex);
 156   1      }
 157          
 158          #else
              
              /*==================================================================
              * Function      : key_read
              * Description   : 
              * Input Para    : 
              * Output Para   : 
              * Return Value: 
              ==================================================================*/
              U8 key_read(void)
              {
                      U8 KeyRead;
                      U8 KeySave;
                      
                      P1 = 0x0F;
                      uty_delay(1);
                      KeyRead = P1 & 0x0F;
                      if((KeyRead & 0x0F) == 0x0F)
                      {
                              return(ERROR);
                      }
C51 COMPILER V7.10   MCU_EXT                                                               03/04/2008 11:51:13 PAGE 4   

                      
                      P1 = 0xF0;
                      uty_delay(1);
                      KeyRead = KeyRead |( P1 & 0xF0);
                      
                      return(KeyRead);
              }
              
              
              
              
              #endif
 191          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    238    ----
   CONSTANT SIZE    =     32    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       4
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       2
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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