📄 spi.lst
字号:
C51 COMPILER V7.09 SPI 11/08/2005 15:50:14 PAGE 1
C51 COMPILER V7.09, COMPILATION OF MODULE SPI
OBJECT MODULE PLACED IN SPI.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE SPI.c OPTIMIZE(2,SPEED) BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "reg51.h"
2
3 sbit CS=P1^0;
4 sbit SI=P1^1;
5 sbit SO=P1^2;
6 sbit SCLK=P1^3;
7
8
9 void SPI_Send(char temp)
10 {
11 1 int i;
12 1
13 1 CS=0;
14 1 for(i=0x00;i<0x08;i++)
15 1 {
16 2
17 2 if(temp&0x80)
18 2 {
19 3 SI=1;
20 3 }
21 2 else
22 2 {
23 3 SI=0;
24 3 }
25 2 temp=temp<<1;
26 2
27 2 SCLK=0;
28 2 SCLK=1;
29 2 }
30 1
31 1 CS=1;
32 1
33 1 }
34
35 char SPI_Read()
36 {
37 1 char temp;
38 1 int i;
39 1
40 1 CS=0;
41 1
42 1 for(i=0x00;i<0x08;i++)
43 1 {
44 2 temp=temp<<1;
45 2
46 2 SCLK=0;
47 2 SCLK=1;
48 2
49 2 if(SO==1)
50 2 {
51 3 temp=temp|0x01;
52 3 }
53 2 else
54 2 {
55 3 temp=temp&0xFE;
C51 COMPILER V7.09 SPI 11/08/2005 15:50:14 PAGE 2
56 3 }
57 2 }
58 1
59 1 CS=1;
60 1 return temp;
61 1 }
62
63
64 char SPI_ReadRegister(char Reg,char channel)
65 {
66 1 char RegValue;
67 1
68 1 Reg=Reg<<2;
69 1 Reg=Reg+channel;
70 1 Reg=Reg|0x80;
71 1
72 1 SPI_Send(Reg);
73 1 RegValue=SPI_Read();
74 1
75 1 return RegValue;
76 1 }
77
78 void SPI_WriteRegister(char Reg,char channel,char RegValue)
79 {
80 1 Reg=Reg<<2;
81 1 Reg=Reg+channel;
82 1 Reg=Reg&0x7F;
83 1
84 1 SPI_Send(Reg);
85 1 SPI_Send(RegValue);
86 1 }
87
88 //-----------------------------------------
89 //ReadData
90 //-----------------------------------------
91 void SPI_ReadData(char Reg,char channel,char *Value,unsigned char num)
92 {
93 1 Reg=Reg<<2;
94 1 Reg=Reg+channel;
95 1 Reg=Reg|0x80;
96 1
97 1 SPI_Send(Reg);
98 1 while(num>0)
99 1 {
100 2 *Value=SPI_Read();
101 2 Value++;
102 2 num--;
103 2 }
104 1 }
105
106 //-----------------------------------------
107 //WriteData
108 //-----------------------------------------
109 void SPI_WriteData(unsigned char Reg,unsigned char channel,unsigned char *Value,unsigned char num)
110 {
111 1 Reg=Reg<<3;
112 1 Reg=Reg+channel;
113 1
114 1 SPI_Send(Reg);
115 1 while(num>0)
116 1 {
117 2 SPI_Send(*Value);
C51 COMPILER V7.09 SPI 11/08/2005 15:50:14 PAGE 3
118 2 Value++;
119 2 num--;
120 2 }
121 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 316 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 24
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 + -