📄 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 //双键值区分
10
11
12
13 sbit Clk=P3^2; //时钟线接在P32
14 sbit Dat=P3^0; //数据线接在P30
15
16 uchar BUF =0; //中断完成标志
17 uchar Degree =0; //中断次数
18 uchar Data =0; //句路数据
19 uchar i =0; //采集到的数据在数组中的位置
20 uchar Update =0; //数据更新标志
21 uchar Caps_Lock =0; //双键值区分标志位
22 char Key_Data[32] ; //得到的键盘输入值数组
23
24 void Dispose(void);
25
26 void Get_Date(void);
27 /*=====================
28 中断函数,负责采集数据
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位的八位数据
37 1
38 1 Degree++;
39 1 if(Degree>=33) //32次后重新计数
40 1 {
41 2 Degree=0;
42 2 BUF = 1; //进行数据处理,只在中断中得到数据,不用等待
43 2 }
44 1 }
45
46 /*=====================================
47 数据/指令处理函数,处理得到的数据/指令
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 ; //清屏,数组清0
61 2
62 2 case 0x66:
63 2 i-- ; Update=0;
64 2 Key_Data[i] = 0 ; //删除刚输入的数据
65 2 Update = 1; //数据更新标志
66 2 break ;
67 2
68 2 case 0x58 :
69 2 Caps_Lock^= 1 ; //双键值区分标志位改变
70 2 break ;
71 2
72 2 default :Get_Date();
73 2 //处理得到的字符码值
74 2 }
75 1
76 1 }
77
78 /*=================
79 处理得到的字符数据
80 ==================*/
81
82 void Get_Date(void)
83 {
84 1
85 1 if(i>=32) i=0 ;
86 1
87 1 switch(Data) //处理得到的字符码值,转化对应的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++ ; //计数加一
136 1 Update=1;
137 1 //数据更新标志
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)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -