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

📄 formula.lst

📁 乘法口诀模拟答题器C51编写的控制源程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.02   FORMULA                                                               01/04/2007 09:53:28 PAGE 1   


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

line level    source

   1          /*******************************************************************
   2          *                                                                  *
   3          * ME500单片机开发系统演示程序 -  乘法口诀模拟答题器                *
   4          *                                                                  *
   5          * LCD1602显示                                                      *
   6          *                                                                  *
   7          * 版本: V1.0 (2006/11/20)                                         *
   8          * 作者: gguoqing (Email: gguoqing@willar.com)                     *
   9          * 网站: www.willar.com(伟纳电子)   www.mcusj.com(伟纳单片机世界)  *
  10          * 时间: 2007/01/03                                                *
  11          *                                                                  *
  12          *【版权】Copyright(C)伟纳电子 www.willar.com  All Rights Reserved  *
  13          *【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!        *
  14          *                                                                  *
  15          ********************************************************************
  16          *                                                                  *
  17          * 描述:                                                           *
  18          *      F--- 模拟出题控制开关; C--- 输入正确答案;                   *
  19          *      (0-9)--- 有效数字输入;                                      *
  20          *      答题正确,蜂鸣器响4声。                                     *
  21          *                                                                  *
  22          *******************************************************************/
  23          #include < reg51.h >
  24          #include < intrins.h >
  25          
  26          #define uchar unsigned char
  27          #define uint  unsigned int
  28          
  29          bit  F_in=0,truer;  
  30          
  31          
  32          sbit LCD_RS = P2^0;             
  33          sbit LCD_RW = P2^1;
  34          sbit LCD_EN = P2^2;
  35          
  36          uchar code  cdis1[ ] = {" MULTIPLICATION "}; 
  37          uchar code  cdis2[ ] = {"TABLE: 0*0=00   "};
  38          
  39          #define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};
  40          
  41          sbit BEEP = P3^7;          //蜂鸣器驱动线
  42          uchar  key_buf;            //显示缓存
  43          uchar  temp;
  44          uchar  key,key_num=0;                //键顺序吗
  45          
  46          uchar data testdata[] = {0x00,0x00,0x00,0x00};
  47          uchar data in_data[] = {0x01,0x02};
  48          
  49          uchar shift ;
  50          
  51          /**********************************************************
  52          
  53           延时子程序
  54          
  55          **********************************************************/
C51 COMPILER V8.02   FORMULA                                                               01/04/2007 09:53:28 PAGE 2   

  56          void delay(uint ms) 
  57          
  58          {
  59   1         uchar t;
  60   1         while(ms--)
  61   1         { 
  62   2           for(t = 0; t < 120; t++);
  63   2         }
  64   1      }
  65          
  66          /*************************************************************/
  67          /*                                                           */
  68          /* 延时 x*0.14ms                                             */
  69          /*                                                           */
  70          /*************************************************************/
  71          void delay0(uchar x)    
  72          {
  73   1         unsigned char i;
  74   1         while(x--)
  75   1         {
  76   2           for (i = 0; i<13; i++) {}
  77   2         }
  78   1      }
  79          
  80          /*************************************************************/
  81          /*                                                           */
  82          /* 蜂鸣器响一声                                              */
  83          /*                                                           */
  84          /*************************************************************/
  85          void beep()
  86          {
  87   1        unsigned char i;
  88   1        for (i=0;i<180;i++)
  89   1         {
  90   2         delay0(6);
  91   2         BEEP=!BEEP;       //BEEP取反
  92   2         } 
  93   1         BEEP=1;           //关闭蜂鸣器
  94   1         delay(250);       //延时     
  95   1      }
  96          
  97          /*************************************************************/
  98          /*                                                           */
  99          /*检查LCD忙状态                                              */
 100          /*lcd_busy为1时,忙,等待。lcd-busy为0时,闲,可写指令与数据  */
 101          /*                                                           */
 102          /*************************************************************/ 
 103          bit lcd_busy()
 104           {                          
 105   1          bit result;
 106   1          LCD_RS = 0;
 107   1          LCD_RW = 1;
 108   1          LCD_EN = 1;
 109   1          delayNOP();
 110   1          result = (bit)(P0&0x80);
 111   1          LCD_EN = 0;
 112   1          return(result); 
 113   1       }
 114          
 115          /*******************************************************************/
 116          /*                                                                 */
 117          /*写指令数据到LCD                                                  */
C51 COMPILER V8.02   FORMULA                                                               01/04/2007 09:53:28 PAGE 3   

 118          /*RS=L,RW=L,E=高脉冲,D0-D7=指令码。                             */
 119          /*                                                                 */
 120          /*******************************************************************/
 121          void lcd_wcmd(uchar cmd)
 122          
 123          {                          
 124   1         while(lcd_busy());
 125   1          LCD_RS = 0;
 126   1          LCD_RW = 0;
 127   1          LCD_EN = 0;
 128   1          _nop_();
 129   1          _nop_(); 
 130   1          P0 = cmd;
 131   1          delayNOP();
 132   1          LCD_EN = 1;
 133   1          delayNOP();
 134   1          LCD_EN = 0;  
 135   1      }
 136          
 137          /*******************************************************************/
 138          /*                                                                 */
 139          /*写显示数据到LCD                                                  */
 140          /*RS=H,RW=L,E=高脉冲,D0-D7=数据。                               */
 141          /*                                                                 */
 142          /*******************************************************************/
 143          void lcd_wdat(uchar dat)
 144          {                          
 145   1         while(lcd_busy());
 146   1          LCD_RS = 1;
 147   1          LCD_RW = 0;
 148   1          LCD_EN = 0;
 149   1          P0 = dat;
 150   1          delayNOP();
 151   1          LCD_EN = 1;
 152   1          delayNOP();
 153   1          LCD_EN = 0; 
 154   1      }
 155          
 156          /*************************************************************/
 157          /*                                                           */
 158          /*  LCD初始化设定                                            */
 159          /*                                                           */
 160          /*************************************************************/
 161          void lcd_init()
 162          { 
 163   1          delay(15);                   
 164   1          lcd_wcmd(0x38);      //16*2显示,5*7点阵,8位数据
 165   1          delay(5);
 166   1          lcd_wcmd(0x38);         
 167   1          delay(5);
 168   1          lcd_wcmd(0x38);         
 169   1          delay(5);
 170   1      
 171   1          lcd_wcmd(0x0c);      //显示开,关光标
 172   1          delay(5);
 173   1          lcd_wcmd(0x06);      //移动光标
 174   1          delay(5);
 175   1          lcd_wcmd(0x01);      //清除LCD的显示内容
 176   1          delay(5);
 177   1      }
 178          
 179          /*************************************************************/
C51 COMPILER V8.02   FORMULA                                                               01/04/2007 09:53:28 PAGE 4   

 180          /*                                                           */
 181          /*  设定显示位置                                             */
 182          /*                                                           */
 183          /*************************************************************/
 184          
 185          void lcd_pos(uchar pos)
 186          {                          
 187   1        lcd_wcmd(pos | 0x80);  //数据指针=80+地址变量
 188   1      }
 189          
 190          /*************************************************************
 191                                                                    
 192           键扫描子程序                                             
 193                                                                    
 194          *************************************************************/
 195          void  keyscan(void)
 196          { 
 197   1          P1=0x0F;                 //低四位输入  
 198   1          delay(1);
 199   1              temp=P1;                 //读P1口 
 200   1          temp=temp&0x0F;
 201   1          temp=~(temp|0xF0);
 202   1          if(temp==1)
 203   1              key=0;
 204   1          else if(temp==2)
 205   1              key=1;
 206   1          else if(temp==4)
 207   1              key=2;
 208   1          else if(temp==8)
 209   1              key=3;
 210   1          else
 211   1              key=16;
 212   1              
 213   1          P1=0xF0;                //高四位输入
 214   1          delay(1);
 215   1              temp=P1;                //读P1口       
 216   1          temp=temp&0xF0;

⌨️ 快捷键说明

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