📄 1.lst
字号:
C51 COMPILER V8.08 1 05/06/2009 22:53:04 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE 1
OBJECT MODULE PLACED IN 1.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE 1.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #define uchar unsigned char //定义一下方便使用
2 #define uint unsigned int
3 #define ulong unsigned long
4 #include <reg52.h> //包括一个 52 标准内核的头文件
5
6 //char code dx516[3] _at_ 0x003b;//这是为了仿真设置的
7 void delay(uint z);
8
9 sbit BEEP=P1^4; //喇叭输出脚
10 sbit K1= P2^0;
11 sbit K2= P2^1;
12 sbit K3= P2^2;
13 sbit K4= P2^3;
14
15 uchar th0_f; //在中断中装载的 T0 的值高 8 位
16 uchar tl0_f; //在中断中装载的 T0 的值低 8 位
17
18 //T0 的值,及输出频率对照表
19 uchar code freq[36*2]={
20 0xA9,0xEF,//00220HZ ,1 //0
21 0x93,0xF0,//00233HZ ,1#
22 0x73,0xF1,//00247HZ ,2
23 0x49,0xF2,//00262HZ ,2#
24 0x07,0xF3,//00277HZ ,3
25 0xC8,0xF3,//00294HZ ,4
26 0x73,0xF4,//00311HZ ,4#
27 0x1E,0xF5,//00330HZ ,5
28 0xB6,0xF5,//00349HZ ,5#
29 0x4C,0xF6,//00370HZ ,6
30 0xD7,0xF6,//00392HZ ,6#
31 0x5A,0xF7,//00415HZ ,7
32 0xD8,0xF7,//00440HZ 1 //12
33 0x4D,0xF8,//00466HZ 1# //13
34 0xBD,0xF8,//00494HZ 2 //14
35 0x24,0xF9,//00523HZ 2# //15
36 0x87,0xF9,//00554HZ 3 //16
37 0xE4,0xF9,//00587HZ 4 //17
38 0x3D,0xFA,//00622HZ 4# //18
39 0x90,0xFA,//00659HZ 5 //19
40 0xDE,0xFA,//00698HZ 5# //20
41 0x29,0xFB,//00740HZ 6 //21
42 0x6F,0xFB,//00784HZ 6# //22
43 0xB1,0xFB,//00831HZ 7 //23
44 0xEF,0xFB,//00880HZ `1
45 0x2A,0xFC,//00932HZ `1#
46 0x62,0xFC,//00988HZ `2
47 0x95,0xFC,//01046HZ `2#
48 0xC7,0xFC,//01109HZ `3
49 0xF6,0xFC,//01175HZ `4
50 0x22,0xFD,//01244HZ `4#
51 0x4B,0xFD,//01318HZ `5
52 0x73,0xFD,//01397HZ `5#
53 0x98,0xFD,//01480HZ `6
54 0xBB,0xFD,//01568HZ `6#
55 0xDC,0xFD,//01661HZ `7 //35
C51 COMPILER V8.08 1 05/06/2009 22:53:04 PAGE 2
56 };
57
58 //定时中断 0,用于产生唱歌频率
59 timer0() interrupt 1
60 {
61 1 TL0=tl0_f;TH0=th0_f; //调入预定时值
62 1 BEEP=~BEEP; //取反音乐输出 IO
63 1 }
64
65 //按键控制音阶声音输出(电子琴)
66 void main(void) // 主程序
67 {
68 1 ulong n;
69 1 uchar code jie8[8]={12,14,16,17,19,21,23,24};//1234567`1 八个音符在频率表中的位置
70 1
71 1
72 1
73 1 TMOD = 0x01; //使用定时器 0 的 16 位工作模式
74 1 TR0 = 0;
75 1 ET0 = 1;
76 1 EA = 1;
77 1
78 1 while(1)
79 1 {
80 2 P2=0xef;
81 2
82 2 if(!K1)
83 2 {
84 3 delay(5);
85 3 if(!K1)
86 3 {
87 4 tl0_f=freq[jie8[0]*2]; //置一个音符的值
88 4 th0_f=freq[jie8[0]*2+1];
89 4 TR0 = 1;
90 4 for(n=0;n<10000;n++); //延时
91 4 BEEP=1;
92 4 }
93 3 }
94 2
95 2 if(!K2)
96 2 {
97 3 if(!K2)
98 3 {
99 4 delay(5);
100 4 tl0_f=freq[jie8[1]*2]; //置一个音符的值
101 4 th0_f=freq[jie8[1]*2+1];
102 4 TR0 = 1;
103 4 for(n=0;n<10000;n++); //延时
104 4 }
105 3 BEEP=1;
106 3 }
107 2
108 2
109 2 if(!K3)
110 2 {
111 3 if(!K3)
112 3 {
113 4 delay(5);
114 4 tl0_f=freq[jie8[2]*2]; //置一个音符的值
115 4 th0_f=freq[jie8[2]*2+1];
116 4 TR0 = 1;
117 4 for(n=0;n<10000;n++); //延时
C51 COMPILER V8.08 1 05/06/2009 22:53:04 PAGE 3
118 4 }
119 3 BEEP=1;
120 3 }
121 2
122 2 if(!K4)
123 2 {
124 3 if(!K4)
125 3 {
126 4 delay(5);
127 4 tl0_f=freq[jie8[3]*2]; //置一个音符的值
128 4 th0_f=freq[jie8[3]*2+1];
129 4 TR0 = 1;
130 4 for(n=0;n<10000;n++); //延时
131 4 }
132 3 BEEP=1;
133 3 }
134 2
135 2 P2=0xdf ;
136 2
137 2 if(!K1)
138 2 {
139 3 tl0_f=freq[jie8[4]*2]; //置一个音符的值
140 3 th0_f=freq[jie8[4]*2+1];
141 3 TR0 = 1;
142 3 for(n=0;n<10000;n++); //延时
143 3 BEEP=1;
144 3 }
145 2
146 2
147 2 if(!K2)
148 2 {
149 3 tl0_f=freq[jie8[5]*2]; //置一个音符的值
150 3 th0_f=freq[jie8[5]*2+1];
151 3 TR0 = 1;
152 3 for(n=0;n<10000;n++); //延时
153 3 BEEP=1;
154 3 }
155 2
156 2
157 2 if(!K3)
158 2 {
159 3 tl0_f=freq[jie8[6]*2]; //置一个音符的值
160 3 th0_f=freq[jie8[6]*2+1];
161 3 TR0 = 1;
162 3 for(n=0;n<10000;n++); //延时
163 3 BEEP=1;
164 3 }
165 2
166 2
167 2 if(!K4)
168 2 {
169 3 tl0_f=freq[jie8[7]*2]; //置一个音符的值
170 3 th0_f=freq[jie8[7]*2+1];
171 3 TR0 = 1;
172 3 for(n=0;n<10000;n++); //延时
173 3 BEEP=1;
174 3 }
175 2
176 2
177 2 TR0 =0;
178 2 }
179 1 }
C51 COMPILER V8.08 1 05/06/2009 22:53:04 PAGE 4
180
181 void delay(uint z)
182 {
183 1 int a,b;
184 1 for (a=z;a>0;a--)
185 1 for(b=110;b>0;b--);
186 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 865 ----
CONSTANT SIZE = 80 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 2 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 + -