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

📄 main.lst

📁 读卡器 fm1702实现收发 zlg7290实现按键与显示控制
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V7.06   MAIN                         09/20/2008 12:06:48 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c LARGE DEBUG OBJECTEXTEND PA
                    -GEWIDTH(79) PAGELENGTH(66)

stmt level    source

   1          #include "I2C.h"
   2          #include "ZLG7290.h"
   3          
   4          uchar code  duanma[10] ={0xFC,0x60,0xDA,0xF2,0x66,0xB6,0xBE,0xE0,
             -0xFE,0xF6}; // 0-9段码
   5          uchar data  add1[4]={0,0,0,0};      //  加数一
   6          uchar data  add2[4]={0,0,0,0};          //  加数二   且和值存放在这里面
   7          uchar data  money[5]={1,9,9,0,0};   //  卡里的钱数
   8          uchar data  jw=2;                               //   右边第几个显示
   9          bit Clear=0;  
  10          bit Flag=0;                                      //小数点按键标志 0 上次没按       1  
             -上次按了
  11          bit Add=0;                                       //加号键标志     0 上次没按加键   1  上
             -次按了加键
  12          bit Ka_lab=0;                                    //放卡取卡标志   0 没放卡          1   
             -放上卡
  13          void  Clearall(void);                           // 全清除显示
  14          void Reset(void)                                // 右边四位显示 0.00
  15          {
  16   1        ZLG7290_cmd(0x64,0x1F);
  17   1        Delay(1);
  18   1        ZLG7290_cmd(0x65,0x80);
  19   1        Delay(1);
  20   1        ZLG7290_cmd(0x66,0x00);
  21   1        Delay(1);
  22   1        ZLG7290_cmd(0x67,0x00);
  23   1        Delay(1);
  24   1      }
  25          
  26          void KeyFun(uchar num,uchar *d)  //重编键值 且执行功能键
  27          {
  28   1        uint data i,j;
  29   1        switch(num)
  30   1        {
  31   2          case 1:  {*d=0;break;}
  32   2              case 2:  {*d=1;break;}
  33   2              case 10: {*d=2;break;}
  34   2              case 6:  {*d=3;break;}
  35   2              case 3:  {*d=4;break;}
  36   2              case 11: {*d=5;break;}
  37   2              case 7:  {*d=6;break;}
  38   2              case 4:  {*d=7;break;}
  39   2              case 12: {*d=8;break;}
  40   2              case 8:  {*d=9;break;}                   //按键0-9
  41   2        
  42   2              case 9:  {*d=10;Flag=1;break;}            //小数点按键
  43   2       
  44   2              case 5:                                   // " + "号键
  45   2              case 13:                                  // " = "号键  确认功
             -能
  46   2              {
  47   3                *d=12;
  48   3                add1[3]+=add2[3];
  49   3            i=add1[3]/10;j=i;
  50   3                i=add1[3]%10;
  51   3                add2[3]=i;
C51 COMPILER V7.06   MAIN                         09/20/2008 12:06:48 PAGE 2   

  52   3      
  53   3                add1[2]=add1[2]+add2[2]+j;
  54   3            i=add1[2]/10;j=i;
  55   3                i=add1[2]%10;
  56   3                add2[2]=i;
  57   3      
  58   3                add1[1]=add1[1]+add2[1]+j;
  59   3            i=add1[1]/10;j=i;
  60   3                i=add1[1]%10;
  61   3                add2[1]=i;
  62   3      
  63   3                add1[0]=add1[0]+add2[0]+j;
  64   3            i=add1[0]/10;j=i;
  65   3                i=add1[0]%10;
  66   3                add2[0]=i;
  67   3      
  68   3            add1[0]=add1[1]=add1[2]=add1[3]=0;     // 加数一清零
  69   3      
  70   3                if(add2[0])
  71   3                ZLG7290_WriteReg(0x14,duanma[add2[0]]);        
  72   3                Delay(1);
  73   3                ZLG7290_cmd(0x65,0x80+add2[1]);
  74   3            Delay(1);
  75   3                ZLG7290_WriteReg(0x16,duanma[add2[2]]);
  76   3                Delay(1);
  77   3                ZLG7290_WriteReg(0x17,duanma[add2[3]]);
  78   3                Delay(1);                                                                     //显示和值
  79   3                
  80   3                Flag=0;jw=2;Add=1;break;
  81   3              }
  82   2       
  83   2              case 14: 
  84   2              {
  85   3                      *d=13;
  86   3                      Reset();
  87   3                      for(i=0;i<4;i++)
  88   3                      {
  89   4                              add1[i]=add2[i]=0;
  90   4                      }
  91   3                      Flag=0;
  92   3                      Add=0;
  93   3                      jw=2;
  94   3                      D1=1;
  95   3                      Clear=1;
  96   3                      break;
  97   3              } // 清除键 所有标志复位
  98   2       
  99   2              case 15:                                                      
             -             // 确认键 饭卡减值               
 100   2          {
 101   3                      *d=14;
 102   3                      i=money[1]*1000+money[2]*100+money[3]*10+money[4];             
             -       
 103   3                      j=add2[0]*1000+add2[1]*100+add2[2]*10+add2[3];
 104   3                      if(money[0])
 105   3                      {
 106   4                              if(i>=j)
 107   4                              {
 108   5                                      money[1]=(i-j)/1000;
 109   5                                      money[2]=((i-j)%1000)/100;
 110   5                                      money[3]=((i-j)%100)/10;
 111   5                                      money[4]=(i-j)%10;
 112   5                              }
 113   4                              else
C51 COMPILER V7.06   MAIN                         09/20/2008 12:06:48 PAGE 3   

 114   4                              {
 115   5                                      money[0]=money[0]-1;
 116   5                                      money[1]=(i+10000-j)/1000;
 117   5                                      money[2]=((i+10000-j)%1000)/100;
 118   5                                      money[3]=((i+10000-j)%100)/10;
 119   5                                      money[4]=(i+10000-j)%10;
 120   5                              }
 121   4                              if(money[0])
 122   4                              {
 123   5                                      ZLG7290_WriteReg(0x10,duanma[money[0]]);
 124   5                                      Delay(1);
 125   5                                      ZLG7290_WriteReg(0x11,duanma[money[1]]);        
 126   5                                      Delay(1);
 127   5                                      ZLG7290_cmd(0x62,0x80+money[2]);
 128   5                              Delay(1);
 129   5                                      ZLG7290_WriteReg(0x13,duanma[money[3]]);
 130   5                                      Delay(1);
 131   5                              }
 132   4                              else if(money[1])
 133   4                          {
 134   5                                      ZLG7290_WriteReg(0x10,duanma[money[1]]);        
 135   5                                      Delay(1);
 136   5                                      ZLG7290_cmd(0x61,0x80+money[2]);
 137   5                              Delay(1);
 138   5                                      ZLG7290_WriteReg(0x12,duanma[money[3]]);
 139   5                                      Delay(1);
 140   5                                      ZLG7290_WriteReg(0x13,duanma[money[4]]);
 141   5                              Delay(1);       
 142   5                              }
 143   4                              else
 144   4                              {
 145   5                                      ZLG7290_cmd(0x60,0x1F);
 146   5                                      Delay(1);
 147   5                                      ZLG7290_cmd(0x61,0x80+money[2]);
 148   5                                      Delay(1);
 149   5                                      ZLG7290_WriteReg(0x12,duanma[money[3]]);        
 150   5                              Delay(1);
 151   5                                      ZLG7290_WriteReg(0x13,duanma[money[4]]);
 152   5                                      Delay(1);
 153   5                              }
 154   4                      }
 155   3                      else if(i>=j)
 156   3                      {
 157   4                              money[1]=(i-j)/1000;
 158   4                              money[2]=((i-j)%1000)/100;
 159   4                              money[3]=((i-j)%100)/10;
 160   4                              money[4]=(i-j)%10;
 161   4                      if(money[1])
 162   4                              {
 163   5                                      ZLG7290_WriteReg(0x10,duanma[money[1]]);        
 164   5                                      Delay(1);
 165   5                                      ZLG7290_cmd(0x61,0x80+money[2]);
 166   5                              Delay(1);

⌨️ 快捷键说明

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