📄 main1.lst
字号:
C51 COMPILER V7.06 MAIN1 01/28/2008 19:57:21 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE MAIN1
OBJECT MODULE PLACED IN main1.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main1.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /************************************************************************************
2 * Copyright (c) 2008,重庆优易特电子
3 * All rights reserved.
4
5 * 摘 要: 播放音乐:两只老虎
6
7 * 文件名称: main.c
8 * CPU芯片: STC89C51RC
9 * 学习板型: Easy51-B
10 *
11 * 当前版本: 2.0
12 * 作 者: cache
13 * 完成日期: 2008年1月23日
14 *
15 *************************************************************************************/
16 #include <reg52.h>
17 #include <intrins.h>
18
19 #define FREQ 11059200
20
21 unsigned char code music_tab[]={ //两只老虎,高4位为音乐节拍,低4位为音符
22 0x31,0x32,0x33,0x31,0x31,0x32,0x33,0x31,0x33,0x34,0x45,0x33,0x34,0x45,
23 0x25,0x16,0x25,0x14,0x33,0x31,0x25,0x16,0x25,0x14,0x33,0x31,
24 0x31,0x35,0x41,0x31,0x35,0x41,
25 0
26 };
27 unsigned char code music_l_tab[8]={0,1,2,3,4,6,8,16};//节拍延时单位
28 unsigned char code music_freq_tab[16]={
29 0xff,0xea, //0 休止符
30 255-FREQ/24/1049/256, //1 do 高字节 //255-FREQ/24/x/256
31 255-FREQ/24/1049%256, //1 do 低字节 //256-FREQ/24/x%256
32 255-FREQ/24/1178/256,256-FREQ/24/1178%256, //2 re
33 255-FREQ/24/1322/256,256-FREQ/24/1322%256, //3 mi
34 255-FREQ/24/1400/256,256-FREQ/24/1400%256, //4 fa
35 255-FREQ/24/1572/256,256-FREQ/24/1572%256, //5 suo
36 255-FREQ/24/1665/256,256-FREQ/24/1665%256, //6 la
37 255-FREQ/24/1869/256,256-FREQ/24/1869%256, //7 xi
38 };
39
40 unsigned char temp_TH1;
41 unsigned char temp_TL1;
42
43 sbit PIN_MSC=P1^4; // 音乐输出端口 //
44
45 void music_delay(unsigned char x); //音乐节拍延时
46 void music_play(unsigned char *msc); //播放音乐子程序
47
48 //---------------------------------------------------------------------------//
49 void music_int_t1 (void) interrupt 3 using 1 //定时中断1//
50 {
51 1 PIN_MSC=~PIN_MSC;
52 1 TH1=temp_TH1;
53 1 TL1=temp_TL1;
54 1 }
55 //---------------------------------------------------------------------------//
C51 COMPILER V7.06 MAIN1 01/28/2008 19:57:21 PAGE 2
56 void music_delay(unsigned char n) //延时 125*n 毫秒
57 {
58 1 unsigned char i=125,j;
59 1 do {
60 2 do {
61 3 for (j=0; j<230; j++) _nop_();
62 3 }while(--i);
63 2 }while(--n);
64 1 }
65 //---------------------------------------------------------------------------//
66 void music_play(unsigned char *msc) //音乐
67 {
68 1 unsigned char music_long; //节拍
69 1 unsigned char music_data=0; //音符数据
70 1 temp_TH1=0xff;
71 1 temp_TL1=0xea; //关输出(输出超声波)
72 1 TH1=temp_TH1;
73 1 TL1=temp_TL1;
74 1 TR1=1; //开T1定时器中断
75 1
76 1 //---------------------------------------------------------
77 1 while (*msc != 0x00)
78 1 {
79 2 music_data=*msc & 0x07;
80 2 music_long=*msc>>4;
81 2 //---------------------------------------------------------
82 2 if (music_long != 0) //是音符
83 2 {
84 3 temp_TH1=music_freq_tab[music_data*2];
85 3 temp_TL1=music_freq_tab[music_data*2+1];
86 3 music_delay(music_l_tab[music_long&0x07]);
87 3 }
88 2 msc++;
89 2 }
90 1 TR1=0; //播放结束
91 1 PIN_MSC=1; //关输出
92 1 }
93 //---------------------------------------------------------------------------//
94 void main(void) //示例
95 {
96 1 TMOD = 0x11; // TMOD: 定时器1:模式1:16位;定时器2:模式1:16位
97 1 TR1=0;
98 1 ET1=1;
99 1 EA=1;
100 1 while(1)
101 1 {
102 2 music_delay(10); //延时
103 2 music_play(music_tab);//播放音乐
104 2 }
105 1 }
106 //---------------------------------------------------------------------------//
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 135 ----
CONSTANT SIZE = 57 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 2 ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILER V7.06 MAIN1 01/28/2008 19:57:21 PAGE 3
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -