📄 main.lst
字号:
C51 COMPILER V7.50 MAIN 11/21/2007 12:21:47 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: f:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <stdio.h>
2 //#include <reg51.h>
3 #include <absacc.h>
4 #include <intrins.h>
5 #include "me.h"
6 #include "LCD1602.h"
7 unsigned char code ASCII[] ="0123456789ABCDEF";
8
9 #define key0 0x12
10 #define key1 0x81
11 #define key2 0x82
12 #define key3 0x84
13 #define key4 0x41
14 #define key5 0x42
15 #define key6 0x44
16 #define key7 0x21
17 #define key8 0x22
18 #define key9 0x24
19 #define keym1 0x88
20 #define keym2 0x48
21 #define keym3 0x28
22 #define keym4 0x18 //确定
23 #define keymx 0x11 //*
24 #define keym_ 0x14 //#
25
26 void Delay(int x)
27 {
28 1 int i,j;
29 1 for(j=0;j<x;j++)
30 1 {
31 2 for(i=0;i<250;i++);
32 2 }
33 1 }
34
35 /*键盘扫描函数*/
36 uchar keyscan(void)
37 {
38 1 uchar scancode ,tmpcode;
39 1 P1=0xf0;
40 1 if((P1&0xf0)!=0xf0)
41 1 {
42 2 Delay(20);
43 2 if((P1&0xf0)!=0xf0)
44 2 {
45 3 scancode=0xfe;
46 3 while((scancode&0x10)!=0)
47 3 {
48 4 P1=scancode;
49 4 if((P1&0xf0)!=0xf0)
50 4 {
51 5 tmpcode=(P1&0xf0)|0x0f;
52 5 return((~scancode)+(~tmpcode));
53 5 }
54 4 else
55 4 {
C51 COMPILER V7.50 MAIN 11/21/2007 12:21:47 PAGE 2
56 5 scancode=(scancode<<1)|0x01;
57 5 }
58 4 }
59 3 }
60 2 }
61 1 return (0);
62 1 }
63 uchar newKey;
64 bit KeyFlag=0;
65
66 void Key_proess(void)
67 {
68 1
69 1 // static unsigned char dispbit=0; //显示的位置
70 1 static unsigned char funset=0;
71 1 unsigned char inkeyascii;
72 1 // uchar i;
73 1 LCD_write_char(1,0,ASCII[newKey>>4]);
74 1 LCD_write_char(1,1,ASCII[newKey & 0x0f]);
75 1 switch( newKey )
76 1 {
77 2 case key0: inkeyascii=0; break;
78 2 case key1: inkeyascii=1; break;
79 2 case key2: inkeyascii=2; break;
80 2 case key3: inkeyascii=3; break;
81 2 case key4: inkeyascii=4; break;
82 2 case key5: inkeyascii=5; break;
83 2 case key6: inkeyascii=6; break;
84 2 case key7: inkeyascii=7; break;
85 2 case key8: inkeyascii=8; break;
86 2 case key9: inkeyascii=9; break;
87 2 case keym1: inkeyascii=0xff; break;
88 2 case keym2: inkeyascii=0xff; break;
89 2 case keymx: inkeyascii=0xff; break;
90 2 case keym_: inkeyascii=0xff; break;
91 2 case keym3: inkeyascii=0xff; break;
92 2 case keym4:
93 2 default: inkeyascii=0xff; break;
94 2 }
95 1 if (inkeyascii!=0xff)
96 1 {
97 2 // for(j=0;j<14;j++)
98 2 //{
99 2 LCD_write_char(0,0,ASCII[inkeyascii]);
100 2 // }
101 2
102 2 //送显示
103 2 switch( funset )
104 2 {
105 3 case 0:
106 3 break;
107 3 case 1:
108 3 break;
109 3 default: inkeyascii=0xff; break;
110 3 }
111 2 }
112 1
113 1 }
114
115 void main(void)
116 {
117 1 unsigned char key;
C51 COMPILER V7.50 MAIN 11/21/2007 12:21:47 PAGE 3
118 1 LCD_init();
119 1 LCD_write_string(LINE1,0,"Add");
120 1
121 1 while(1)
122 1 {
123 2 key=keyscan();
124 2 if (key)
125 2 {
126 3 newKey=key;
127 3 KeyFlag=1;
128 3 }
129 2 if(!key&&KeyFlag==1)
130 2 {
131 3 KeyFlag=0;
132 3 Key_proess();
133 3 }
134 2 }
135 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 313 ----
CONSTANT SIZE = 21 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 2 1
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -