?? music.lst
字號:
C51 COMPILER V8.01 MUSIC 04/07/2007 22:16:04 PAGE 1
C51 COMPILER V8.01, COMPILATION OF MODULE MUSIC
OBJECT MODULE PLACED IN music.OBJ
COMPILER INVOKED BY: E:\keil\C51\BIN\C51.EXE music.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<AT89X51.H>
2 #include<stdio.h>
3
4 unsigned char code table[]={0x3f,0x06,0x5b,0x4f,
5 0x66,0x6d,0x7d,0x07,
6 0x7f,0x6f,0x77,0x7c,
7 0x39,0x5e,0x79,0x71};
8 unsigned char STH0,STL0;
9
10 unsigned int code music_feq[]={64021,64103,64260,64400,
11 64524,64580,64684,64777,
12 64820,64898,64968,65030,
13 65058,65110,65157,65178};
14
15 //*******特別注意要進行預先聲明的工作******************//
16 void scan_key(void);
17 //*****************************************************//
18 void delay(void);
19 void proc(unsigned char);
20 void wait_stop(unsigned char);
21
22 void main(void)
23 {
24 1 TMOD=0x01;
25 1 EA=1;
26 1 ET0=1;
27 1 P3=0xFF;
28 1 scan_key();
29 1 }
30
31 void TIME0(void) interrupt 1 using 0
32 {
33 1 TH0=STH0;
34 1 TL0=STL0;
35 1 P1_0=~P1_0;
36 1 }
37
38 void scan_key(void)
39 {
40 1 unsigned char key,temp;
41 1 while(1)
42 1 {
43 2 P3_4=0;
44 2 temp=P3;
45 2 temp&=0x0F;
46 2 if(temp!=0x0F)
47 2 {
48 3 delay();
49 3 temp=P3;
50 3 temp&=0x0F;
51 3 if(temp!=0x0F)
52 3 {
53 4 switch(temp)
54 4 {
55 5 case 0x0E:
C51 COMPILER V8.01 MUSIC 04/07/2007 22:16:04 PAGE 2
56 5 key=0;
57 5 break;
58 5 case 0x0D:
59 5 key=1;
60 5 break;
61 5 case 0x0B:
62 5 key=2;
63 5 break;
64 5 case 0x07:
65 5 key=3;
66 5 break;
67 5 }
68 4 proc(key);
69 4 wait_stop(temp);
70 4 }
71 3 }
72 2 //*******如果不是第一排的按鍵被按鍵下則轉(zhuǎn)入第二排掃描**************//
73 2 P3=0xFF;
74 2 P3_5=0;
75 2 temp=P3;
76 2 temp&=0x0F;
77 2 if(temp!=0x0F)
78 2 {
79 3 delay();
80 3 temp=P3;
81 3 temp&=0x0F;
82 3 if(temp!=0x0F)
83 3 {
84 4 switch(temp)
85 4 {
86 5 case 0x0E:
87 5 key=4;
88 5 break;
89 5 case 0x0D:
90 5 key=5;
91 5 break;
92 5 case 0x0B:
93 5 key=6;
94 5 break;
95 5 case 0x07:
96 5 key=7;
97 5 break;
98 5 }
99 4 proc(key);
100 4 wait_stop(temp);
101 4 }
102 3 }
103 2 //****************第三排按鍵掃描*******************//
104 2 P3=0xFF;
105 2 P3_6=0;
106 2 temp=P3;
107 2 temp&=0x0F;
108 2 if(temp!=0x0F)
109 2 {
110 3 delay();
111 3 temp=P3;
112 3 temp&=0x0F;
113 3 if(temp!=0x0F)
114 3 {
115 4 switch(temp)
116 4 {
117 5 case 0x0E:
C51 COMPILER V8.01 MUSIC 04/07/2007 22:16:04 PAGE 3
118 5 key=8;
119 5 break;
120 5 case 0x0D:
121 5 key=9;
122 5 break;
123 5 case 0x0B:
124 5 key=10;
125 5 break;
126 5 case 0x07:
127 5 key=11;
128 5 break;
129 5 }
130 4 proc(key);
131 4 wait_stop(temp);
132 4 }
133 3 }
134 2 //*********************第四排掃描*******************//
135 2 P3=0xFF;
136 2 P3_7=0;
137 2 temp=P3;
138 2 temp&=0x0F;
139 2 if(temp!=0x0F)
140 2 {
141 3 delay();
142 3 temp=P3;
143 3 temp&=0x0F;
144 3 if(temp!=0x0F)
145 3 {
146 4 switch(temp)
147 4 {
148 5 case 0x0E:
149 5 key=12;
150 5 break;
151 5 case 0x0D:
152 5 key=13;
153 5 break;
154 5 case 0x0B:
155 5 key=14;
156 5 break;
157 5 case 0x07:
158 5 key=15;
159 5 break;
160 5 }
161 4 proc(key);
162 4 wait_stop(temp);
163 4 }
164 3 }
165 2 }
166 1 }
167
168 void delay(void)
169 {
170 1 unsigned char i,j;
171 1 for(i=0;i<80;i++)
172 1 for(j=0;j<200;j++);
173 1 }
174
175 void proc(unsigned char key)
176 {
177 1 P1_0=~P1_0;
178 1 P0=table[key];
179 1 STH0=music_feq[key]/256;
C51 COMPILER V8.01 MUSIC 04/07/2007 22:16:04 PAGE 4
180 1 STL0=music_feq[key]%256;
181 1 TH0=STH0;
182 1 TL0=STL0;
183 1 TR0=1;
184 1 }
185
186 void wait_stop(unsigned char temp)
187 {
188 1 do
189 1 {
190 2 temp=P3;
191 2 temp=0x0F;
192 2 }
193 1 while(temp!=0x0F);
194 1 TR0=0;
195 1 }
196
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 399 ----
CONSTANT SIZE = 48 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 2 2
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 + -