📄 smjp.lst
字号:
C51 COMPILER V3.20, SN-50203648 SMJP 10/03/07 22:18:25 PAGE 1
DOS C51 COMPILER V3.20, COMPILATION OF MODULE SMJP
OBJECT MODULE PLACED IN SMJP.OBJ
COMPILER INVOKED BY: C:\BIN\C51.EXE SMJP.C DB OE SMALL ROM(LARGE)
stmt level source
1 #include<reg51.h>
2 sbit v1=P2^2;
3 sbit v2=P2^4;
4 sbit v3=P2^3;
5 sbit h1=P2^7;
6 sbit h2=P2^6;
7 sbit h3=P2^5;
8
9 sbit led1=P1^0;
10 sbit led2=P1^1;
11 sbit led3=P1^2;
12 sbit led4=P1^3;
13 sbit led5=P1^4;
14 sbit shu4=P2^0;
15 sbit shu2=P2^1;
16 sbit shu1=P3^5;
17 sbit shu3=P3^3;
18
19 void delayms(unsigned int i);
20 unsigned int keyboar();
21
22 unsigned int b;
23
24 void t0()interrupt 1 using 1 /*中断程序负责显示b的值 */
25 {
26 1 unsigned char a1=0,a2=0,a3=0,a4=0;
27 1 static unsigned char yima[]={0xef,0x8c,0xb7,0xbe,0xdc,0x7e,0x7f,0xac,0xff,0xfe};
28 1 static int k=0;
29 1 //b++;
30 1 a1=b/1000;
31 1 a2=(b-a1*1000)/100;
32 1 a3=(b-a1*1000-a2*100)/10;
33 1 a4=b-a1*1000-a2*100-a3*10;
34 1 if(k==0){shu4=1;shu1=0;shu2=0;shu3=0;P0=yima[a1];}
35 1 else if(k==1){shu4=0;shu1=1;shu2=0;shu3=0;P0=yima[a4];}
36 1 else if(k==2){shu4=0;shu1=0;shu2=1;shu3=0;P0=yima[a3];}
37 1 else if(k==3){shu4=0;shu1=0;shu2=0;shu3=1;P0=yima[a2];}
38 1 k++;
39 1 if(k>3)k=0;
40 1
41 1 TH0=230;
42 1 }
43
44 main()
45 {
46 1 //write(1,60);
47 1 //b=read(1);
48 1 EA=1;
49 1 TR0=1;
50 1 ET0=1;
51 1 TMOD=0X01;
52 1 while(1)
53 1 {
54 2 b=keyboar();/*把按键的代表的值给b */
55 2
C51 COMPILER V3.20, SN-50203648 SMJP 10/03/07 22:18:25 PAGE 2
56 2 }
57 1
58 1 }
59
60
61 unsigned int keyboar()/*线反转法 */
62 {
63 1 static unsigned int a=0;
64 1 unsigned char a1=0,b1=0;
65 1 /*行线为输入线,列线为输出线 */
66 1 v1=v2=v3=0;
67 1 h1=h2=h3=1;
68 1 if(P2<224)/*检查行是否有按键按下 */
69 1 {
70 2 delayms(10);
71 2 if(P2<224)
72 2 {
73 3 /*行线为输入线,列线为输出线 */
74 3 v1=v2=v3=0;
75 3 h1=h2=h3=1;
76 3 a1=P2;
77 3 /*行线为输出线,列线为输入线 */
78 3 h1=h2=h3=0;
79 3 v1=v2=v3=1;
80 3 b1=P2;
81 3
82 3 a=a1|b1|0x03; /*与0x03相或是为了屏蔽p2.0和p2.1的影响*/
83 3
84 3 }
85 2 }
86 1
87 1 else {
88 2 h1=h2=h3=0;
89 2 v1=v2=v3=1;
90 2 if(P2<28)/*检查列是否有按键按下 */
91 2 {
92 3 delayms(10);
93 3 if(P2<28)
94 3 {
95 4 /*行线为输入线,列线为输出线 */
96 4 v1=v2=v3=0;
97 4 h1=h2=h3=1;
98 4 a1=P2;
99 4 /*行线为输出线,列线为输入线 */
100 4 h1=h2=h3=0;
101 4 v1=v2=v3=1;
102 4 b1=P2;
103 4
104 4 a=a1|b1|0x03;/*与0x03相或是为了屏蔽p2.0和p2.1的影响*/
105 4
106 4
107 4 }
108 3 }
109 2
110 2 }
111 1
112 1 if(a==219){return 2;}
113 1 else if(a==207){return 1;}
114 1 else if(a==215){return 3;}
115 1 else if(a==187){return 5;}
116 1 else if(a==175){return 4;}
117 1 else if(a==183){return 6;}
C51 COMPILER V3.20, SN-50203648 SMJP 10/03/07 22:18:25 PAGE 3
118 1 else if(a==123){return 8;}
119 1 else if(a==111){return 7;}
120 1 else if(a==119){return 9;}
121 1 else return 0;
122 1
123 1
124 1 }
125
126 void delayms(unsigned int i)
127 {
128 1 unsigned int j;
129 1 for(;i>0;i--)
130 1 for(j=100;j>0;j--);
131 1 }
132
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 601 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 16 4
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 + -