📄 zls_001.lst
字号:
C51 COMPILER V7.07 ZLS_001 05/27/2004 22:22:57 PAGE 1
C51 COMPILER V7.07, COMPILATION OF MODULE ZLS_001
OBJECT MODULE PLACED IN F:\ZLS_001\ZLS_001.OBJ
COMPILER INVOKED BY: d:\lope\kc51\bin\c51.exe F:\ZLS_001\ZLS_001.C SMALL OT(0,SIZE) SB OR DB OE
stmt level source
*** WARNING C500 IN LINE 1 OF F:\ZLS_001\ZLS_001.C: MISSING DEVICE (SECURITY KEY NOT FOUND)
1
2 #include <reg52.h>
3 #include<intrins.h>
4 bit free;
5 bit keydown;
6 sbit MAX =P1^0;
7 sbit MID =P0^1;
8 sbit MIN =P0^2;
9 sbit CS =P0^3;
10 sbit CLK =P0^4;
11 sbit DATA=P0^5;
12 sbit WARN=P0^6;
13 sbit ZERO=P0^7;//过零检测脚
14 /*键盘扫描端口*/
15 sbit D0 =P3^0;//行扫描线
16 sbit D1 =P3^1;
17 sbit D2 =P3^2;
18 sbit D3 =P3^3;
19 sbit D4 =P3^4;
20 sbit CS0=P3^5;//列扫描线
21 sbit CS1=P3^6;
22 sbit CS2=P3^7;
23 /*检测/控制端口*/
24 sbit REL_UPDW=P2^0;
25 sbit REL_C =P2^1;
26 sbit P_UPDW =P2^2;
27 sbit TRI_C =P2^3;
28 sbit WDI =P2^4;
29 sbit Q_DW =P2^5;
30 sbit Q_UP =P2^6;
31 sbit T_UPDW =P2^7;
32
33 sbit PD =P0^0;
34 sbit PC =P0^1;
35 sbit PB =P0^2;
36 sbit PA =P0^3;
37 sbit XXC =P0^4;
38 sbit SXC =P0^5;
39 sbit TT1 =P0^6;
40 sbit TT2 =P0^7;
41 unsigned char key;
42 unsigned char keynumber;
43
44 #define NOP() _nop_()
45
-
-
46
47 void processknock();
48 void whith();
49 void top();
50 void vibrasion();
51 void roll();
52 void mode();
C51 COMPILER V7.07 ZLS_001 05/27/2004 22:22:57 PAGE 2
53 void fixposition();
54 void bottom();
55 void strength();
56 void speed();
57 void power();
58 void timer();
59 void fullautomatic();
60 void rising();
61 void descent();
62 void(*pfunction)(); //------------函数指针
63
64 void(*code tab[])()={ processknock, whith, top, vibrasion, roll,
65 mode, fixposition,bottom,strength, speed,
66 power,timer,fullautomatic, rising, descent
67 };//------------函数数组
68 /*----------------------------WATCHDOG-------------------------------------------------------*/
69 void watchdog()
70 {
71 1 WDI=0;
72 1 NOP();NOP();
73 1 WDI=1;
74 1 NOP();NOP();
75 1 WDI=0;
76 1 }
77 /*-----------------------------------delay()-------------------------*/
78 void delay(unsigned char m,unsigned char n)
79 {
80 1 unsigned char i,j;
81 1 watchdog();
82 1 for(i=0;i<m;i++)
83 1 { for(j=0;j<n;j++);}
84 1 }
85
86 /*-------------------------Key Scan Procedure-----------------------*/
87 unsigned char keyscan()
88 {
89 1 unsigned char scancode;
90 1 unsigned char keycode;
91 1 P3=0xff; //初始化
92 1 scancode=0xdf; //置扫描码
93 1 while(scancode!=0xff)
94 1 {
95 2 P3 =scancode; //输入扫描码 ,扫描CS0列
96 2 keycode =P3; //读键值
97 2 if((keycode&0x1f)!=0x1f)
98 2 delay(10,10);
99 2 if((keycode&0x1f)!=0x1f) //去抖
100 2 {
101 3 free=1;keydown=1;
102 3 keynumber=keycode;//扫描到按下的键,退出扫描
103 3 break;
104 3 }
105 2 scancode=(keycode<<1)|0x1f; //更新扫描码,左移一位
106 2
107 2 }
108 1
109 1 while((P3&0x1f)!=0x1f)//等待按键释放
110 1 {
111 2 TR0=1;
112 2 while(!TF0); //50ms定时
113 2 TR0=0;
114 2 TH0=0XA5;TL0=0X67;
C51 COMPILER V7.07 ZLS_001 05/27/2004 22:22:57 PAGE 3
115 2 break; //超过50MS为连续键
116 2 }
117 1 if((P3&0x1f)==0x1f)delay(2,10);
118 1 if((P3&0x1f)==0x1f) //键释放及按下标志,按下为1,释放为0
119 1 {
120 2 free=0;keydown=0;
121 2 }
122 1
123 1 keynumber=~keynumber;//键值取反,获取简明的最终键码值
124 1 switch(keynumber)
125 1 {
126 2 case 0x21 :NOP();
127 2 return (key=0); //揉捏/敲打
128 2 break;
129 2 case 0x22 :NOP();
130 2 return(key=1); //宽度调节
131 2 break;
132 2 case 0x24 :NOP();
133 2 return(key=2); //上
134 2 break;
135 2 case 0x28 :NOP();
136 2 return(key=3); //捶击开关
137 2 break;
138 2 case 0x30 :NOP();
139 2 return(key=4); //滚压
140 2 break;
141 2 case 0x41 :NOP();
142 2 return(key=5); //模式
143 2 break;
144 2 case 0x42 :NOP();
145 2 return(key=6); //定位
146 2 break;
147 2 case 0x44 :NOP();
148 2 return(key=7); //下
149 2 break;
150 2 case 0x48 :NOP();
151 2 return(key=8); //强度
152 2 break;
153 2 case 0x50 :NOP();
154 2 return(key=9); //速度
155 2 break;
156 2 case 0x81 :NOP();
157 2 return(key=10); //总开关
158 2 break;
159 2 case 0x82 :NOP();
160 2
161 2 return(key=11); //定时
162 2 break;
163 2
164 2 case 0x84 :NOP();
165 2 return(key=12); //全?
166 2 break;
167 2 case 0x88 :NOP();
168 2 return(key=13); //上升
169 2 break;
170 2
171 2 case 0x90:NOP();
172 2 return(key=14); //下降
173 2 break;
174 2 default:NOP();
175 2 return(key=16);
176 2 break;
C51 COMPILER V7.07 ZLS_001 05/27/2004 22:22:57 PAGE 4
177 2 }
178 1 }
179 /*-----------------取函数--------------------------------*/
180 void takefunc()
181 {
182 1 pfunction=tab[key];
183 1 if(key!=16)
184 1 (*pfunction)();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -