?? panelc.lst
字號:
C51 COMPILER V6.12 PANELC 04/02/2007 09:20:50 PAGE 1
C51 COMPILER V6.12, COMPILATION OF MODULE PANELC
OBJECT MODULE PLACED IN .\panelC.OBJ
COMPILER INVOKED BY: j:\program files\Keil\C51\BIN\C51.EXE .\panelC.c DEBUG OBJECTEXTEND
stmt level source
1 #include <panel.h>
2 #include <1621.h>
3 #include<stdlib.h>
4
5 void InitSystem ()
6 {
7 1 WDT_CONTR = 0x00;//關掉看門狗電路
8 1 EA = 0; //關閉中斷
9 1 ES = 0;
10 1 //配置串口
11 1 SCON = 0x50; //8位數據位,無奇偶校驗
12 1 T2CON = 0x34;//由T2作為波特率發生器
13 1 RCAP2H = 0xff; //時鐘11.0592 9600波特率
14 1 RCAP2L = 0xdb;
15 1 //配置T1,count=909090,TI:16位工作模式
16 1
17 1 //
18 1 EA = 1;
19 1 ES = 1;
20 1 }
21
22 void ReadSwStatus()
23 {
24 1 unsigned char sw,sw_copy;
25 1 sw = P2;
26 1 sw_copy = sw;
27 1 if( sw && 0x01)
28 1 {
29 2 #define baurate_1200;
30 2 }
31 1 else {
32 2 #define baurate_9600;
33 2 }
34 1
35 1 sw = sw_copy;
36 1 if(sw && 0x02)
37 1 {
38 2 #define command2;
39 2 }
40 1 else{
41 2 #define command1;
42 2 }
43 1 }
44
45
46 void delay_ms(unsigned int i)
47 {
48 1 unsigned int j;
49 1 unsigned int n;
50 1 for(j=0;j<i;j++)
51 1 {
52 2 for(n=0;n<255;n++);
53 2 }
54 1 }
55
C51 COMPILER V6.12 PANELC 04/02/2007 09:20:50 PAGE 2
56
57 unsigned char JudgeKey(void)
58 {
59 1 while(1)
60 1 {
61 2 P1=0;
62 2 }
63 1 P0=0x1f;//初始化行列控制端口
64 1 while(!(PIN6||PIN7||PIN8));
65 1 //start debug
66 1 P3=0;
67 1 //end debug
68 1 delay_ms(100);
69 1 if(!(PIN6||PIN7||PIN8))
70 1 return 1;
71 1 else
72 1 return 0;
73 1
74 1 //LightPanel();
75 1 }
76
77 void LightPanel(void)
78 {
79 1 P0=0x00;
80 1 LIGHT_PANEL=1;
81 1 //delay_ms(100);//10ms
82 1 //LIGHT_PANEL=0;
83 1 }
84
85 void random()
86 {
87 1 int i,j;
88 1 int num[]={0,1,2,3,4,5,6,7,8,9};
89 1 //SMG10 SMG1 SMG2 SMG3 SMG4 SMG5 SMG6 SMG7 SMG8 SMG9
90 1 int rn[10];
91 1 //int t;
92 1 srand((unsigned)t);//time(&t));
93 1 for(i=0;i<10;i++)
94 1 {
95 2 rn[i]=rand()%10;
96 2 for(j=0;j<i;j++)
97 2 {
98 3 if(rn[i]==rn[j]){i--;j=i;}
99 3 }
100 2 }
101 1 for(i=0;i<10;i++)
102 1 {key_num[i] = num[rn[i]];}
103 1 t++;
104 1
105 1 }
106
107 void DisplayNum(void)
108 {
109 1 unsigned char ADDr[]={ADDr_SMG10,ADDr_SMG1,ADDr_SMG2,ADDr_SMG3,ADDr_SMG4,
110 1 ADDr_SMG5,ADDr_SMG6,ADDr_SMG7,ADDr_SMG8,ADDr_SMG9};
111 1 unsigned char i;
112 1 Init_1621();
113 1 LCDon();
114 1 random();
115 1 for(i=0;i<10;i++)
116 1 {
117 2 Write_1621(ADDr[i],seg[key_num[i]]);
C51 COMPILER V6.12 PANELC 04/02/2007 09:20:50 PAGE 3
118 2 }
119 1 }
120 void DisplaySign(void)
121 {
122 1 T1_display(); //顯示標志T1(正序,亂序,更正,確認)
123 1 T4_display();//顯示標志T4(請輸入密碼)
124 1 }
125
126 /*1 P00 -----10--------11 10:正序鍵 11:亂序鍵
127 | | |
128 2 P01 -----1----2----3
129 | | |
130 3 P02 -----4----5----6
131 | | |
132 4 P03 -----7----8----9
133 | | |
134 5 P04 -----12---0----13 12:更正鍵 13:確認鍵
135 | | |
136 6 P05 ----- | |
137 | |
138 7 P06 ---------- |
139 |
140 8 P07 -------------- */
141 //unsigned char key_code[]={0x50,0x22,0x42,0x82,0x24,0x44,0x84,0x28,0x48,0x88,0x21,0x81,0x03,0x09};
142 //對應鍵值 0 1 2 3 4 5 6 7 8 9 10 11 12 13
143 //unsigned char ksp[]={0x01,0x02,0x04,0x08,0x10};
144 //unsigned char cnt=0;
145 unsigned char keypad_scan(void)
146 {
147 1 unsigned char key,i;
148 1 P0=0x1f;
149 1 while (P0==0x1f);
150 1 for(i=0;i<5;i++)
151 1 {
152 2 P0=ksp[i];
153 2 while(P0==ksp[i]);
154 2 delay_ms(10);
155 2 key=P0;
156 2 if(key!=ksp[i])
157 2 {
158 3 return(key);
159 3 }
160 2 P0=0x00;
161 2
162 2 }
163 1
164 1 }
165 // 檢查是否有按鍵按下
166 unsigned char GetKey(void)
167 {
168 1 char temp,i;
169 1 temp=keypad_scan();
170 1 for (i=0;i<14;i++)
171 1 {
172 2 if(temp==key_code[i]) return(i);
173 2 }
174 1 }
175
176
177 void DisplayToken(void)
178 {
179 1 unsigned char SIGN_copy;
C51 COMPILER V6.12 PANELC 04/02/2007 09:20:50 PAGE 4
180 1
181 1
182 1 if(GetKey()>=0&&GetKey()<9)
183 1 {
184 2
185 2 if (cnt==0)
186 2 {
187 3 SIGN=0x80;
188 3 SIGN_copy=SIGN;
189 3 }
190 2 else if(cnt>0&&cnt<4)
191 2 {
192 3 SIGN>>=1;
193 3 SIGN|=SIGN_copy;
194 3 SIGN_copy=SIGN;
195 3 }
196 2 else if (cnt==4)
197 2 {
198 3 SIGN=0xf1;
199 3 SIGN_copy=SIGN;
200 3 }
201 2 else
202 2 {
203 3 SIGN<<=1;
204 3 SIGN|=SIGN_copy;
205 3 SIGN_copy=SIGN;
206 3 }
207 2
208 2 sbuf[cnt]=key_num[GetKey()];
209 2 cnt++;
210 2 Write_1621(ADDr_SIGN,SIGN);
211 2 }
212 1 else if(GetKey()==10);
213 1 else if(GetKey()==11);
214 1 else if(GetKey()==13);
215 1 else if(GetKey()==12);
216 1 {
217 2 cnt--;
218 2 if(cnt>=0&&cnt<4)
219 2 {
220 3 SIGN<<=cnt;
221 3 SIGN_copy=SIGN;
222 3 }
223 2 else if (cnt==4)
224 2 {
225 3 SIGN^=0x01;
226 3 }
227 2 else if (cnt==5)
228 2 {
229 3 SIGN^=0x02;
230 3 }
231 2 else if (cnt==6)
232 2 {
233 3 SIGN^=0x04;
234 3 }
235 2 else if (cnt==7)
236 2 {
237 3 SIGN^=0x08;
238 3 }
239 2
240 2 Write_1621(ADDr_SIGN,SIGN);
241 2 }
C51 COMPILER V6.12 PANELC 04/02/2007 09:20:50 PAGE 5
242 1
243 1 }
244
245 unsigned char ReEnter(void)
246 {
247 1 if (cnt>8)
248 1 {
249 2 cnt=0;//清除數組保存過的數據
250 2 Write_1621(ADDr_SIGN,0x00);
251 2 return 1;
252 2 }
253 1 else
254 1 return 0;
255 1 }
256
257 void Send_Byte(unsigned char byte)
258 {
259 1 TI =0;
260 1 SBUF = byte;
261 1 while(TI == 0);
262 1 TI = 0;
263 1 }
264
265 void TranReceive(void)
266 {
267 1 unsigned char i;
268 1 for(i=0;i<(cnt-1);i++)
269 1 {
270 2 Send_Byte(sbuf[i]);
271 2 }
272 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 727 ----
CONSTANT SIZE = 30 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 54
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -