sub.lst
来自「一个基于C51开发的计价秤」· LST 代码 · 共 1,575 行 · 第 1/5 页
LST
1,575 行
72 =1 #define TRUE 1
73 =1 #define PAND 0
74 =1 #define FOOKTIN 1
75 =1 #define LCD_MODE 0x08 //display(1:4,1/3)
76 =1 #define LCD_GLITTER 0x00 //off
C51 COMPILER V7.50 SUB 05/27/2006 14:00:58 PAGE 6
77 =1 #define MAX_RECORD 0xbb8 //3000
78 =1 #define PLU_LEN 22
79 =1 #define TABLE_LEN 64
80 =1 #define RECORD_LEN 15
81 =1 /**********mode**********/
82 =1 #define Input_code_mode 1
83 =1 #define Calibration_mode 2
84 =1 #define Initialization_mode 3
85 =1 #define Sales_mode 4
86 =1 #define Total_mode 5
87 =1 #define Payback_mode 6
88 =1 #define PLU_Setup_mode 7
89 =1 #define Time_Setup_mode 8
90 =1 #define Beep_and_Light_Setup_mode 9
91 =1 #define Calculator_mode 10
92 =1 #define Reports_mode 11
93 =1 #define Download_mode 12
94 =1 #define Power_down_mode 13
95 =1 #define Print_Cancel_mode 14
96 =1 /**********state**********/
97 =1 #define WEIGHING 1
98 =1 #define NON_WEIGHING 2
99 =1 #define PAYBACK 3
100 =1
101 =1 #define PLU_EDIT 1
102 =1 #define PLU_SAVE 2
103 =1
104 =1 #define SET_BEEP 1
105 =1 #define SET_LIGHT 2
106 =1
107 =1 #define MENU_1 1
108 =1 #define MENU_1_1 11
109 =1 #define MENU_1_2 12
110 =1 #define MENU_1_2_1 121
111 =1 #define MENU_1_2_2 122
112 =1 #define MENU_1_2_2_0 1221
113 =1 #define MENU_1_3 13
114 =1 #define MENU_1_4 14
115 =1
116 =1 #define MENU_2 2
117 =1 #define MENU_2_1 21
118 =1 #define MENU_2_2 22
119 =1 #define MENU_2_2_1 221
120 =1 #define MENU_2_2_2 222
121 =1 #define MENU_2_2_2_0 2221
122 =1 #define MENU_2_3 23
123 =1
124 =1 #define MENU_3 3
125 =1 #define MENU_3_1 31
126 =1 #define MENU_3_2 32
127 =1 #define MENU_3_2_1 321
128 =1 #define MENU_3_2_2 322
129 =1 #define MENU_3_2_2_0 3221
130 =1 #define MENU_3_3 33
131 =1
132 =1 #define EDIT_YEAR 1
133 =1 #define EDIT_MONTH 2
134 =1 #define EDIT_DAY 3
135 =1 #define EDIT_HOUR 4
136 =1 #define EDIT_MINUTE 5
137 =1 #define EDIT_SECOND 6
138 =1
C51 COMPILER V7.50 SUB 05/27/2006 14:00:58 PAGE 7
139 =1 /**********sales type**********/
140 =1 #define PW 1
141 =1 #define PN 2
142 =1 #define MW 3
143 =1 #define MN 4
144 =1 #define DELE 0xaa
145 =1
146 =1 /**********print type***********/
147 =1 #define PW 1
148 =1 #define PN 2
149 =1 #define MW 3
150 =1 #define MN 4
151 =1 #define TOTAL 5
152 =1
153 =1 /**********report type**********/
154 =1 #define TOTAL_ALL_MONEY 1
155 =1 #define TOTAL_ALL_PLU_MONEY 2
156 =1 #define TOTAL_SEL_PLU_MONEY 3
157 =1 #define TOTAL_ALL_MANUL_MONEY 4
158 =1 #define TOTAL_ALL_NUMBER_MONEY 5
159 =1 #define TOTAL_ALL_WEIGHT 6
160 =1 #define TOTAL_ALL_PLU_WEIGHT 7
161 =1 #define TOTAL_SEL_PLU_WEIGHT 8
162 =1 #define TOTAL_ALL_MANUL_WEIGHT 9
163 =1 #define TOTAL_ALL_NUMBER 10
164 =1 #define TOTAL_ALL_PLU_NUMBER 11
165 =1 #define TOTAL_SEL_PLU_NUMBER 12
166 =1 #define TOTAL_ALL_MANUL_NUMBER 13
167 =1
168 =1 /********operate status********/
169 =1 #define ADD 1
170 =1 #define SUM 2
171 =1 #define PAY 3
172 =1
173 =1 /********eeprom address********/
174 =1 #define EEPROM_ID 0
175 =1 #define Option_Param_address 2
176 =1 #define Graduation_Grade_address 3
177 =1 #define Graduation1_address 5
178 =1 #define Graduation2_address 6
179 =1 #define Max_Capacity_address 7
180 =1 #define Initial_Zero_Setting_limit_address 9
181 =1 #define Zero_Setting_and_Zero_Tracking_limit_address 10
182 =1 #define Zero_Stable_count_address 11
183 =1 #define Zero_Stable_times_address 13
184 =1 #define Weight_Stable_count_address 14
185 =1 #define Weight_Stable_times_address 16
186 =1 #define Err1_Timeout_address 17
187 =1 #define Local_Height_address 18
188 =1 #define Local_Latitude_address 20
189 =1 #define Destination_Height_address 21
190 =1 #define Destination_Latitude_address 23
191 =1 #define Soft_Ver_address 24
192 =1 #define Cal_counts_address 26
193 =1 #define Password_address 27
194 =1 #define Cal_Zero_limit_count_address 30
195 =1 #define Cal_One_count_address 36
196 =1 #define Cal_Zero_count_address 40
197 =1 #define Cal_Weight_count_address 44
198 =1 #define Logo_address 48
199 =1 #define PLU_DATA_ADR 0x40
200 =1 #define RECORD_DATA_ADR 0x2600
C51 COMPILER V7.50 SUB 05/27/2006 14:00:58 PAGE 8
201 =1
202 =1 /********report save address********/
203 =1 #define PLU_no_Save_address 1
204 =1 #define Unit_Price_Save_address 3
205 =1 #define Weight_Save_address 6
206 =1 #define Quantity_Save_address 6
207 =1 #define Total_Price_Save_address 9
8 #include "KeyBoard.h"
1 =1 //Function key define
2 =1 #define PLU1 0x01
3 =1 #define PLU2 0x08
4 =1 #define PLU3 0x0f
5 =1 #define PLU4 0x16
6 =1 #define PLU5 0x1d
7 =1 #define PLU6 0x24
8 =1 #define PLU7 0x2b
9 =1 #define PLU8 0x32
10 =1 #define PLU9 0x02
11 =1 #define PLU10 0x09
12 =1 #define PLU11 0x10
13 =1 #define PLU12 0x17
14 =1 #define PLU13 0x1e
15 =1 #define PLU14 0x25
16 =1 #define PLU15 0x2c
17 =1 #define PLU16 0x33
18 =1 #define PLU17 0x03
19 =1 #define PLU18 0x0a
20 =1 #define PLU19 0x11
21 =1 #define PLU20 0x18
22 =1 #define PLU21 0x1f
23 =1 #define PLU22 0x26
24 =1 #define PLU23 0x2d
25 =1 #define PLU24 0x34
26 =1 #define PLU25 0x04
27 =1 #define PLU26 0x0b
28 =1 #define PLU27 0x12
29 =1 #define PLU28 0x19
30 =1 #define PLU29 0x20
31 =1 #define PLU30 0x27
32 =1 #define K_ADD 0x2e
33 =1 #define K_SUB 0x35
34 =1 #define K_MUL 0x05
35 =1 #define K_DIV 0x0c
36 =1 #define K_00 0x13
37 =1 #define K_0 0x1a
38 =1 #define K_1 0x21
39 =1 #define K_2 0x28
40 =1 #define K_3 0x2f
41 =1 #define K_4 0x36
42 =1 #define K_5 0x06
43 =1 #define K_6 0x0d
44 =1 #define K_7 0x14
45 =1 #define K_8 0x1b
46 =1 #define K_9 0x22
47 =1 #define K_ENTER 0x29
48 =1 #define K_ZERO 0x30
49 =1 #define K_TARE 0x37
50 =1 #define K_CLEAR 0x07
51 =1 #define K_PRINT 0x0e
52 =1 #define K_TOTAL 0x15
53 =1 #define K_PAYBACK 0x1c
54 =1 #define K_CLOCK 0x41
C51 COMPILER V7.50 SUB 05/27/2006 14:00:58 PAGE 9
55 =1 #define K_MEMORY 0x42
56 =1 #define K_ON_OFF 0x43
57 =1 //Shift key define
58 =1 #define K_SHIFT 1
59 =1 #define K_MEM 2
60 =1 #define K_MODE 3
9
10 extern BYTE timer1_count;
11 extern INT8 Timeout1,Timeout2;
12 extern BOOL Timeout1_enable,Timeout2_enable;
13 extern BYTE report_type;
14 extern WORD Record_Counts;
15 extern WORD PLU_no;
16 extern WORD Weight;
17 extern WORD Quantity;
18 extern DWORD Unit_Price;
19 extern DWORD Total_Price;
20 extern BYTE lastop;
21 extern FLOAT Last_value;
22 extern FLOAT Current_value;
23 extern UNION_LONG temp_LONG;
24 extern BYTE PLU_buf[PLU_LEN];
25 extern BYTE Record_buf[RECORD_LEN];
26
27 extern VOID PLU_Load(WORD temp);
28 extern VOID Record_Load(WORD temp);
29 extern VOID Set_Weight_Display(WORD temp);
30 extern VOID Set_Quantity_Display(WORD temp);
31 extern VOID Set_Unit_Price_Display(DWORD temp);
32 extern VOID Set_Total_Price_Display(DWORD temp);
33 extern VOID Set_Calcul_Result_Display(BYTE *p);
34 extern VOID Set_Lcd3_Buf(CHAR c,BYTE pos,BYTE cnt);
35
36 VOID Wait_n_ms(BYTE n)
37 {
38 1 Timeout1=n;
39 1 Timeout1_enable=TRUE;
40 1 timer1_count=0;
41 1 while(Timeout1>0);
42 1 Timeout1_enable=FALSE;
43 1
44 1 }
45
46 VOID Wait_n_s(BYTE n)
47 {
48 1 Timeout2=n;
49 1 Timeout2_enable=TRUE;
50 1 timer1_count=0;
51 1 while(Timeout2>0);
52 1 Timeout2_enable=FALSE;
53 1
54 1 }
55
56 VOID Float_Format(FLOAT f)
57 {
58 1 INT8 data p=0;
59 1 BYTE dbuf[9];
60 1 BYTE digit;
61 1 FLOAT divisor=1000000;
62 1 BOOL pad=FALSE;
63 1 if(f>=0)
64 1 dbuf[p++]=' ';
C51 COMPILER V7.50 SUB 05/27/2006 14:00:58 PAGE 10
65 1 else
66 1 {
67 2 dbuf[p++]='-';
68 2 f=-f;
69 2 }
70 1 if(f>=divisor)
71 1 dbuf[p++]='E';
72 1 else
73 1 while(p<9&&(divisor>1||f>=0.000001))
74 1 {
75 2 divisor=divisor/10;
76 2 digit=(int)(f/divisor);
77 2 if(divisor<1&&divisor>0.01)
78 2 dbuf[p++]='.';
79 2 if(digit!=0||divisor<10)
80 2 {
81 3 dbuf[p++]=digit+'0';
82 3 pad=TRUE;
83 3 }
84 2 else if(pad)
85 2 dbuf[p++]='0';
86 2 f-=digit*divisor;
87 2 }
88 1 dbuf[p]=0;
89 1 Set_Calcul_Result_Display(dbuf);
90 1 }
91
92 VOID Calculator_Operate(BYTE token)
93 {
94 1 BOOL result=TRUE;
95 1 switch(token)
96 1 {
97 2 case K_ADD:Last_value+=Current_value;break;
98 2 case K_SUB:Last_value-=Current_value;break;
99 2 case K_MUL:Last_value*=Current_value;break;
100 2 case K_DIV:
101 2 if(Current_value!=0)
102 2 {
103 3 Last_value/=Current_value;
104 3 result=TRUE;
105 3 }
106 2 else
107 2 result=FALSE;
108 2 break;
109 2 }
110 1 if(result)
111 1 {
112 2 Last_value=Last_value+0.000001;
113 2 Float_Format(Last_value);
114 2 }
115 1 else
116 1 {
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?