📄 text1.lst
字号:
C51 COMPILER V8.01 TEXT1 05/17/2009 16:32:19 PAGE 1
C51 COMPILER V8.01, COMPILATION OF MODULE TEXT1
OBJECT MODULE PLACED IN Text1.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Text1.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg51.h>
2 unsigned char m; //m为频率常数
3 unsigned char n=0; //n为节拍常数
4 unsigned char i=0;
5 sbit bell=P1^7;
6 unsigned char code music_tab[] ={
7 0x18, 0x30, 0x1C , 0x10, //格式为: 频率常数, 节拍常数, 频率常数, 节拍常数,
8 0x20, 0x40, 0x1C , 0x10,
9 0x18, 0x10, 0x20 , 0x10,
10 0x1C, 0x10, 0x18 , 0x40,
11 0x1C, 0x20, 0x20 , 0x20,
12 0x1C, 0x20, 0x18 , 0x20,
13 0x20, 0x80, 0xFF , 0x20,
14 0x30, 0x1C, 0x10 , 0x18,
15 0x20, 0x15, 0x20 , 0x1C,
16 0x20, 0x20, 0x20 , 0x26,
17 0x40, 0x20, 0x20 , 0x2B,
18 0x20, 0x26, 0x20 , 0x20,
19 0x20, 0x30, 0x80 , 0xFF,
20 0x20, 0x20, 0x1C , 0x10,
21 0x18, 0x10, 0x20 , 0x20,
22 0x26, 0x20, 0x2B , 0x20,
23 0x30, 0x20, 0x2B , 0x40,
24 0x20, 0x20, 0x1C , 0x10,
25 0x18, 0x10, 0x20 , 0x20,
26 0x26, 0x20, 0x2B , 0x20,
27 0x30, 0x20, 0x2B , 0x40,
28 0x20, 0x30, 0x1C , 0x10,
29 0x18, 0x20, 0x15 , 0x20,
30 0x1C, 0x20, 0x20 , 0x20,
31 0x26, 0x40, 0x20 , 0x20,
32 0x2B, 0x20, 0x26 , 0x20,
33 0x20, 0x20, 0x30 , 0x80,
34 0x20, 0x30, 0x1C , 0x10,
35 0x20, 0x10, 0x1C , 0x10,
36 0x20, 0x20, 0x26 , 0x20,
37 0x2B, 0x20, 0x30 , 0x20,
38 0x2B, 0x40, 0x20 , 0x15,
39 0x1F, 0x05, 0x20 , 0x10,
40 0x1C, 0x10, 0x20 , 0x20,
41 0x26, 0x20, 0x2B , 0x20,
42 0x30, 0x20, 0x2B , 0x40,
43 0x20, 0x30, 0x1C , 0x10,
44 0x18, 0x20, 0x15 , 0x20,
45 0x1C, 0x20, 0x20 , 0x20,
46 0x26, 0x40, 0x20 , 0x20,
47 0x2B, 0x20, 0x26 , 0x20,
48 0x20, 0x20, 0x30 , 0x30,
49 0x20, 0x30, 0x1C , 0x10,
50 0x18, 0x40, 0x1C , 0x20,
51 0x20, 0x20, 0x26 , 0x40,
52 0x13, 0x60, 0x18 , 0x20,
53 0x15, 0x40, 0x13 , 0x40,
54 0x18, 0x80, 0x00
55 };
C51 COMPILER V8.01 TEXT1 05/17/2009 16:32:19 PAGE 2
56 void time0(void) interrupt 1 using 1 //产生10MS精确定时
57 { TH0=(65536-10000)/256;
58 1 TL0=(65536-10000)%256;
59 1 n--;
60 1 }
61 void delayms(unsigned char a) //微秒延时程序
62 {
63 1 while(--a);
64 1 }
65 void delay(void) //延迟程序
66 {
67 1 int i,j;
68 1 for(i=50;i--;i>0)
69 1 for(j=10000;j--;j>0) ;
70 1 }
71 void main()
72 {
73 1 TMOD=(TMOD&0xf0)|0x01;
74 1 TH0=(65536-10000)/256;
75 1 TL0=(65536-10000)%256;
76 1 EA=1;
77 1 ET0=1;
78 1 TR0=0;
79 1 while(1)
80 1 {
81 2 switch(music_tab[i])
82 2 {
83 3 case 0x00:
84 3 i=0;delay(); break; // 曲终停顿一定时间
85 3 case 0xff:
86 3 i=i+1;delayms(100);break; //遇到休止符停顿一定时间100微秒,再取下一个频率
87 3 default:
88 3 m=music_tab[i++];n=music_tab[i++];//取频率到m,取节拍到n
89 3 TR0=1;
90 3 while(n!=0)
91 3 {
92 4 bell=!bell;
93 4 delayms(5*m);//调整产生的频率,可以通过在m前的值来修正音调的高低
94 4 }
95 3 TR0=0;
96 3 }
97 2 }
98 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 135 ----
CONSTANT SIZE = 191 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 3 ----
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 + -