📄 main.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 + -