iic_app.lst
来自「菜鸟,详细NRF24E1运用,程序,电路」· LST 代码 · 共 235 行
LST
235 行
C51 COMPILER V9.00 IIC_APP 11/13/2010 14:52:47 PAGE 1
C51 COMPILER V9.00, COMPILATION OF MODULE IIC_APP
OBJECT MODULE PLACED IN IIC_app.OBJ
COMPILER INVOKED BY: D:\Program Files\KEIL C V4\C51\BIN\C51.EXE IIC_app.c LARGE BROWSE DEBUG OBJECTEXTEND
line level source
*** WARNING C500 IN LINE 1 OF IIC_APP.C: LICENSE ERROR (R208: RENEW LICENSE ID CODE (LIC))
1 #include "reg24le1.h"
2 #include "IIC_app.h"
3 #include "intrins.h"
4
5 void delay(unsigned int dx)
6 {
7 1 unsigned int di;
8 1 for(;dx>0;dx--)
9 1 for(di=120;di>0;di--)
10 1 {
11 2 ;
12 2 }
13 1 }
14
15 void IIC_init()
16 {
17 1 FREQSEL(2);
18 1 MODE(MASTER);
19 1 W2CON1|=0x20; //屏蔽所有的中断
20 1 W2SADR=0x00;
21 1 EN2WIRE(); //使能2-wire
22 1 }
23
24 void Io_config()
25 {
26 1 //LED p00
27 1 P0DIR&=0XFE; //LED 输出
28 1 P00=0;
29 1 P1DIR|=0X01;
30 1 P10=0X01;
31 1 }
32
33 void uart_init()
34 {
35 1 CLKCTRL = 0x28; // 设置时钟源为16M
36 1 CLKLFCTRL = 0x01;
37 1
38 1 P0DIR &= 0xF7; // P03 (TxD)
39 1 P0DIR |= 0x10; // P04 (RxD)
40 1 P0|=0x18;
41 1
42 1 S0CON = 0x50;
43 1 PCON |= 0x80; // 波特率倍增
44 1 WDCON |= 0x80; // 选择内部波特率发生器
45 1
46 1 S0RELL = 0xFB;
47 1 S0RELL = 0xF3; // 波特率38400
48 1
49 1 // ES0=1;
50 1 }
51
52 void ex_int(void)
53 {
54 1 IEN0|=0X80;
C51 COMPILER V9.00 IIC_APP 11/13/2010 14:52:47 PAGE 2
55 1 IEN0|=0X01;
56 1 TCON|=0X01; //下降沿触发
57 1 INTEXP|=0x08; //从P05输入中断
58 1 P0DIR|=0X20; //P05输入
59 1 P0DIR|=0x40; //P06输入
60 1 P05=1;
61 1 P06=1;
62 1 }
63
64 void send(unsigned char ch)
65 {
66 1
67 1 S0BUF=ch;
68 1 while(!TI0);
69 1 TI0=0;
70 1 }
71
72 unsigned char readbyte(unsigned int addr)
73 {
74 1 unsigned char byte;
75 1 START();
76 1 W2DAT=((slaveaddr+0xa0)<<1)+0;//write from slave
77 1 while(ACK);
78 1 W2DAT=addr;
79 1 while(ACK);
80 1 START();
81 1 W2DAT=((slaveaddr+0xa0)<<1)+1;//read from slave
82 1 while(ACK);
83 1 while(!READY);
84 1 byte=W2DAT;
85 1 STOP();
86 1 return byte;
87 1
88 1 }
89 //选择写
90 void writebyte(unsigned int addr,unsigned char dat)
91 {
92 1 unsigned char byte=dat;
93 1 START();
94 1 W2DAT=((slaveaddr+0xa0)<<1)+0;//write
95 1 if(!ACK) //IF ACK
96 1 W2DAT=addr;
97 1 if(!ACK)
98 1 W2DAT=byte;
99 1 STOP();
100 1 }
101
102 //立即读
103 void multyread(char *buffer,int len)
104 {
105 1 char *cbuffer=buffer;
106 1 W2DAT=((slaveaddr+0xa0)<<1)+1;//read from slave
107 1 if(!ACK) //IF ACK
108 1 {
109 2 while(len--)
110 2 {
111 3 while(!READY);
112 3 *cbuffer++=W2DAT;
113 3 }
114 2
115 2 STOP();
116 2 }
C51 COMPILER V9.00 IIC_APP 11/13/2010 14:52:47 PAGE 3
117 1
118 1 }
119
120 //页写
121 void multwrite(char *buffer,int addr)
122 {
123 1 char * cbuffer=buffer;
124 1 char numlimit=0;
125 1 START();
126 1 W2DAT=((slaveaddr+0xa0)<<1)+0;//write from slave
127 1 if(!ACK) //IF ACK
128 1 W2DAT=addr;
129 1 if(!ACK)
130 1 {
131 2 W2DAT=*cbuffer++ ;
132 2 numlimit++;
133 2 if(numlimit==16)
134 2 return;
135 2 }
136 1
137 1 }
138
139 //extern char wbuffer[];
140 unsigned char wbuffer[0x10]={'a','b','c','d',
141 'e','f','g','h',
142 '0','1','2','3',
143 '4','5','6','7',
144 };
145 void uart_service() interrupt INTERRUPT_UART
146 {
147 1 static int i=0;
148 1 char buf;
149 1 if(TI0)
150 1 {TI0=0; }
151 1 if(RI0)
152 1 {
153 2 RI0=0;
154 2 buf=S0BUF;
155 2 wbuffer[i++]=buf;
156 2 if(i==0x10)
157 2 i=0;
158 2 }
159 1
160 1 }
161
162 unsigned char keycheck(void)
163 {
164 1 P1CON=0XD0;//P10
165 1 if(!P10)
166 1 {
167 2 delay(10);
168 2 if(!P10)
169 2 { while(!P10);
170 3 return true; //如果按下就返回真
171 3 }
172 2 }
173 1 return false; // 返回假
174 1
175 1 }
176
177 void puts(char *str)
178 {
C51 COMPILER V9.00 IIC_APP 11/13/2010 14:52:47 PAGE 4
179 1 while(*str!='\0')
180 1 {send(*str++);
181 2 }
182 1 }
183
184 char init_time=0;
185
186 void ex_int_service() interrupt 0
187 {
188 1
189 1 static char flag=0;
190 1 if(flag)
191 1 flag=0;
192 1 else
193 1 flag=1;
194 1 puts("...IIC test program!by syman...\n");
195 1 LED=flag;
196 1 init_time=1;
197 1 }
198
199
200
201
202
203
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 558 ----
CONSTANT SIZE = 33 ----
XDATA SIZE = 20 10
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?