📄 key.lst
字号:
C51 COMPILER V8.02 KEY 06/17/2010 09:51:57 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE KEY
OBJECT MODULE PLACED IN Key.OBJ
COMPILER INVOKED BY: D:\处理软件\keil\C51\BIN\C51.EXE Key.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /******************************************************************
2 本程序只供学习使用,未经作者许可,不得用于其它任何用途
3
4 欢迎光临天祥电子 www.txmcu.cn
5
6 *******************************************************************/
7
8
9
10 #include "Key.h"
11 #include "MyType.h"
12 #include "config.h"
13
14 volatile uint8 idata KeyCurrent,KeyOld,KeyNoChangedTime;
15 volatile uint8 idata KeyPress;
16 volatile uint8 idata KeyDown,KeyUp,KeyLast;
17
18 volatile uint8 KeyCanChange;
19
20 extern unsigned char s6,s7,s10,s11,s14,s15,s,again1,again2,again3,again4,again5,again6,pp,qq,rr,ss,tt,uu;
21
22 /********************************************************************
23 函数功能:定时器0初始化,用来做键盘扫描。
24 入口参数:无。
25 返 回:无。
26 备 注:无。
27 ********************************************************************/
28 void InitTimer0(void)
29 {
30 1 TMOD&=0xF0;
31 1 TMOD|=0x01;
32 1 ET0=1;
33 1 TR0=1;
34 1 }
35 /*******************************************************************/
36
37
38 /********************************************************************
39 函数功能:键盘初始化
40 入口参数:无。
41 返 回:无。
42 备 注:无。
43 ********************************************************************/
44 void InitKeyboard(void)
45 {
46 1 KeyIO=0xFF; //键盘对应的口设置为输入状态
47 1 KeyPress=0; //无按键按下
48 1 KeyNoChangedTime=0;
49 1 KeyOld=0;
50 1 KeyCurrent=0;
51 1 KeyLast=0;
52 1 KeyDown=0;
53 1 KeyUp=0;
54 1 InitTimer0(); //初始化定时器
55 1 KeyCanChange=1; //允许键值改变
C51 COMPILER V8.02 KEY 06/17/2010 09:51:57 PAGE 2
56 1 }
57 /*******************************************************************/
58
59 /********************************************************************
60 函数功能:定时器0中断处理。
61 入口参数:无。
62 返 回:无。
63 备 注:22.1184M晶体约5ms中断一次。
64 ********************************************************************/
65 void Timer0Isr(void) interrupt 1
66 {
67 1 //定时器0重装,定时间隔为5ms,加15是为了修正重装所花费时间
68 1 //这个值可以通过软件仿真来确定,在这里设置断点,调整使两次运行
69 1 //时间差刚好为5ms即可。
70 1 TH0=(65536-Fclk/1000/12*5+15)/256;
71 1 TL0=(65536-Fclk/1000/12*5+15)%256; //
72 1
73 1 if(!KeyCanChange)return; //如果正在处理按键,则不再扫描键盘
74 1
75 1 P3|=0x37;
76 1 lcden=0;
77 1 rs=1;
78 1 if(rxd==0)
79 1 {
80 2 s6=1;
81 2 again3=1;
82 2 }
83 1 if(rxd&again3)
84 1 {
85 2 again3=0;
86 2 rr=1;
87 2 }
88 1 if(txd==0)
89 1 {
90 2 s10=1;
91 2 again5=1;
92 2 }
93 1 if(again5&txd)
94 1 {
95 2 again5=0;
96 2 tt=1;
97 2 }
98 1 if(csda==0)
99 1 {
100 2 s14=1;
101 2 again1=1;
102 2 }
103 1 if((csda==1)&(again1==1))
104 1 {
105 2 pp=1;
106 2 again1=0;
107 2 }
108 1 lcden=1;
109 1 rs=0;
110 1 if(rxd==0)
111 1 {s7=1;
112 2 again4=1;
113 2 }
114 1 if(rxd&again4)
115 1 {
116 2 again4=0;
117 2 ss=1;
C51 COMPILER V8.02 KEY 06/17/2010 09:51:57 PAGE 3
118 2 }
119 1 if(txd==0)
120 1 {
121 2 s11=1;
122 2 again6=1;
123 2 }
124 1 if(again6&txd)
125 1 {
126 2 again6=0;
127 2 uu=1;
128 2 }
129 1 if(csda==0)
130 1 {
131 2 s15=1;
132 2 again2=1;
133 2 }
134 1 if((csda==1)&(again2==1))
135 1 {
136 2 again2=0;
137 2 qq=1;
138 2 }
139 1
140 1 s=s6|s7|s10|s11|s14|s15|pp|qq|rr|ss|tt|uu;
141 1 }
142 /*******************************************************************/
143
144
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 281 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 ----
IDATA SIZE = 7 ----
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 + -