📄 spotwelder.lst
字号:
C51 COMPILER V7.50 SPOTWELDER 11/07/2005 02:10:44 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE SPOTWELDER
OBJECT MODULE PLACED IN SpotWelder.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE SpotWelder.c ROM(COMPACT) BROWSE DEFINE(c51) DEBUG OBJECTEXTEND
line level source
1 /*
2 李先的红姆点焊机
3
4 ailing于温州华侨机械--2005.10
5 */
6
7 #include<intrins.h>
8 #include"keyscan.h"
9 #include"at24cxx.h"
10 #ifdef __C51__
11 #include<regx51.h>
12 #endif
13 #ifdef __C52__
#include<regs52.h>
#endif
16
17 #define nop() _nop_()
18 #define uchar unsigned char
19 #define uint unsigned int
20
21 #define Prrz 11
22 #define Weld 22
23 #define PrrzL 33
24 #define Space 44
25 #define check 55
26 #define Emergency 66
27
28 #define AUTO 1
29 #define MAN 0
30
31
32 //led driver bit
33 sbit bPrrz_led = P3^5;
34 sbit bWeld_led = P3^6;
35 sbit bFshCnt_led = P3^7;
36 sbit bPrrzL_led = P3^0;
37 sbit bSpace_led = P1^7;
38 sbit bSet_led = P3^1;
39 sbit bMode_led = P3^4;
40 //relay drive bit
41 sbit bPrrz_RlyDr = P2^6;
42 sbit bWeld_RlyDr = P2^5;
43 sbit bPrrzL_RlyDr= P2^4;
44 sbit bFshCnt_RlyDr= P2^2;
45 sbit bSpace_RlyDr= P2^3;
46
47 sbit bStartup =P3^2;
48
49 /*按键设置是为:百位+=100,十位+=10,个位+=1 */
50 unsigned int PrrzTime;
51 unsigned int WeldTime;
52 unsigned int WorkCount;
53 unsigned int PrrzLTime;
54 unsigned int SpaceTime;
55
C51 COMPILER V7.50 SPOTWELDER 11/07/2005 02:10:44 PAGE 2
56 unsigned char Work;
57 unsigned char Tent;
58 unsigned char data trnscv[11]={0,0,0,0,0,0,0,0,0,0};
59 unsigned char DisData[15];
60 unsigned char WorkMode;
61
62 bit bcheck;
63
64
65 void SendByte(unsigned char Data);
66 unsigned char RcvByte();
67 bit ISendByte(uchar SLA,uchar Data);
68 bit ISendStr(uchar sla,uchar Suba,uchar *s,uchar Num);
69 bit IRcvByte(uchar sla,uchar *rcv);
70 bit IRcvStr(uchar SLA,uchar Suba,uchar *rcv,uchar Num);
71
72 /****************************** keyscan() **********************************
73
74 放在 5ms 中断里运行
75 RUN=p3.2; shift=p3.4; FUNCtion=p3.5; add=p3.7 共 4 个独立式按键;
76 p3.3 为合盖的行程开关不能作为一个独立按键,否则合盖后p3.3==0将屏蔽掉所有的按键。
77 *****************************************************************************/
78
79 void keyscan(void)
80 {
81 1 uchar KCodeCrrt;
82 1 static uchar DBCount;
83 1 static uchar DownCT;
84 1
85 1 KCodeCrrt=0x7c&P1; // &01111100b
86 1 if(KCodeCrrt==0x7c)
87 1 {
88 2 if(DBCount==0)
89 2 {
90 3 if(KeyState==DOWN)
91 3 {
92 4 KeyState=BeFree;
93 4 bExecute=DONT;
94 4 DownCT=0; //按键持续按下的计时清零
95 4 }
96 3 }
97 2 else
98 2 DBCount--;
99 2 }
100 1 else
101 1 {
102 2 if(DBCount==1)
103 2 {
104 3 if(bExecute==DONT)
105 3 {
106 4 bExecute=DONE;
107 4 KeyCode=~(KCodeCrrt|0x83);
108 4 }
109 3 else if(DownCT>SetupOverCode)
110 3 {
111 4 DownCT=SetupOverCode;
112 4 if(KeyKind==Continued)
113 4 KeyCode=KCodeCrrt;
114 4 }
115 3 KeyState=DOWN;
116 3 DownCT++;
117 3 }
C51 COMPILER V7.50 SPOTWELDER 11/07/2005 02:10:44 PAGE 3
118 2 else if(DBCount<1) //消抖
119 2 DBCount++;
120 2 }
121 1 }
122 /******************************************************************************
123 键盘处理程序
124 ******************************************************************************/
125 #define RUN 11
126 #define FUNC 22
127 #define runing 1
128 #define stop 0
129 unsigned int prrz_buf;
130 unsigned char Program;
131 unsigned char position;
132
133 bit flag_func; //作为进入功能设置的标志
134 bit flag_run; //作为向24C01 发送数据的标志
135 bit current_state;
136
137 void DispData_Dispose(void);
138 void Write_24Cxx(void);
139 /******************************/
140 uint DEC_DSP(uchar digital, uint minuend)
141 {
142 1 if(digital==100)
143 1 {
144 2 if(minuend<100)
145 2 minuend+=900;
146 2 else
147 2 minuend-=100;
148 2 }
149 1 else if(digital==10)
150 1 {
151 2 if((minuend%100)<10)
152 2 minuend+=90;
153 2 else
154 2 minuend-=10;
155 2 }
156 1 else if(digital==1)
157 1 {
158 2 if((minuend%10)<1)
159 2 minuend+=9;
160 2 else
161 2 minuend-=1;
162 2 }
163 1 return(minuend);
164 1 }
165
166
167 /******************************/
168 void Key_Server(void)
169 {
170 1 uchar i;
171 1
172 1 switch(KeyCode)
173 1 {
174 2 case 0x04: //work mode
175 2 DeleteKeyCode();
176 2 if(bcheck){bcheck=0;break;}
177 2 if(Program==FUNC)
178 2 {
179 3 if(WorkMode==MAN)
C51 COMPILER V7.50 SPOTWELDER 11/07/2005 02:10:44 PAGE 4
180 3 {
181 4 bMode_led=0;
182 4 WorkMode=AUTO;
183 4 }
184 3 else
185 3 {
186 4 bMode_led=1;
187 4 WorkMode=MAN;
188 4 }
189 3 do{i=ISendStr(AT24WC01,10,&WorkMode,1);
190 4 }while(!i);
191 3 }
192 2 break;
193 2 case 0x08: //dec
194 2 DeleteKeyCode();
195 2 if(bcheck){bcheck=0;break;}
196 2 if(Program==FUNC)
197 2 {
198 3 if(position==0)
199 3 PrrzTime=DEC_DSP(100,PrrzTime);
200 3 else if(position==1)
201 3 PrrzTime=DEC_DSP(10,PrrzTime);
202 3 else if(position==2)
203 3 PrrzTime=DEC_DSP(1,PrrzTime);
204 3 else if(position==3)
205 3 WeldTime=DEC_DSP(100,WeldTime);
206 3 else if(position==4)
207 3 WeldTime=DEC_DSP(10,WeldTime);
208 3 else if(position==5)
209 3 WeldTime=DEC_DSP(1,WeldTime);
210 3 else if(position==6)
211 3 WorkCount=DEC_DSP(100,WorkCount);
212 3 else if(position==7)
213 3 WorkCount=DEC_DSP(10,WorkCount);
214 3 else if(position==8)
215 3 WorkCount=DEC_DSP(1,WorkCount);
216 3 else if(position==9)
217 3 PrrzLTime=DEC_DSP(100,PrrzLTime);
218 3 else if(position==10)
219 3 PrrzLTime=DEC_DSP(10,PrrzLTime);
220 3 else if(position==11)
221 3 PrrzLTime=DEC_DSP(1,PrrzLTime);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -