📄 series to p.lst
字号:
C51 COMPILER V8.09 SERIES_TO_P 03/18/2009 22:53:45 PAGE 1
C51 COMPILER V8.09, COMPILATION OF MODULE SERIES_TO_P
OBJECT MODULE PLACED IN Series To P.OBJ
COMPILER INVOKED BY: C:\Keil C51\C51\BIN\C51.EXE Series To P.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /*本设计主要在按键设计的基础构思而来的,实验74LS164来实现简单的并串转换
2 大大节省了单片机的IO口线
3 char bdata tmp1;
4 bit tmp2;
5 ...
6 tmp2=tmp1^7;这样是取不出tmp1的第七位的
7 */
8 #include<reg51.h>
9 #include<stdio.h>
10 #include<intrins.h>
11 #define uchar unsigned char
12 #define uint unsigned int
13 #define _Nop_() _nop_()
14 uchar code ncode[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
15 uchar code ncode_2[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};//取位时候用的,分别取到第零位到最高位
16 sbit P32=P3^2;
17 sbit P20=P2^0;
18 sbit P22=P2^2;
19 sbit P23=P2^3;
20 sbit P24=P2^4;
21
22 void delay(uint t)
23 {
24 1 while(t>1){t--;}
25 1 }
26
27 unsigned char scan_key()//最通用的4*4键盘扫描程序
28 {
29 1 uchar key_1;
30 1 uchar key_2;
31 1
32 1 P1=0x0f;
33 1 key_2=P1;
34 1 key_2&=0x0f;
35 1 P1=0xf0;
36 1 key_1=P1;
37 1 key_1&=0xf0;
38 1 key_1|=key_2;
39 1 return(key_1);
40 1 }
41
42
43 void deal_2(uchar i)
44 {
45 1 uchar counter=0;
46 1 uchar a=0x3f;
47 1
48 1 while(counter<8)
49 1 {
50 2 P20=(bit)(ncode[i]&ncode_2[counter]);//这是该设计的核心部分,在此用了强制类型转换,等效为if(ncode[i]&nc
-ode_2[counter]!=0)P22=1;else P22=0;
51 2 P22=1;//在此要强调一点,先送数据,然后再把CLK拉高
52 2 _Nop_();//不管在高电平还是低电平都需要保持一定时间,时间长度根据不同的器件而定
53 2 _Nop_();
54 2 _Nop_();
C51 COMPILER V8.09 SERIES_TO_P 03/18/2009 22:53:45 PAGE 2
55 2 _Nop_();
56 2 _Nop_();
57 2
58 2 P22=0;
59 2 _Nop_();
60 2 _Nop_();
61 2 _Nop_();
62 2 _Nop_();
63 2 _Nop_();
64 2 counter++;
65 2
66 2 delay(20000);
67 2 delay(20000);
68 2 }
69 1 P20=0;
70 1 P24=1;
71 1 _Nop_();
72 1 _Nop_();
73 1 _Nop_();
74 1 _Nop_();
75 1 _Nop_();
76 1 P24=0;
77 1 }
78
79
80 void deal(uchar code_)
81 {
82 1
83 1 switch(code_)
84 1 {
85 2 case 0xe7:deal_2(0);break;
86 2 case 0xeb:deal_2(1);break;
87 2 case 0xed:deal_2(2);break;
88 2 case 0xee:deal_2(3);break;
89 2 case 0xd7:deal_2(4);break;
90 2 case 0xdb:deal_2(5);break;
91 2 case 0xdd:deal_2(6);break;
92 2 case 0xde:deal_2(7);break;
93 2 case 0xb7:deal_2(8);break;
94 2 case 0xbb:deal_2(9);break;
95 2 }
96 1
97 1 }
98
99 void in_i(void) interrupt 0 using 0
100 {
101 1 uchar t;
102 1 EA=0;
103 1 t=200;
104 1 while(t--);
105 1 if(P32){EA=1;return;}
106 1 deal((scan_key()));
107 1 P1=0xf0;
108 1 EA=1;
109 1 return ;
110 1 }
111
112 void main()
113 {
114 1 P1=0xf0;
115 1 P20=0;
116 1 P22=0;
C51 COMPILER V8.09 SERIES_TO_P 03/18/2009 22:53:45 PAGE 3
117 1 P23=0;
118 1 P24=0;
119 1 _Nop_();
120 1 _Nop_();
121 1 _Nop_();
122 1 _Nop_();
123 1 _Nop_();
124 1 _Nop_();
125 1 P23=1;
126 1 EX0=1;
127 1 IT0=1;
128 1 EA=1;
129 1 while(1);
130 1 }
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 266 ----
CONSTANT SIZE = 18 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 1
C51 COMPILER V8.09 SERIES_TO_P 03/18/2009 22:53:45 PAGE 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 + -