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

📄 main.lst

📁 2008年山东省大学生电子设计大赛 c题 多功能电子计价秤 单片机用的 c8051f005
💻 LST
字号:
C51 COMPILER V7.20   MAIN                                                                  09/18/2008 18:08:21 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE main.c LARGE BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include "include.h"
   2          
   3          
   4          extern struct goods pre_set_goods[10];  //十个预置货物
   5          
   6          extern unsigned int duanhaozub[32];
   7          struct list list1;
   8          
   9          uchar ad_tare_k;
  10          
  11          float unit_price;                               //单价
  12          float weight;                                   //重量
  13          float sum_price;                                //总价
  14          float price;                                    //价格
  15          float tare;                                             //皮重
  16          uchar name;                                             //商品代号
  17          float m_tare=0;
  18          
  19          void main()
  20          {
  21   1              float temp;
  22   1              uchar key,list_num,thing_num=0,pre_num;
  23   1              sys_init();
  24   1              
  25   1              ad_tare_k=1;                            //上电自动采集AD初值
  26   1              sum_price=0;
  27   1              unit_price=0;
  28   1              tare=0;
  29   1              list1.buy[11].name=0xff;        //将11号物品的名称设为ff作结束标志
  30   1              flash_re(pre_set_goods);                //读取10种预置商品
  31   1              list_num=flash_read_list_num(); //读取当前清单ID
  32   1              if(list_num>=100)list_num=0;
  33   1              
  34   1              lcd_init();
  35   1              uart_init();
  36   1              lcd_clr();
  37   1              for(;;)
  38   1              {
  39   2                      lcd_display_face();                                             //显示主界面
  40   2                      lcd_clr_page(0,72,88);
  41   2                      lcd_display_yuan(32,0,unit_price);              //显示单价
  42   2                      weight=convs_weight()-tare-m_tare;              //测重量
  43   2                      lcd_clr_page(2,32,88);
  44   2                      lcd_display_float(32,2,(float)weight);  //显示去皮后重量
  45   2                      price=unit_price*(weight);                      //计算价格
  46   2                      lcd_clr_page(4,72,88);
  47   2                      lcd_display_yuan(32,4,price);                   //显示价格在(32,4)
  48   2                      lcd_clr_page(6,72,88);
  49   2                      lcd_display_yuan(32,6,sum_price);               //显示总价在(32,6)
  50   2                      
  51   2                      key=scan_key();                                                 //检测键盘
  52   2                      switch(key)
  53   2                      {
  54   3                              case 0x04:                                                      //如果按下4键 将当前重量设为皮重
  55   3                                      if(tare==0)
C51 COMPILER V7.20   MAIN                                                                  09/18/2008 18:08:21 PAGE 2   

  56   3                                              tare=weight;
  57   3                                      else
  58   3                                              tare=0;
  59   3                                      break;
  60   3                              case 0x05:                                                      //如果按下5键 累加总金额
  61   3                                      sum_price+=price;
  62   3                                      list1.sum_price+=price;
  63   3                                      list1.buy[thing_num].name=name;
  64   3                                      list1.buy[thing_num+1].name=0xff;       //将下一个物品的名称设为ff作结束标志
  65   3                                      list1.buy[thing_num].weight=weight;
  66   3                                      list1.buy[thing_num].unit_price=unit_price;
  67   3                                      thing_num++;
  68   3                                      break;
  69   3                              case 0x06:                                                      //如果按下6键 累加清零
  70   3                                      sum_price=0;break;
  71   3                              case 0x01:                                                      //如果按下1键 修改单价
  72   3                                      unit_price=input_float(32,0);break;
  73   3                              case 0x02:                                                      //如果按下2键 选择预置商品
  74   3                                      pre_num=get_pre_num();
  75   3                                      unit_price=pre_set_goods[pre_num].price;
  76   3                                      name=pre_set_goods[pre_num].name;
  77   3                                      lcd_clr();
  78   3                                      break;
  79   3                              case 0x03:                                                      //如果按下3键 修改预置单价
  80   3                                      set_pre_price();
  81   3                                      lcd_clr();
  82   3                                      break;
  83   3                              case 0x07:                                                      //如果按下7键 结束交易 保存清单
  84   3                                      list1.list_num=list_num;
  85   3                                      lcd_clr();
  86   3                                      temp=input_float(32,0); //输入销售员编号
  87   3                                      while(temp>99)                                  //如果店员号大于99
  88   3                                      {
  89   4                                              lcd_clr();
  90   4                                              temp=input_float(32,0); //输入销售员编号
  91   4                                      }
  92   3                                      list1.sales=(uchar)temp;
  93   3                                      list1.year=uc_R1302(0x8d);
  94   3                                      list1.month=uc_R1302(0x89);
  95   3                                      list1.day=uc_R1302(0x8b);
  96   3                                      list1.hour=uc_R1302(0x85);
  97   3                                      list1.minute=uc_R1302(0x83);
  98   3                                      
  99   3                                      if(list_num%4==0)
 100   3                                              flash_clr((uchar xdata *)(0x4c00+list_num*128));                //如果是扇区开始 清空此扇区
 101   3                                      flash_save((struct list xdata *)(0x4c00+list_num*128),list1);   //存储该清单
 102   3                      
 103   3                                      lcd_displa_shifoudayin();                                       //显示"是否打印清单?"
 104   3                                      key=0xff;
 105   3                                      while(key==0xff)
 106   3                                              key=scan_key();
 107   3                                      if(key==0x0b|key==0X0a)
 108   3                                                      print_list(list1);
 109   3      
 110   3                                      flash_clr(0x8000);                                                              //清除FLASH的0x8000
 111   3                                      flash_wr(pre_set_goods,list_num);                               //将预置商品数据和当前清单ID存入FLASH
 112   3                                      
 113   3                                      thing_num=0;
 114   3                                      list_num++;
 115   3                                      if(list_num==100)
 116   3                                              list_num=0;
 117   3                                      list1.sum_price=0;                                                              //总金额数据清零
C51 COMPILER V7.20   MAIN                                                                  09/18/2008 18:08:21 PAGE 3   

 118   3                                      sum_price=0;
 119   3                                      list1.buy[11].name=0xff;        //将11号物品的名称设为ff作结束标志
 120   3                                      lcd_clr();
 121   3                                      break;
 122   3                              case 0x08:                                                      //如果按下8键 查看历史清单
 123   3                                      show_list(list_num);
 124   3                                      lcd_clr();
 125   3                                      break;
 126   3                              case 0x09:
 127   3                                      show_time();
 128   3                                      lcd_clr();
 129   3                                      break;
 130   3                              case 0x0a:
 131   3                                      ad_tare_k=1;                                    //采集ad初值标志
 132   3                                      break;
 133   3                              case 0x00:
 134   3                                      play(voice_yuan(0x0f,price));
 135   3                                      play(voice_zhong(weight));
 136   3                                      play(voice_yuan(0x10,sum_price));
 137   3                                      break;
 138   3                      }
 139   2              }
 140   1      }
*** WARNING C316 IN LINE 140 OF main.c: unterminated conditionals


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1151    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =    145       8
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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