?? text1.lst
字號(hào):
C51 COMPILER V7.06 TEXT1 11/29/2006 11:07:47 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE TEXT1
OBJECT MODULE PLACED IN Text1.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Text1.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <c8051f020.h>
2 #include <niao.h>
3 #define SomeNop() _nop_();_nop_();_nop_();_nop_();_nop_();\
4 ////////)///////////////全局變量//////////////////////////////////
5 char COMMAND;
6 char WORD;
7 char BYTE_NUMBER;
8 unsigned char HIGH_ADD,LOW_ADD;
9 bit SMB_BUSY;
10 //////////////////////全局變量/////////////////////////////////
11
12
13
14
15
16 //////////////////////函數(shù)原型聲明//////////////////////////
17 void SMBus_ISR(void);
18 void SM_Send(unsigned int byte_address,char out_byte);
19 char SM_Receive(unsigned int byte_address);
20 void SYSCLK_Init(void);
21 void PortInit(void);
22 //////////////////////函數(shù)原型聲明//////////////////////////
23
24
25
26
27 //////////////////////////主程序///////////////////////////////////
28 void main(void)
29 {
30 1 unsigned char check;
31 1 WDTCN=0xde;
32 1 WDTCN=0xad;
33 1
34 1 SYSCLK_Init();
35 1 PortInit();
36 1
37 1 SMB0CN=0x44;
38 1 SMB0CR=-90;
39 1
40 1 EIE1|=2;
41 1 EA=1;
42 1 SomeNop();
*** WARNING C206 IN LINE 42 OF TEXT1.C: '_nop_': missing function-prototype
*** ERROR C264 IN LINE 42 OF TEXT1.C: intrinsic '_nop_': declaration/activation error
43 1 SomeNop();
44 1
45 1 SMB_BUSY=0;
46 1 SMB_BUSY=0;
47 1 SMB_BUSY=0;
48 1
49 1 /////////////////測(cè)試程序代碼///////////////////////
50 1
51 1
52 1 check=SM_Receive(0x0099);
53 1 SM_Send(0x0099,0x44);
C51 COMPILER V7.06 TEXT1 11/29/2006 11:07:47 PAGE 2
54 1 check=SM_Receive(0x0099);
55 1
56 1
57 1
58 1
59 1
60 1
61 1
62 1
63 1
64 1
65 1
66 1
67 1
68 1
69 1 while(1);
70 1 /////////////////測(cè)試程序代碼///////////////////////////
71 1 }
72 //////////////////////////////主程序////////////////////////////////////
73
74
75
76
77 /////////////////////////////////功能函數(shù)定義////////////////////////////////
78 void SYSCLK_Init(void)
79 {
80 1 int j=0;
81 1 OSCXCN=0x67;
82 1
83 1 for (j=0; j < 256; j++) ; // XTLVLD blanking interval (>1ms)
84 1
85 1 while (!(OSCXCN & 0x80)) ; // Wait for crystal osc. to settle
86 1
87 1 OSCICN = 0x88;
88 1 }
89 void PortInit(void)
90 {
91 1 XBR0 = 0x01; // Enable SPI0
92 1 XBR1 = 0x00;
93 1 XBR2 = 0x40; // Enable crossbar and weak pull-ups
94 1 P0MDOUT=0xff;
95 1 }
96
97
98
99
100 void SM_Send(unsigned int byte_address,char out_byte)
101 {
102 1
103 1 while(SMB_BUSY);
104 1 SMB_BUSY=1;
105 1 SMB0CN=0x44;
106 1 BYTE_NUMBER=2;
107 1 COMMAND=(0xA0|WRITE);
108 1 HIGH_ADD=((byte_address>>8)&0x00ff);
109 1 LOW_ADD=(byte_address&0x00ff);
110 1 WORD=out_byte;
111 1 STA=1;
112 1 }
113
114
115
C51 COMPILER V7.06 TEXT1 11/29/2006 11:07:47 PAGE 3
116
117 char SM_Receive(unsigned int byte_address)
118
119 {
120 1
121 1 while(SMB_BUSY);
122 1 SMB_BUSY=1;
123 1 SMB0CN=0x44;
124 1 BYTE_NUMBER=2;
125 1 COMMAND=(0xA0|READ);
126 1 HIGH_ADD=((byte_address>>8)&0x00ff);
127 1 LOW_ADD=(byte_address&0x00ff);
128 1 STA=1;
129 1 while(SMB_BUSY);
130 1 return WORD;
131 1 }
132
133 /////////中斷服務(wù)程序/////////
134 void SMBus_ISR(void) interrupt 7
135 {
136 1 switch(SMB0STA)
137 1 {
138 2 case SMB_START:
139 2 SMB0DAT=(COMMAND&0xFE);
140 2 STA=0;
141 2 break;
142 2 case SMB_RP_START:
143 2 SMB0DAT=COMMAND;
144 2 STA=0;
145 2 break;
146 2 case SMB_MTADDACK:
147 2 SMB0DAT=HIGH_ADD;
148 2 break;
149 2 case SMB_MTADDNACK:
150 2 STO=1;
151 2 STA=1;
152 2 break;
153 2 case SMB_MTDBACK:
154 2 switch(BYTE_NUMBER)
155 2 {
156 3 case 2:
157 3 SMB0DAT=LOW_ADD;
158 3 BYTE_NUMBER--;
159 3 break;
160 3 case 1:
161 3 if(COMMAND&0x01)
162 3 STA=1;
163 3 else
164 3 {
165 4 SMB0DAT=WORD;
166 4 BYTE_NUMBER--;
167 4 }
168 3 break;
169 3 default:
170 3 STO=1;
171 3 SMB_BUSY=0;
172 3
173 3 }
174 2 break;
175 2 case SMB_MTDBNACK:
176 2 STO=1;
177 2 STA=1;
C51 COMPILER V7.06 TEXT1 11/29/2006 11:07:47 PAGE 4
178 2 break;
179 2 case SMB_MRADDACK:
180 2 AA=0;
181 2 break;
182 2 case SMB_MRADDNACK:
183 2 STA=1;
184 2 break;
185 2 case SMB_MRDBNACK:
186 2 WORD=SMB0DAT;
187 2 STO=1;
188 2 SMB_BUSY=0;
189 2 break;
190 2 default:
191 2 STO=1;
192 2 SMB_BUSY=0;
193 2 break;
194 2
195 2 }
196 1 SI=0;
197 1
198 1 }
199
200
201 /////////中斷服務(wù)程序/////////
202
203
204 /////////////////////////////////功能函數(shù)定義////////////////////////////////
C51 COMPILATION COMPLETE. 1 WARNING(S), 1 ERROR(S)
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -