📄 sdx.lst
字号:
C51 COMPILER V8.05a SDX 11/03/2010 20:37:00 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE SDX
OBJECT MODULE PLACED IN sdx.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE sdx.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "sdx.h"
2 #include "myfun.h" //这是振南的公共函数头文件
3
4 /*******************************************************
5
6 +------------------------------------+
7 | 振南电子 驱动程序模块 SD/SDHC 部分|
8 +------------------------------------+
9
10 此源码版权属 振南 全权享有,如欲引用,敬请署名并告知
11 严禁随意用于商业目的,违者必究,后果自负
12 振南电子
13 ->产品网站 http://www.znmcu.cn/
14 ->产品论坛 http://bbs.znmcu.cn/
15 ->产品网店 http://shop.znmcu.cn/
16 ->产品咨询 QQ:987582714 MSN:yzn07@126.com
17 WW:yzn07
18 ********************************************************/
19
20 //变量定义
21 //--------------------------------------------------------------
22 bit is_init; //在初始化的时候设置此变量为1,同步数据传输(SPI)会放慢
23
24 unsigned char addr_mode; //寻址方式,1为块寻址,0为字节寻址
25 unsigned char sd_ver; //SD卡的版本 0x05说明是SD1.0 0x01说明是SD2.0
26 //---------------------------------------------------------------
27
28 unsigned char bdata _dat; //用于优化模拟SPI的中间bdata类型变量,方便取各个位
29 sbit _dat7=_dat^7;
30 sbit _dat6=_dat^6;
31 sbit _dat5=_dat^5;
32 sbit _dat4=_dat^4;
33 sbit _dat3=_dat^3;
34 sbit _dat2=_dat^2;
35 sbit _dat1=_dat^1;
36 sbit _dat0=_dat^0;
37
38 /******************************************************************
39 - 功能描述:IO模拟SPI,发送一个字节
40 - 隶属模块:SD/SDHC模块
41 - 函数属性:内部
42 - 参数说明:x是要发送的字节
43 - 返回说明:无返回
44 - 注:其中is_init为1时,写的速度放慢,初始化SD卡SPI速度不能太高
45 ******************************************************************/
46
47 void SD_spi_write(unsigned char x)
48 {
49 1 _dat=x;
50 1
51 1 SD_SI=_dat7;
52 1 SD_SCL=0;
53 1 if(is_init) delay(DELAY_TIME);
54 1 SD_SCL=1;
55 1 if(is_init) delay(DELAY_TIME);
C51 COMPILER V8.05a SDX 11/03/2010 20:37:00 PAGE 2
56 1
57 1 SD_SI=_dat6;
58 1 SD_SCL=0;
59 1 if(is_init) delay(DELAY_TIME);
60 1 SD_SCL=1;
61 1 if(is_init) delay(DELAY_TIME);
62 1
63 1 SD_SI=_dat5;
64 1 SD_SCL=0;
65 1 if(is_init) delay(DELAY_TIME);
66 1 SD_SCL=1;
67 1 if(is_init) delay(DELAY_TIME);
68 1
69 1 SD_SI=_dat4;
70 1 SD_SCL=0;
71 1 if(is_init) delay(DELAY_TIME);
72 1 SD_SCL=1;
73 1 if(is_init) delay(DELAY_TIME);
74 1
75 1 SD_SI=_dat3;
76 1 SD_SCL=0;
77 1 if(is_init) delay(DELAY_TIME);
78 1 SD_SCL=1;
79 1 if(is_init) delay(DELAY_TIME);
80 1
81 1 SD_SI=_dat2;
82 1 SD_SCL=0;
83 1 if(is_init) delay(DELAY_TIME);
84 1 SD_SCL=1;
85 1 if(is_init) delay(DELAY_TIME);
86 1
87 1 SD_SI=_dat1;
88 1 SD_SCL=0;
89 1 if(is_init) delay(DELAY_TIME);
90 1 SD_SCL=1;
91 1 if(is_init) delay(DELAY_TIME);
92 1
93 1 SD_SI=_dat0;
94 1 SD_SCL=0;
95 1 if(is_init) delay(DELAY_TIME);
96 1 SD_SCL=1;
97 1 if(is_init) delay(DELAY_TIME);
98 1 }
99
100 /******************************************************************
101 - 功能描述:IO模拟SPI,读取一个字节
102 - 隶属模块:SD/SDHC模块
103 - 函数属性:内部
104 - 参数说明:无
105 - 返回说明:返回读到的字节
106 ******************************************************************/
107
108 unsigned char SD_spi_read() //SPI读一个字节
109 {
110 1 SD_SO=1;
111 1
112 1 SD_SCL=1;
113 1 if(is_init) delay(DELAY_TIME);
114 1 SD_SCL=0;
115 1 if(is_init) delay(DELAY_TIME);
116 1 _dat7=SD_SO;
117 1
C51 COMPILER V8.05a SDX 11/03/2010 20:37:00 PAGE 3
118 1 SD_SCL=1;
119 1 if(is_init) delay(DELAY_TIME);
120 1 SD_SCL=0;
121 1 if(is_init) delay(DELAY_TIME);
122 1 _dat6=SD_SO;
123 1
124 1 SD_SCL=1;
125 1 if(is_init) delay(DELAY_TIME);
126 1 SD_SCL=0;
127 1 if(is_init) delay(DELAY_TIME);
128 1 _dat5=SD_SO;
129 1
130 1 SD_SCL=1;
131 1 if(is_init) delay(DELAY_TIME);
132 1 SD_SCL=0;
133 1 if(is_init) delay(DELAY_TIME);
134 1 _dat4=SD_SO;
135 1
136 1 SD_SCL=1;
137 1 if(is_init) delay(DELAY_TIME);
138 1 SD_SCL=0;
139 1 if(is_init) delay(DELAY_TIME);
140 1 _dat3=SD_SO;
141 1
142 1 SD_SCL=1;
143 1 if(is_init) delay(DELAY_TIME);
144 1 SD_SCL=0;
145 1 if(is_init) delay(DELAY_TIME);
146 1 _dat2=SD_SO;
147 1
148 1 SD_SCL=1;
149 1 if(is_init) delay(DELAY_TIME);
150 1 SD_SCL=0;
151 1 if(is_init) delay(DELAY_TIME);
152 1 _dat1=SD_SO;
153 1
154 1 SD_SCL=1;
155 1 if(is_init) delay(DELAY_TIME);
156 1 SD_SCL=0;
157 1 if(is_init) delay(DELAY_TIME);
158 1 _dat0=SD_SO;
159 1
160 1 return (_dat);
161 1 }
162
163 /******************************************************************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -