📄 key.lst
字号:
C51 COMPILER V7.00 KEY 02/08/2009 09:03:38 PAGE 1
C51 COMPILER V7.00, COMPILATION OF MODULE KEY
OBJECT MODULE PLACED IN key.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\c51.exe key.c DB OE
stmt level source
1 //-----------------------------------------------------------------------------
2 //实验目的:熟悉2*2键盘操作.按键后会在液晶屏上
3 //显示所按下的键号,如按S1键,在液晶上显示S1.
4 //-----------------------------------------------------------------------------
5 // Includes
6 //-----------------------------------------------------------------------------
7 #include <c8051f350.h>
8 #include <INTRINS.H>
9 #include <stdio.h>
10 sbit key1=P1^1;
11 sbit key2=P1^3;
12 sbit key3=P1^4;
13 sbit key4=P1^5;
14 unsigned long q;
15
16 //--------------------------------
17 void YJ_Init(void);
18 void Write_CHAR(unsigned char yjchar);
19 unsigned char key_in(void);
20 //-----------------------------------------------------
21 void delay(void)
22 {
23 1 int a=1000;
24 1 while(a!=0)
25 1 {
26 2 a--;
27 2 }
28 1 }
29
30 /*----------------------------------------------------*/
31 //按键连接到p1.1、p1.3、p1.4、P1.5,均为开漏输出
32 unsigned char key_in(void)
33 { XBR0 = 0x00;
34 1 P1=0xff;
35 1
36 1 // P1=0x72;
37 1 if(key1==0)
38 1 {
39 2 key1=1;
40 2 delay();//延时
41 2 if(key1==0)
42 2 {
43 3
44 3 while(key1==0);
45 3 XBR0 = 0x02;
46 3 return(0x31);//返回字符"1"表示按键S1按下
47 3 }
48 2 }
49 1
50 1 if(key2==0)
51 1 {
52 2 key2=1;
53 2 delay();//延时
54 2 if(key2==0)
55 2 {
C51 COMPILER V7.00 KEY 02/08/2009 09:03:38 PAGE 2
56 3 while(key2==0);
57 3 XBR0 = 0x02;
58 3 return(0x32);//返回字符"2"表示按键S2按下
59 3 }
60 2 }
61 1
62 1 if(key3==0)
63 1 {
64 2 key3=1;
65 2 delay();//延时
66 2 if(key3==0)
67 2 {
68 3 while(key3==0);
69 3 XBR0 = 0x02;
70 3 return(0x33);//返回字符"3"表示按键S3按下
71 3 }
72 2 }
73 1
74 1 if(key4==0)
75 1 {
76 2 key4=1;
77 2 delay();//延时
78 2 if(key4==0)
79 2 {
80 3 while(key4==0);
81 3 XBR0 = 0x02;
82 3 return(0x34);//返回字符"4"表示按键S4按下
83 3 }
84 2 }
85 1 XBR0 = 0x02;
86 1 return(0);//返回0,表示没有按键按下
87 1 }
88
89 //---------------------------------------------
90 void main(void)
91 {
92 1 unsigned char data1;
93 1
94 1 PCA0MD &= ~0x40; // WDTE = 0 (watchdog timer enable bit)
95 1 OSCICN |= 0x03; // Set internal oscillator to highest
96 1 // setting (24500000)
97 1 P0SKIP = 0x7E;
98 1
99 1
100 1 XBR0 = 0x00; // XBAR0: Initial Reset value
101 1 XBR1 = 0x40; // XBAR1: Initial Reset value
102 1
103 1
104 1
105 1 while(1)
106 1 {
107 2 data1=key_in(); //读按键
108 2 if(data1!=0) //有按键按下,显示对应的按键
109 2 {
110 3 YJ_Init(); //LCD初始化
111 3 //准备送数据
112 3 for(q=0;q<1000;q++);
113 3 Write_CHAR(0x54);
114 3 Write_CHAR(data1); //控制LCD
115 3 for(q=0;q<1000;q++);
116 3
117 3 }
C51 COMPILER V7.00 KEY 02/08/2009 09:03:38 PAGE 3
118 2 }
119 1
120 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 249 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 4 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 + -