📄 i2c-24c04与蜂鸣器.lst
字号:
C51 COMPILER V8.02 I2C_24C04与蜂胈芲 06/11/2010 16:55:12 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE I2C_24C04与蜂胈芲
OBJECT MODULE PLACED IN I2C-24C04与蜂鸣器.OBJ
COMPILER INVOKED BY: D:\Program Files\keil\C51\BIN\C51.EXE I2C-24C04与蜂鸣器.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg51.h>
2 #include<intrins.h>
3 #define uchar unsigned char
4 #define uint unsigned int
5 #define NOP4() {_nop_();_nop_();_nop_();_nop_();}
6
7 sbit SCL=P1^0;
8 sbit SDA=P1^1;
9 sbit SPK=P3^0;
10
11 uchar code HI_LIST[]={0,226,229,232,233,236,238,240,241,242,244,245,246,247,248};
12 uchar code LO_LIST[]={0,4,13,10,20,3,8,6,2,23,5,26,1,4,3};
13 uchar code Song_24C04[]={1,1,5,3,3,1,1,2,3,4,4,3,2,5};
14 uchar sidx;
15
16 //------------------------------------------------------------------------------
17 //延时
18 //------------------------------------------------------------------------------
19 void DelayMS(uint x)
20 {
21 1 uchar i;
22 1 while(x--) for(i=120;i>0;i--);
23 1 }
24 //------------------------------------------------------------------------------
25 //I2C开始
26 //------------------------------------------------------------------------------
27 void start()
28 {
29 1 SDA=1;SCL=1;NOP4();SDA=0;NOP4();SCL=0;
30 1 }
31 //------------------------------------------------------------------------------
32 //I2C停止
33 //------------------------------------------------------------------------------
34 void stop()
35 {
36 1 SDA=0;SCL=0;NOP4();SCL=1;NOP4();SDA=1;
37 1 }
38 //-----------------------------------------------------------------------------
39 //读取应答
40 //-----------------------------------------------------------------------------
41 void RACK()
42 {
43 1 SDA=1;NOP4();SCL=1;NOP4();SCL=0;
44 1 }
45 //-----------------------------------------------------------------------------
46 //发送非应答信号
47 //-----------------------------------------------------------------------------
48 void NO_ACK()
49 {
50 1 SDA=1;SCL=1;NOP4();SCL=0;SDA=0;
51 1 }
52 //-----------------------------------------------------------------------------
53 //向24C04中写一字节数据
54 //-----------------------------------------------------------------------------
55 void Write_A_Byte(uchar b)
C51 COMPILER V8.02 I2C_24C04与蜂胈芲 06/11/2010 16:55:12 PAGE 2
56 {
57 1 uchar i;
58 1 for(i=0;i<8;i++)
59 1 {
60 2 b<<=1;SDA=CY;_nop_();SCL=1;NOP4();SCL=0;
61 2 }
62 1 RACK();
63 1 }
64 //----------------------------------------------------------------------------
65 //向指定地址写数据
66 //----------------------------------------------------------------------------
67 void Write_IIC(uchar addr,uchar dat)
68 {
69 1 start();
70 1 Write_A_Byte(0xa0);Write_A_Byte(addr);Write_A_Byte(dat);
71 1 stop();
72 1 DelayMS(10);
73 1 }
74 //---------------------------------------------------------------------------
75 //读24C04一字节数据
76 //---------------------------------------------------------------------------
77 uchar Read_A_Byte()
78 {
79 1 uchar i,b;
80 1 for(i=0;i<8;i++)
81 1 {
82 2 SCL=1;b<<=1;b|=SDA;SCL=0;
83 2 }
84 1 return b;
85 1 }
86 //---------------------------------------------------------------------------
87 //从当前地址读数据
88 //---------------------------------------------------------------------------
89 uchar Read_Current()
90 {
91 1 uchar d;
92 1 start();
93 1 Write_A_Byte(0xa1);d=Read_A_Byte();NO_ACK();
94 1 stop();
95 1 return d;
96 1 }
97 //--------------------------------------------------------------------------
98 //从任意地址读数据
99 //--------------------------------------------------------------------------
100 uchar Random_Read(uchar addr)
101 {
102 1 start();
103 1 Write_A_Byte(0xa0);Write_A_Byte(addr);
104 1 stop();
105 1 return Read_Current();
106 1 }
107 //-------------------------------------------------------------------------
108 //定时器0中断
109 //-------------------------------------------------------------------------
110 void T0_INT() interrupt 1
111 {
112 1 SPK=!SPK;
113 1 TH0=HI_LIST[sidx];
114 1 TL0=LO_LIST[sidx];
115 1 }
116 //-------------------------------------------------------------------------
117 //主程序
C51 COMPILER V8.02 I2C_24C04与蜂胈芲 06/11/2010 16:55:12 PAGE 3
118 //-------------------------------------------------------------------------
119 void main()
120 {
121 1 uchar i;
122 1 IE=0x82;
123 1 TMOD=0x00;
124 1 for(i=0;i<14;i++)
125 1 {
126 2 Write_IIC(i,Song_24C04[i]);
127 2 }
128 1 while(1)
129 1 {
130 2 for(i=0;i<14;i++)
131 2 {
132 3 sidx=Random_Read(i);
133 3 TR0=1;
134 3 DelayMS(300);
135 3 }
136 2 }
137 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 268 ----
CONSTANT SIZE = 44 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 ----
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 + -