?? zifu.lst
字號:
C51 COMPILER V7.06 ZIFU 10/10/2006 12:00:07 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE ZIFU
OBJECT MODULE PLACED IN zifu.OBJ
COMPILER INVOKED BY: D:\keil 7.06\C51\BIN\C51.EXE zifu.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <reg51.h>
2
3
4 #define uint unsigned int
5 #define uchar unsigned char
6
7 #define Ese 0x76 //清屏指令
8 #define Bksp 0x66 //刪除一個指令
9 #define Cplk 0x58 //雙鍵值區(qū)分
10
11
12
13 sbit Clk=P3^2; //時鐘線接在P32
14 sbit Dat=P3^0; //數(shù)據(jù)線接在P30
15
16 uchar BUF =0; //中斷完成標(biāo)志
17 uchar Degree =0; //中斷次數(shù)
18 uchar Data =0; //句路數(shù)據(jù)
19 uchar i =0; //采集到的數(shù)據(jù)在數(shù)組中的位置
20 uchar Update =0; //數(shù)據(jù)更新標(biāo)志
21 uchar Caps_Lock =0; //雙鍵值區(qū)分標(biāo)志位
22 char Key_Data[32] ; //得到的鍵盤輸入值數(shù)組
23
24 void Dispose(void);
25
26 void Get_Date(void);
27 /*=====================
28 中斷函數(shù),負(fù)責(zé)采集數(shù)據(jù)
29 =======================*/
30 void Get_data(void) interrupt 0 using 1
31 {
32 1 if((Degree>11)&&(Degree<20))
33 1 {
34 2 Data=Data>>1;
35 2 if(Dat){Data|=0x80;};
36 2 } //只用采集到的中間11位的八位數(shù)據(jù)
37 1
38 1 Degree++;
39 1 if(Degree>=33) //32次后重新計數(shù)
40 1 {
41 2 Degree=0;
42 2 BUF = 1; //進(jìn)行數(shù)據(jù)處理,只在中斷中得到數(shù)據(jù),不用等待
43 2 }
44 1 }
45
46 /*=====================================
47 數(shù)據(jù)/指令處理函數(shù),處理得到的數(shù)據(jù)/指令
48 ======================================*/
49
50 void Dispose(void)
51 {
52 1 uchar temp ;
53 1 switch(Data) //判斷指令的輸入
54 1 {
55 2 case 0x76 :
C51 COMPILER V7.06 ZIFU 10/10/2006 12:00:07 PAGE 2
56 2 //Write_ZL(0x01) ;
57 2 for(temp=0;temp<32;temp++) Key_Data[temp] = 0 ;
58 2 i=0;
59 2 P2=Ese ;
60 2 break ; //清屏,數(shù)組清0
61 2
62 2 case 0x66:
63 2 i-- ; Update=0;
64 2 Key_Data[i] = 0 ; //刪除剛輸入的數(shù)據(jù)
65 2 Update = 1; //數(shù)據(jù)更新標(biāo)志
66 2 break ;
67 2
68 2 case 0x58 :
69 2 Caps_Lock^= 1 ; //雙鍵值區(qū)分標(biāo)志位改變
70 2 break ;
71 2
72 2 default :Get_Date();
73 2 //處理得到的字符碼值
74 2 }
75 1
76 1 }
77
78 /*=================
79 處理得到的字符數(shù)據(jù)
80 ==================*/
81
82 void Get_Date(void)
83 {
84 1
85 1 if(i>=32) i=0 ;
86 1
87 1 switch(Data) //處理得到的字符碼值,轉(zhuǎn)化對應(yīng)的1602碼值
88 1 {
89 2
90 2 case 0x1C: Key_Data[i]='A';break;
91 2 case 0x32: Key_Data[i]='B';break;
92 2 case 0x21: Key_Data[i]='C';break;
93 2 case 0x23: Key_Data[i]='D';break;
94 2 case 0x24: Key_Data[i]='E';break;
95 2 case 0x2B: Key_Data[i]='F';break;
96 2 case 0x34: Key_Data[i]='G';break;
97 2 case 0x33: Key_Data[i]='H';break;
98 2 case 0x43: Key_Data[i]='I';break;
99 2 case 0x3B: Key_Data[i]='J';break;
100 2 case 0x42: Key_Data[i]='K';break;
101 2 case 0x4B: Key_Data[i]='L';break;
102 2 case 0x3A: Key_Data[i]='M';break;
103 2 case 0x31: Key_Data[i]='N';break;
104 2 case 0x44: Key_Data[i]='O';break;
105 2 case 0x4D: Key_Data[i]='P';break;
106 2 case 0x15: Key_Data[i]='Q';break;
107 2 case 0x2D: Key_Data[i]='R';break;
108 2 case 0x1B: Key_Data[i]='S';break;
109 2 case 0x2C: Key_Data[i]='T';break;
110 2 case 0x3C: Key_Data[i]='U';break;
111 2 case 0x2A: Key_Data[i]='V';break;
112 2 case 0x1D: Key_Data[i]='W';break;
113 2 case 0x22: Key_Data[i]='X';break;
114 2 case 0x35: Key_Data[i]='Y';break;
115 2 case 0x1A: Key_Data[i]='Z';break;
116 2 case 0x45: Key_Data[i]='0';break;
117 2 case 0x16: Key_Data[i]='1';break;
C51 COMPILER V7.06 ZIFU 10/10/2006 12:00:07 PAGE 3
118 2 case 0x1E: Key_Data[i]='2';break;
119 2 case 0x26: Key_Data[i]='3';break;
120 2 case 0x25: Key_Data[i]='4';break;
121 2 case 0x2E: Key_Data[i]='5';break;
122 2 case 0x36: Key_Data[i]='6';break;
123 2 case 0x3D: Key_Data[i]='7';break;
124 2 case 0x3E: Key_Data[i]='8';break;
125 2 case 0x46: Key_Data[i]='9';break;
126 2 case 0x29: Key_Data[i]=' ';break;
127 2 case 0x41: Key_Data[i]=',';break;
128 2 case 0x49: Key_Data[i]='.';break;
129 2
130 2 }
131 1 Update=0;
132 1 if(!Caps_Lock)
133 1 Key_Data[i] |= 0x20 ; //Caps_Lock未按下則小寫
134 1
135 1 i++ ; //計數(shù)加一
136 1 Update=1;
137 1 //數(shù)據(jù)更新標(biāo)志
138 1 }
139
140
141 //長延時
142 void Delay400Ms(void)
143 {
144 1 uchar d=5;
145 1 uint j;
146 1 while(d--)
147 1 {
148 2 j=8269;
149 2 while(j--);
150 2 }
151 1 }
152
153
154 void main()
155 {
156 1 uchar m=0;
157 1 IT0=1;
158 1 EA=1;
159 1 EX0=1;
160 1 while(1)
161 1 {
162 2
163 2 if(BUF){Dispose();BUF=0;}
164 2 if(Update)
165 2 {
166 3 for(m=0;m<10;m++){P2=Key_Data[m];Delay400Ms();}
167 3 Update=0;
168 3 }
169 2 }
170 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 710 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 38 1
IDATA SIZE = ---- ----
C51 COMPILER V7.06 ZIFU 10/10/2006 12:00:07 PAGE 4
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -