📄 key.lst
字号:
C51 COMPILER V8.02 KEY 06/17/2010 09:51:38 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:38 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|=0x34;
76 1 csda=0;
77 1 if(lcden==0)
78 1 {
79 2 again1=1;
80 2 s14=1;
81 2 }
82 1 if(lcden&again1)
83 1 {
84 2 pp=1;
85 2 again1=0;
86 2 }
87 1 if(rs==0)
88 1 {
89 2 s15=1;
90 2 again2=1;
91 2 }
92 1 if(rs&again2)
93 1 {
94 2 again2=0;
95 2 qq=1;
96 2 }
97 1
98 1 s=s14|s15|pp|qq;
99 1 }
100 /*******************************************************************/
101
102
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 121 ----
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 + -