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

📄 main.lst

📁 基于单片机的12864Proteus仿真【c语言程序】
💻 LST
字号:
C51 COMPILER V8.02   MAIN                                                                  08/24/2008 10:50:53 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.obj
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE sources\main.c BROWSE INCDIR(.\include) DEBUG OBJECTEXTEND PRINT(.\main.lst
                    -) OBJECT(main.obj)

line level    source

   1          //*************************************************************************************************
   2          //*************************************************************************************************
   3          //**<程序名>:俄罗斯方块游戏                                                                                                                                     **
   4          //**<版本说明>:此版是第一版,在LCD1608第4版基础上改进而来,目前只可以绘制游戏区域的边框。               **
   5          //**<完成时间>:2007年8月28日                                                                                                                                    **
   6          //**<作者>:LastRitter                                                                                                                                                   **
   7          //**<联系方式>:E-mail:superyongzhe@163.com;QQ:314665354。                                                                               **
   8          //*************************************************************************************************
   9          //*************************************************************************************************
  10          
  11          //*************************************************************************************************
  12          //*                                                                                                                                                                                               *
  13          //*                      ******************************头文件及宏定义**************************                           *
  14          //*                                                                                                                                                                                               *
  15          //*************************************************************************************************
  16          #include "includes.h"
  17          
  18          
  19          #define TIME1H 0x3C
  20          #define TIME1L 0xB0             //定时器1溢出时间:50ms
  21          
  22          #define SCANPORT P1
  23          
  24          
  25          //*************************************************************************************************
  26          //*                                                                                                                                                                                               *
  27          //*                      ******************************全局变量************************************                       *
  28          //*                                                                                                                                                                                               *
  29          //*************************************************************************************************
  30          
  31          //unsigned char code uca_TEST[]={0xFF,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF,0xF0,0xF0,0xF
             -0,0xF0};
  32          //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  33          //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<防抖动标志>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  34          //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  35          bit b_KeyShock=0;                                       //键盘防抖动标志位。
  36                                                                                  //当按键中断产生时,首先判断此位。
  37                                                                                  //0--执行键盘扫描及键码处理程序;1--不执行。
  38          
  39          bit b_KillShock=0;                                      //防抖标志清除位:0--不清除;1--清除。
  40          
  41          unsigned char uc_KillCount=0;           //抖动标志清除计数,使用定时器1。
  42          
  43          
  44          //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  45          //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<键盘扫描开启标志>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  46          //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  47          bit b_KeyScan=0;                                        //0--不扫描;
  48                                                                                  //1--扫描。
  49          
  50          
  51          //*************************************************************************************************
  52          //*                                                                                                                                                                                               *
  53          //*                       ********************************主函数******************************                            *
C51 COMPILER V8.02   MAIN                                                                  08/24/2008 10:50:53 PAGE 2   

  54          //*                                                                                                                                                                                               *
  55          //*************************************************************************************************
  56          
  57          
  58          /*********************** main ************************/
  59          void main(void)
  60          {
  61   1      
  62   1              vLCDInitialize();
  63   1      
  64   1              vShowOneChin(0,0,uca_QING);
  65   1              vShowOneChin(2,0,uca_SHU);
  66   1              vShowOneChin(4,0,uca_RU);
  67   1              vShowOneChin(6,0,uca_MAOHAO);
  68   1      
  69   1              vShowGraph(2,60,32,4,uca_Pig);
  70   1              vShowFrame();
  71   1      
  72   1              SCANPORT=0x0F;
  73   1              
  74   1      //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<外部中断0,用于开启键盘扫描及键码处理标志>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  75   1              IT0=1;                   //     中断方式:下降沿。
  76   1              EX0=1;                   //     开启外部中断。
  77   1      
  78   1      
  79   1      //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<定时器1,用于防抖动标志清除 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  80   1              TH1=TIME1H;
  81   1              TL1=TIME1L;
  82   1              TR1=1;                   //开启定时器1
  83   1              ET1=1;                   //开定时器1中断
  84   1      
  85   1              EA=1;
  86   1      
  87   1              while(1)
  88   1              {
  89   2              if(b_KeyScan==1)                   //如果有按键按下,则进行按键扫描和键码处理。
  90   2                      {
  91   3                      b_KeyScan=0;
  92   3                      vKeyProcess(ucKeyScan());
  93   3                      }
  94   2              }
  95   1      }
  96          
  97          
  98          
  99          //*************************************************************************************************
 100          //*                                                                                                                                                                                               *
 101          //*             ******************************外部中断0,用于开启键盘扫描及键码处理******************     *
 102          //*                                                                                                                                                                                               *
 103          //*************************************************************************************************
 104          void vINT0(void) interrupt 0
 105          {
 106   1              if(b_KeyShock==0)
 107   1                      {
 108   2                              b_KeyScan=1;                    //开启键盘扫描标志。
 109   2                              b_KeyShock=1;                   //设置防抖动标志。
 110   2                      }
 111   1              else b_KeyShock=0;                              //如果有抖动则不执行键扫描,恢复防抖动标志。
 112   1      
 113   1      //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<设置防抖动清除标志位 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 
 114   1              if(b_KeyShock==1)
 115   1                      b_KillShock=1;                          //如果防抖动标志位开启则开启防抖动标志清除位,
C51 COMPILER V8.02   MAIN                                                                  08/24/2008 10:50:53 PAGE 3   

 116   1                                                                              //300ms后清除防抖动标志。
 117   1      
 118   1      }
 119          
 120          
 121          //*************************************************************************************************
 122          //*                                                                                                                                                                                               *
 123          //*             ****************定时器1中断,用于计时功能和防抖动标志清除***************************      *
 124          //*                                                                                                                                                                                               *
 125          //*************************************************************************************************
 126          void vTimer1(void) interrupt 3
 127          {
 128   1      //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 129   1      //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<防抖动标志清除>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 130   1      //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 131   1              if(b_KillShock==1)
 132   1                      {
 133   2                      if(uc_KillCount==5)                      //当防抖动标志位为1时,计时300ms后清除抖动标志位。
 134   2                              {
 135   3                              b_KeyShock=0;
 136   3                              b_KillShock=0;
 137   3                              uc_KillCount=0;
 138   3                              }
 139   2                      else uc_KillCount++;
 140   2                      }
 141   1      //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 142   1      //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<恢复定时器1溢出时间>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 143   1      //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
 144   1              TH1=TIME1H;
 145   1              TL1=TIME1L;
 146   1      } 


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    161    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      1    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      3    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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