📄 sfj1.lst
字号:
C51 COMPILER V7.50 SFJ1 04/01/2007 13:44:18 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE SFJ1
OBJECT MODULE PLACED IN sfj1.OBJ
COMPILER INVOKED BY: C:\Program Files\keil\C51\BIN\C51.EXE sfj1.c BROWSE DEBUG OBJECTEXTEND
line level source
1
2 #include <reg51.h>
3 #include <absacc.h>
4 #include <intrins.h>
5
6 #define uchar unsigned char
7 #define uint unsigned int
8 #define ulong unsigned long
9 #define _Nop() _nop_()
10 #define TRUE 1
11 #define FALSE 0
12
13 #define CNTR XBYTE[0x7F00]
14 #define COMD XBYTE[0x7F01]
15 #define STUS XBYTE[0x7F02]
16 #define INTR XBYTE[0x7F03]
17 #define ACOD XBYTE[0x7F04]
18 #define ACMK XBYTE[0x7F05]
19 #define BTR0 XBYTE[0x7F06]
20 #define BTR1 XBYTE[0x7F07]
21 #define OCTR XBYTE[0x7F08]
22 #define TXBID0 XBYTE[0x7F0A]
23 #define TXBID1 XBYTE[0x7F0b]
24 #define TXBDATA0 XBYTE[0x7F0C]
25 #define TXBDATA1 XBYTE[0x7F0D]
26 #define TXBDATA2 XBYTE[0x7F0E]
27 #define TXBDATA3 XBYTE[0x7F0F]
28 #define TXBDATA4 XBYTE[0x7F10]
29 #define TXBDATA5 XBYTE[0x7F11]
30 #define TXBDATA6 XBYTE[0x7F12]
31 #define TXBDATA7 XBYTE[0x7F13]
32 #define RXR0 XBYTE[0x7F14]
33 #define RXR1 XBYTE[0x7F15]
34 #define RXRDATA1 XBYTE[0x7F16]
35 #define RXRDATA2 XBYTE[0x7F17]
36 #define RXRDATA3 XBYTE[0x7F18]
37 #define RXRDATA4 XBYTE[0x7F19]
38 #define RXRDATA5 XBYTE[0x7F1A]
39 #define RXRDATA6 XBYTE[0x7F1B]
40 #define RXRDATA7 XBYTE[0x7F1C]
41 #define RXRDATA8 XBYTE[0x7F1D]
42
43 #define MODE XBYTE[0x7F1F]
44
45 sfr WDTC=0x9F;
46 sfr SCONF=0xBF;
47 sbit ACC0=ACC^0; sbit ACC1=ACC^1; sbit ACC2=ACC^2; sbit ACC3=ACC^3;
48 sbit ACC4=ACC^4; sbit ACC5=ACC^5; sbit ACC6=ACC^6; sbit ACC7=ACC^7;
49
50 ulong earnmoney,earnmoneytemp;
51 uint earnmoneytemp1;
52 uchar keyvalue,numkeyvalue;
53 uchar idata receivebuf[13];
54 uchar idata displaybuf[16];
55 uint inputdata[14];
C51 COMPILER V7.50 SFJ1 04/01/2007 13:44:18 PAGE 2
56 uchar inputpoint;
57 uint delayl;
58 uchar idata Num_Buf[5]={0x00,0x00,0x00,0x00,0x00};
59 uchar Rst_Buf;
60 bdata uchar a,b;
61 bdata uchar senddata;
62 sbit sendbit_0=senddata^0;
63 uchar i;
64 uchar j;
65 uchar ramaddress;
66 bit Find_Head,Find_Success,ack,Set_Success;
67 bit presskey,keydoflag,serialflag;
68 bit pointbit,firstnumflag;
69 bit cancelstatus;
70 bit lightflag,countok;
71 bit workflag,inttimer0;
72 uchar pointwhere,pointnew;
73 uchar SYS_STATE;
74 uchar Serial_Buf_Num,Serial_Buf_NumSum;
75 uchar Serial_Buf[13];
76
77 uchar X_Sum;
78 uchar T_Cnt;
79 uint havemoney;
80 uint setmoney;
81 bit timeflag,flashflag;
82 bit moneyflag;
83 uchar enablesend;
84 uchar enableauto,currentkind;
85 uchar receiveflag;
86 uchar machinestatus;
87 uchar nodeaddress,sendorder;
88 uint spendmoney;
89
90 uint kindmoney;
91 uchar idata Sendbuf[4];
92 uchar dispshift;
93 uchar flashcount;
94 uint totalmoney;
95 uchar serialsend;
96 bit addflag;
97 bit searchflag,oldkeyflag;
98 bit clearflag;
99 bit flagkeyd;
100 uchar behindnum;
101 uchar pointnum3;
102 uchar flashi;
103
104
105 sbit a_0=a^0; sbit a_1=a^1; sbit a_2=a^2; sbit a_3=a^3;
106 sbit a_4=a^4; sbit a_5=a^5; sbit a_6=a^6; sbit a_7=a^7;
107 sbit b_0=b^0; sbit b_1=b^1; sbit b_2=b^2; sbit b_3=b^3;
108 sbit b_4=b^4; sbit b_5=b^5; sbit b_6=b^6; sbit b_7=b^7;
109 sbit ALARM=P1^0; sbit sda=P1^1; sbit scl=P1^2; sbit f2led=P1^3;
110 sbit f1led=P1^4; sbit kindled=P1^5; sbit countled=P1^6; sbit autoled=P1^7;
111 sbit LOAD=P2^0; sbit DIN=P2^1; sbit CLK=P2^2; sbit P2_3=P2^3;
112 sbit P2_7=P2^7;
113 sbit P3_0=P3^0; sbit P3_1=P3^1; sbit key=P3^2; sbit P3_3=P3^3;
114 sbit dat=P3^4; sbit clk=P3^5; sbit P3_6=P3^6; sbit P3_7=P3^7;
115
116 void cansend(void);
117 void canreceive(void);
C51 COMPILER V7.50 SFJ1 04/01/2007 13:44:18 PAGE 3
118 void Rst_Wdog(void);
119 void dispmoney(void);
120 void numkey(void);
121 void Start();
122 void Stop();
123 void Ack_NoAck(bit askbit);
124 void SendByte(uchar c);
125 uchar RcvByte();
126 bit IRcvStr(uchar sla,uchar suba,uchar *s,uchar no);
127 bit ISendStr(uchar sla,uchar suba,uchar *s,uchar no);
128
129 void delay(uchar time);
130 void write728x(uchar reg_add, uchar write_data);
131 uchar read728x(uchar reg_add);
132 void send_byte(uchar send_byte);
133 void repeatdisplay(void);
134 uchar receive_byte(void);
135 void pointon(void);
136 void pointoff(void);
137 void inputmoney(void);
138 void oldstatus(void);
139
140 void send(uchar buf[],uchar len);
141 uchar Rec_xorsum(uchar buf[],uchar len);
142
143 uchar idata pointonvalue[8]={0x27,0x2f,0x37,0x3f,0x67,0x6f,0x77,0x7f};
144 uchar code pointoffvalue[8]={0xa7,0xaf,0xb7,0xbf,0xe7,0xef,0xf7,0xff};
145
146 void main(void)
147 {
148 1
149 1
150 1
151 1 Rst_Buf=SCONF;
152 1 if((Rst_Buf&0x80)==0) WDTC=0x85;
153 1 else { Rst_Buf=SCONF;
154 2 SCONF=Rst_Buf&0x7f;
155 2 Rst_Buf=WDTC;
156 2 WDTC=Rst_Buf|0x20;
157 2 WDTC=0x85;
158 2 }
159 1
160 1 EA=0; ALARM=1; IE=0x00; IP=0x10;
161 1 TMOD=0x21; TH1=0xE8; TL1=0xE8;
162 1 TH0=-50000/256; TL0=-50000%256;
163 1 ET0=1; TR1=1; ES=1; IT0=1; EX0=1;
164 1 PCON=0x00; SCON=0x70;
165 1 EA=1;
166 1 for (delayl=0;delayl<25000;delayl++);
167 1 Rst_Wdog();
168 1 write728x(0x12,0x80);
169 1 timeflag=0; flashcount=0; TR0=1;
170 1 moneyflag=0;
171 1 keyvalue=45; numkeyvalue=30;
172 1 keydoflag=0; Serial_Buf_Num=0;
173 1
174 1 ramaddress=0xf0;
175 1 IRcvStr(0xa0,ramaddress,&receivebuf,1);
176 1 nodeaddress=receivebuf[0];
177 1 receivebuf[4]=receivebuf[0]/10;
178 1 receivebuf[5]=receivebuf[0]%10;
179 1 CNTR=0x01;
C51 COMPILER V7.50 SFJ1 04/01/2007 13:44:18 PAGE 4
180 1 ACC=CNTR;
181 1 while(ACC0!=1) {CNTR=0x01; ACC=CNTR;}
182 1 ACOD=nodeaddress;
183 1 ACMK=0x80;
184 1 BTR0=0x09;
185 1 BTR1=0x1c;
186 1 OCTR=0x1a;
187 1
188 1 CNTR=0x00;
189 1 ACC=CNTR;
190 1 while(ACC0!=0) {CNTR=0; ACC=CNTR;}
191 1
192 1 ramaddress=0xd0;
193 1 IRcvStr(0xa0,ramaddress,&receivebuf,3);
194 1 earnmoney=receivebuf[0]*65536+receivebuf[1]*256+receivebuf[2];
195 1 earnmoneytemp=earnmoney;
196 1 SYS_STATE=0;
197 1 presskey=0;
198 1 machinestatus=4;
199 1 enablesend=1;
200 1 pointbit=1; totalmoney=0; firstnumflag=1;
201 1
202 1 displaybuf[0]=0x0f;
203 1 displaybuf[1]=0x1f; displaybuf[2]=0x2f; displaybuf[3]=0x3f;
204 1 displaybuf[4]=0x40+receivebuf[4]; displaybuf[5]=0x50+receivebuf[5];
205 1 displaybuf[6]=0x60+0x0f; displaybuf[7]=0x70+0x0f;
206 1 repeatdisplay();
207 1 for(i=0;i<16;i++)
208 1 write728x(0x14,displaybuf[i]);
209 1 for(i=0;i<3;i++)
210 1 {for(delayl=0;delayl<25000;delayl++) ;
211 2 Rst_Wdog();
212 2 }
213 1 displaybuf[0]=0x0d;displaybuf[1]=0x14; displaybuf[4]=0x4f; displaybuf[5]=0x5f;
214 1 pointon(); autoled=1; countled=0; kindled=1; f1led=1; f2led=1;
215 1 flashflag=1; addflag=0; flagkeyd=0;
216 1 while(1)
217 1 {Rst_Wdog();
218 2 if(inttimer0==1)
219 2 {if(timeflag==1)
220 3 {if(++T_Cnt>=5){
221 5 T_Cnt=0;
222 5 timeflag=0;
223 5 if(machinestatus!=5)
224 5 {flashflag=1;
225 6 pointon();
226 6 }
227 5 enablesend=1;
228 5 ES=1;
229 5 TR1=1;
230 5 write728x(0x14,0x3f);
231 5 write728x(0x14,0xbf);
232 5 }
233 4 }
234 3 if(flashflag==1)
235 3 {TR0=0; flashcount=flashcount+1;
236 4 if(flashcount==5)
237 4 {displaybuf[2]=0x2f;displaybuf[3]=0x3f;displaybuf[4]=0x4a; displaybuf[5]=0x5f; displaybuf[6]=0
-x6f; displaybuf[7]=0x7f;
238 5 }
239 4 else if(flashcount==10)
240 4 {displaybuf[2]=0x2f;displaybuf[3]=0x3f;displaybuf[4]=0x4f; displaybuf[5]=0x5a; displaybuf[6]=0
C51 COMPILER V7.50 SFJ1 04/01/2007 13:44:18 PAGE 5
-x6f; displaybuf[7]=0x7f;
241 5 }
242 4 else if(flashcount==15)
243 4 {displaybuf[2]=0x2f;displaybuf[3]=0x3f;displaybuf[4]=0x4f; displaybuf[5]=0x5f; displaybuf[6]=0
-x6a; displaybuf[7]=0x7f;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -