📄 yinyue.lst
字号:
C51 COMPILER V8.08 YINYUE 04/15/2008 10:58:30 PAGE 1
C51 COMPILER V8.08, COMPILATION OF MODULE YINYUE
OBJECT MODULE PLACED IN yinyue.OBJ
COMPILER INVOKED BY: C:\Program Files\keil\C51\BIN\C51.EXE yinyue.c BROWSE DEBUG OBJECTEXTEND CODE
line level source
1 #include <reg51.h>
2
3 sbit Y=P1^3; //播放按键
4
5 sbit Speaker=P3^7; //扬声器
6 static unsigned char bdata StateREG;
7 sbit m=StateREG^0;
8 unsigned char code * data Mymusic;
9 unsigned char data l;
10
11 void delay(void); //延时函数声明
12
13 unsigned char code music[30]=
14 {0xFF,0xFF,0xFB,0x90,0xFC,0x0C,0xFC,0x44,0xFC,0xAC,0xFD,0x09,0xFD,0x34,0xFD,0x82,0xFD,0xC8,0xFE,0x06,0xFE,
-0x22,0xFA,0X15,0XFB,0x04,0xFA,0x67,0xFE,0x85};
15
16 unsigned char code Mmusic[]=
17 {
18 0x35,0x31,0x34,0x34,0x24,0x35,0x32,0x32,0x24,0x38,
19 0x44,0x58,0x48,0x34,0x31,0x34,0x34,0x24,0x38,0x34,
20 0x7F,0x32,0x34,0x32,0x34,0x24,0x38,0x34,0x24,0x38,
21 0x43,0x58,0x48,0x34,0x32,0x34,0x38,0x24,0x38,0x34,
22 0x7F,0x16,0x4C,0x74,0x78,0x64,0x54,0x48,0x54,0x64,
23 0x58,0x44,0x34,0x24,0x38,0x24,0x14,0x12,0x21,0x14,
24 0x78,0x68,0x3F,0x4C,0x74,0x78,0x64,0x52,0x42,0x48,
25 0x53,0x64,0x58,0x44,0x34,0x24,0x38,0x24,0x24,0x38,
26 0x44,0x58,0x48,0x3C,0xFF
27 };
28
29
30 //主程序
31 void main()
32 {
33 1 unsigned int data j;
34 1 unsigned char data i;
35 1 unsigned char data k;
36 1 unsigned char data p11;
37 1 unsigned char data p33;
38 1 TMOD=0x01; //初始化
39 1 IE=0x82;
40 1 while(1)
41 1 {
42 2 j=0;
43 2 m=0;
44 2 while(Y==1)
45 2 {
46 3 for(i=0;i<5;i++)
47 3 {
48 4 delay(); //延时
49 4 }
50 3 p11=P1;
51 3 p33=P3;
52 3 while(*(Mmusic+j)!=0xFF)
53 3 {
54 4 k=*(Mmusic+j)&0x0F;
C51 COMPILER V8.08 YINYUE 04/15/2008 10:58:30 PAGE 2
55 4 l=*(Mmusic+j)>>4;
56 4 if((p11!=P1)||((p33&0x0f)!=(P3&0x0f)))
57 4 {
58 5 goto Next;
59 5 }
60 4 TH0=music[2*l];
61 4 TL0=music[2*l+1];
62 4 TR0=1;
63 4 if ((music[2*l]==0xff)&&(music[2*l+1]==0xff))
64 4 {
65 5 TR0=0;
66 5 }
67 4 for(i=k;i>0;--i)
68 4 {
69 5 delay();
70 5 }
71 4 TR0=0;
72 4 j++;
73 4 }
74 3 Next: ;
75 3 }
76 2 }
77 1 }
78
79 /*单个音符的发声*/
80 void timer0() interrupt 1 using 1
81 {
82 1 TH0=music[2*l];
83 1 TL0=music[2*l+1];
84 1 Speaker = !Speaker;
85 1 }
86
87 /*汇编语句进行精确延时,延时1/4拍时间即187ms*/
88 void delay(void)
89 {
90 1 #pragma ASM
*** ERROR C272 IN LINE 90 OF YINYUE.C: 'asm/endasm' requires src-control to be active
91 1 MOV R3,#02H
92 1 D1: MOV R2,#7DH
93 1 D2: MOV R1,#0F8H
94 1 DJNZ R1,$
95 1 DJNZ R2,D2
96 1 DJNZ R3,D1
97 1 #pragma ENDASM
*** ERROR C272 IN LINE 97 OF YINYUE.C: 'asm/endasm' requires src-control to be active
98 1 }
99
C51 COMPILATION COMPLETE. 0 WARNING(S), 2 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -