📄 datainput.lst
字号:
C51 COMPILER V7.06 DATAINPUT 07/31/2007 21:14:25 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE DATAINPUT
OBJECT MODULE PLACED IN datainput.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE pc_keyboard\datainput.c BROWSE DEBUG OBJECTEXTEND PRINT(.\datainput.lst) OB
-JECT(datainput.obj)
stmt level source
1 ////////////////////////////////////////////////////////////////////////
2 // 键盘识别源文件
3 // 功能:将获得的键盘扫描码放到全局变量的InputData中
4
5 #include "at89x52.h"
6 #include "common.h"
7 #include "dataInput.h"
8 #include "display/display.h"
9
10 ///////////////////////////////////////////////////////////////////////
11 // 如果需要PC键盘模块
12
13 #ifdef NEED_PC_KEYBORD
14
15 ////////////////////////////////////////////////////////////////////////
16 unsigned char Buffer[11]; //接受数据缓冲区
17 unsigned char InputDataBuffer=0x00; //实际数据暂存区,用于组装数据时候
18 unsigned char DataBitPtr=0x00; //接受数据位指针
19 BOOL gSymboleE0=0x00;
20 BOOL SymboleF0=0x00;
21
22 //////////////////////////////////////////////////////////////////////////
23 // 数据校验
24 // 校验正确返回1
25 // 否则返回0
26 BOOL CheckData(void)
27 {
28 1 ACC=InputDataBuffer;
29 1 if(~P==Buffer[9]) //检测累加器中1的个数
30 1 {
31 2 return TRUE;
32 2 }
33 1 else
34 1 {
35 2 return FALSE;
36 2 }
37 1 }
38
39 ////////////////////////////////////////////////////////////////////////
40 // 组合数据
41 // 参数:无
42 // 返回值:无
43 // 功能:将缓冲区中数据组合成unsigned char型数据并且调用ExchangeCode()函数
44 // 为显示作准备
45 void CombinData(void)
46 {
47 1 unsigned char lInputData=0x00;
48 1 unsigned char CircleTemp; //移位循环变量
49 1 InputDataBuffer=0; //数据暂存区
50 1
51 1 ////////////////////////////////////////////////////////////////////
52 1 // 通过移位的方法将数据进行整合
53 1 for(CircleTemp=0x00;CircleTemp<0x08;CircleTemp++)
54 1 {
C51 COMPILER V7.06 DATAINPUT 07/31/2007 21:14:25 PAGE 2
55 2 InputDataBuffer=InputDataBuffer+(Buffer[CircleTemp+1]<<CircleTemp);
56 2 }
57 1 ///////////////////////////////////////////////////////////////////
58 1 // 数据写入显示缓冲区
59 1 if(CheckData())
60 1 {
61 2 if(InputDataBuffer!=0xE0&&InputDataBuffer!=0xF0)
62 2 {
63 3 lInputData=InputDataBuffer;
64 3 Print(lInputData);
65 3 }
66 2
67 2 if(InputDataBuffer==0xE0)
68 2 {
69 3 gSymboleE0=1;
70 3 return;
71 3 }
72 2
73 2 if(gSymboleE0==1&&lInputData==0xF0)
74 2 {
75 3 SymboleF0=1;
76 3 return;
77 3 }
78 2 else if(gSymboleE0==1&&SymboleF0==1)
79 2 {
80 3 lInputData=InputDataBuffer; //数据接受
81 3 Print(lInputData);
82 3 gSymboleE0=0;
83 3 SymboleF0=0;
84 3 return;
85 3 }
86 2 else if(gSymboleE0==1&&SymboleF0==0)
87 2 {
88 3 lInputData=InputDataBuffer; //数据接受
89 3 Print(lInputData);
90 3 }
91 2 }
92 1 else
93 1 {
94 2 return ;
95 2 }
96 1 }
97
98 /////////////////////////////////////////////////////////////////////////
99 // 接受数据中断服务函数
100 // 通过外部跳变电平引发外部中断
101 // 接受数据线上的数据,放数据接收完成后组装数据
102
103 void RecData(void) interrupt 0
104 {
105 1
106 1 Buffer[DataBitPtr]=DataLine;
107 1 DataBitPtr++;
108 1 if(DataBitPtr==11)
109 1 {
110 2 CombinData(); //组装数据
111 2 DataBitPtr=0; //复位数据指针
112 2 }
113 1 }
114
115
116 ///////////////////////////////////////////////////////////////////////////////////
C51 COMPILER V7.06 DATAINPUT 07/31/2007 21:14:25 PAGE 3
117 // 文件结束
118 #endif
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 217 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 15 1
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 + -