📄 mm.lst
字号:
C51 COMPILER V7.09 MM 04/19/2007 10:31:59 PAGE 1
C51 COMPILER V7.09, COMPILATION OF MODULE MM
OBJECT MODULE PLACED IN mm.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE mm.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*********************************************************************/
2 //
3 // 自动报警控制
4 // ancleyan 2007.04.17
5 /*********************************************************************/
6 //使用AT89C51单片机,12MHZ晶振,P1口输入,P2口作列扫描,p3数据输出,用共阳LED数码管
7
8 #include"reg51.h"
9 #define char unsigned char
10 //
11
12
13 char code dis_7[11]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xff};
14 /* 共阳LED段码表 "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "不亮" */
15 //char code dis_7[10]={0xC0,0xF9,0xA4,0x99,0xB0,0x82,0xF8,0x80,0x99,0xff};
16 /* 共阳LED段码表 "0" "1" "2" "8" "3" "5" "6" "7" "4" "9" "不亮" */
17
18
19
20
21 //char code scan_con[9]={0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; // 列扫描控制字
22 char code scan_con[9]={0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; // 列扫描控制字
23
24 char data keytmp[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};//显示单元数据初值,共8个
25 //char data keytmp[8]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};//显示单元数据初值,共8个
26 char data key[8]={0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
27 char m,t;
28 //*******初始化程序*******//
29 void clear()
30 {
31 1 char t;
32 1 for(t=0;t<8;t++)
33 1 {keytmp[t]=0x00;}
34 1 }
35
36 /****************/
37 //1毫秒延时程序//
38 /***************/
39 delay1ms(int t)
40 {
41 1 int i,j;
42 1 for(i=0;i<t;i++)
43 1 for(j=0;j<120;j++)
44 1 ;
45 1 }
46 /**********键功能函数************/
47 scankey()
48 { P3=0xf0;
49 1 if(P3!=0xf0)
50 1 { delay1ms(20);
51 2 if(P3!=0xf0)
52 2 {switch(P3)
53 3 {case 0xb0: //如果是第3列有键按下
54 4
55 4 P3=0x0f;
C51 COMPILER V7.09 MM 04/19/2007 10:31:59 PAGE 2
56 4 switch(P3)
57 4 {case 0x0e:keytmp[t]=9;t++;break;
58 5 case 0x0d:keytmp[t]=6;t++;break;
59 5 case 0x0b:keytmp[t]=3;t++;break;
60 5 default: break;
61 5 };
62 4 break;
63 4
64 4 case 0xd0: //如果是第2列有键按下
65 4
66 4 P3=0x0f;
67 4 switch(P3)
68 4 {case 0x0e:keytmp[t]=8;t++;break;
69 5 case 0x0d:keytmp[t]=5;t++;break;
70 5 case 0x0b:keytmp[t]=2;t++;break;
71 5 default: break;
72 5 };
73 4 break;
74 4
75 4 case 0xe0: //如果是第1行有键按下
76 4
77 4 P3=0x0f;
78 4 switch(P3)
79 4 {case 0x0e:keytmp[t]=7;t++;break;
80 5 case 0x0d:keytmp[t]=4;t++;break;
81 5 case 0x0b:keytmp[t]=1;t++;break;
82 5 default: break;
83 5 };
84 4 break;
85 4
86 4 default: break;
87 4 }
88 3 }
89 2 }
90 1
91 1 }
92 //*****数码管扫描函数*********//
93 void scan_7(void)
94 {
95 1 char j;
96 1 for(j=0;j<=8;j++)
97 1 {
98 2 P2=scan_con[keytmp[j]];
99 2 P0=dis_7[keytmp[j]];
100 2 //delay1ms(100);
101 2 }
102 1 }
103 //*****密码验证程序*********//
104 void password(void)
105 {
106 1 char t;
107 1 for(t=0;t<=8;t++)
108 1 {
109 2 if(keytmp[t]!=key[t])
110 2 {P1=0;}
111 2 else
112 2 {P1=0;}
113 2 }
114 1 }
115 //*******主程序*******//
116 void main()
117 {
C51 COMPILER V7.09 MM 04/19/2007 10:31:59 PAGE 3
118 1 while(1)
119 1 {
120 2 //if(P1^0==1) {clear();}
121 2
122 2 scankey();
123 2 scan_7();
124 2 delay1ms(1);
125 2 //password();
126 2 }
127 1 }
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 298 ----
CONSTANT SIZE = 20 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 18 ----
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 + -