📄 net test.lst
字号:
C51 COMPILER V7.09 NET_TEST 04/09/2004 19:32:30 PAGE 1
C51 COMPILER V7.09, COMPILATION OF MODULE NET_TEST
OBJECT MODULE PLACED IN net test.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE net test.c DEBUG OBJECTEXTEND
line level source
1
2 #include <Reg51.h>
3
4 #define Master_LED P2
5 #define Slaver_LED P3
6 #define D_LED P2^7
7
8 sbit key1 = P1^0;
9 sbit key2 = P1^1;
10 sbit key3 = P1^2;
11 sbit key4 = P1^3;
12
13 unsigned char code direct [] = { 0x06, 0x5b, 0x4f, 0x66, 0x6d,
14 0x7d, 0x07, 0x7f, 0x6f,0x3f};
15
16 //--------------------------
17 // 共阴数码管,交叉线, 1-3,3-1,2-6,6-2? 的 1~9,0显示表
18 unsigned char code across [] = {0x21, 0x7c, 0x6d, 0x63, 0x4f,
19 0x5f, 0x25, 0x7f, 0x6f, 0x3f};
20
21 unsigned char key_val = 0;
22 unsigned char counter = 0;
23 unsigned char key_counter = 0;
24 unsigned char step_counter = 0;
25
26 void timer0_int(void);
27 void delay(unsigned int i);
28 void direct_test(unsigned int j);
29 void across_test(unsigned int k);
30 void lin_dot(unsigned int a);
31
32 main()
33 {
34 1 counter = 4;
35 1 key_val = 0xfb;
36 1 TH0=0x3B; //给计数寄存器高8位赋初值
37 1 TL0=0xC0; //给计数寄存器低8位赋初值
38 1 ET0 = 1;
39 1 EA = 1;
40 1 TR0=1;
41 1 while (1)
42 1 {
43 2 while (key_val == 0xfe)
44 2 {
45 3 step_counter = 0;
46 3 direct_test (key_counter++);
47 3 if (key_counter == 10)
48 3 {
49 4 key_counter = 0;
50 4 }
51 3 }
52 2
53 2 while (key_val == 0xfd)
54 2 {
55 3 step_counter = 0;
C51 COMPILER V7.09 NET_TEST 04/09/2004 19:32:30 PAGE 2
56 3 across_test (key_counter++);
57 3 if (key_counter == 10)
58 3 {
59 4 key_counter = 0;
60 4 }
61 3 }
62 2
63 2 while (key_val == 0xfb)
64 2 {
65 3 lin_dot (0);
66 3 step_counter = 0;
67 3 }
68 2
69 2 while (key_val == 0xf7)
70 2 {
71 3
72 3 Master_LED = 1<<(step_counter-1);
73 3 Slaver_LED = 1<<(step_counter-1);
74 3 }
75 2 }
76 1
77 1 }
78
79 void delay(unsigned int i )
80 {
81 1
82 1 signed int j,k;
83 1 for(k=0;k<i;k++)
84 1 for(j=0;j<1000;j++);
85 1 // Master_LED = 0x00; //直通线的标记
86 1 }
87
88 //直线测试函数Slaver_LED,Master_LED,由1~9,0显示
89 void direct_test(unsigned int j)
90 {
91 1 Master_LED = 0x81; //直通线的标记
92 1 Slaver_LED = 0x81;
93 1 delay(50);
94 1 Master_LED = direct[j];
95 1 Slaver_LED = direct[j];
96 1 delay(50);
97 1 }
98 //交叉线测试函数Master_LED直显示,Slaver_LED,1-3,2-6,数值互换
99 void across_test(unsigned int k)
100 {
101 1 Master_LED = 0xC0; //0x40; //交叉线的标记
102 1 Slaver_LED = 0xC0; //0x40;
103 1 delay(50);
104 1 Master_LED = direct[k];
105 1 Slaver_LED = across[k];
106 1 delay(50);
107 1 }
108 //---------------------------------
109 //两边按顺序单点显示由a~g,.共8段,
110 //
111 void lin_dot(unsigned int a)
112 {
113 1
114 1 unsigned char x = 1;
115 1 //unsigned int h = a;
116 1 while(a!=8)
117 1 {
C51 COMPILER V7.09 NET_TEST 04/09/2004 19:32:30 PAGE 3
118 2 a++;
119 2
120 2 if(x == 0x00)
121 2 x = 1;
122 2
123 2 //Slaver_LED = direct[a];
124 2 //Master_LED = direct[a];
125 2 delay(50);
126 2 Slaver_LED = x;
127 2 Master_LED = x;
128 2 x = x<<1;
129 2 delay(50);
130 2 }
131 1
132 1 }
133
134 void timer0_int(void) interrupt 1
135 {
136 1 TR0=0; //停止计数
137 1 TH0=0x3B; //给计数寄存器高8位赋初值
138 1 TL0=0xC0; //给计数寄存器低8位赋初值
139 1 if(!(counter--)) //当计完2次后=0,取反为1,之后在改变回初值,重新计数。
140 1 {
141 2 counter=0x01;
142 2 if (P1 != 0xff)
143 2 {
144 3 key_val = P1;
145 3 if (key_val == 0xf7)
146 3 {
147 4 if (step_counter == 8)
148 4 {
149 5 step_counter = 0;
150 5 }
151 4 step_counter++;
152 4 }
153 3 while (P1 != 0xff);
154 3 }
155 2 }
156 1 TR0=1;
157 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 312 ----
CONSTANT SIZE = 20 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 4 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 + -