📄 cs5460a.lst
字号:
C51 COMPILER V7.00 CS5460A 11/15/2007 18:54:05 PAGE 1
C51 COMPILER V7.00, COMPILATION OF MODULE CS5460A
OBJECT MODULE PLACED IN CS5460A.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE CS5460A.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include "CS5460A.h"
2 #include "STC89C51RC_RD_PLUS.H"
3 #include "intrins.h"
4
5 sbit SK=P2^2; /* SPI时钟 */
6 sbit SO=P2^0; /* SDO */
7 sbit SI=P2^4; /* SDI */
8 sbit RST = P2^3;
9
10 //sbit CS5532_CS=P1^2;
11 //sbit CS5532_SDI=P2^4;
12 //sbit CS5532_SCLK=P2^2;
13 //sbit CS5532_SDO=P2^0;
14
15 uchar Read8(void); //SPI 读一个字节的 程序
16 void Write8(uchar cData); //SPI 写一个字节的 程序
17 void initspi(void); // 复位CS5460A的SPI模式 程序
18 void Write_CS5460A(uchar *p,uchar len);// 写 CS5460A 的状态寄存器
19 void Read_CS5460A(uchar *p,uchar CommData );// 读 CS5460A 的状态寄存器
20
21 xdata uchar buf5460[5];
22 code long *lbuf = (long *)&buf5460;
23 //-------------------------------------------------
24 //SPI 读一个字节的 程序
25 uchar Read8(void)
26 {
27 1 bit bData; uchar cLoop; uchar cData;
28 1 //P2_6 = 0;
29 1 SI=0;
30 1 cData=0x00;
31 1 for(cLoop = 0; cLoop < 8; cLoop++)
32 1 {
33 2 SK=1;
34 2 SK=0; //下降沿输出
35 2 cData<<=1;
36 2 bData=SO;
37 2 if(bData) { cData|=0x01; }
38 2 }
39 1 return cData;
40 1 }
41
42 //SPI 写一个字节的 程序
43 void Write8(uchar cData)
44 {
45 1 xdata uchar cLoop;
46 1 //P2_6 = 0;
47 1 SO = 1;
48 1 for(cLoop = 0; cLoop < 8; cLoop++)
49 1 {
50 2 if((cData&0x80)==0) { SI=0; }
51 2 else { SI=1; }
52 2 SK=0; //上升沿写入
53 2 _nop_();_nop_();_nop_();_nop_();
54 2 SK=1;
55 2 _nop_();_nop_();_nop_();_nop_();
C51 COMPILER V7.00 CS5460A 11/15/2007 18:54:05 PAGE 2
56 2 cData <<= 1;
57 2 }
58 1 SI = 0;
59 1 }
60
61 // 写 CS5460A 的状态寄存器
62 void Write_CS5460A(uchar *p,uchar len)
63 {
64 1 xdata uchar i;
65 1 //initspi();
66 1 for(i=0;i<len;i++)
67 1 { Write8(p[i]);}
68 1 }
69
70
71 // 读 CS5460A 的状态寄存器
72 void Read_CS5460A(uchar *p,uchar CommData )
73 {
74 1 xdata uchar i;
75 1 //initspi();
76 1 Write8(CommData);
77 1 for(i = 0; i < 4; i++)
78 1 {
79 2 p[i] = Read8();
80 2 }
81 1 }
82
83 void initspi(void)
84 {
85 1 Write8(SYNC1);
86 1 Write8(SYNC1);
87 1 Write8(SYNC1);
88 1 Write8(SYNC0);
89 1 }
90
91 void Clear_DRDY()
92 {
93 1 code uchar tBuf[] = {0x5E,0xFF,0xFF,0xFF};
94 1 initspi();
95 1 Write_CS5460A(tBuf,4);
96 1 }
97
98 bit Waite_DRDY_High()
99 {
100 1 xdata uchar i;
101 1 while(i < 250)
102 1 {
103 2 initspi();
104 2 Read_CS5460A(buf5460,0x1E);
105 2 if(buf5460[1]&0x80)
106 2 return 1;
107 2 i++;
108 2 //delay(1000);
109 2 }
110 1 return 0;
111 1 }
112
113 void Reset5460A()
114 {
115 1 RST = 0;
116 1 // delay(100);
117 1 RST = 1;
C51 COMPILER V7.00 CS5460A 11/15/2007 18:54:05 PAGE 3
118 1 }
119
120 //获得当前重量数据
121 long GetWeight(void)
122 {
123 1 xdata long tWeight;
124 1 Read_CS5460A(buf5460,0x16); //读状态寄存器
125 1 buf5460[0] = 0;
126 1 tWeight = *lbuf;
127 1 /*for(;;)
128 1 {
129 1 Read_CS5460A(buf5460,0x16); //读状态寄存器
130 1 buf5460[0] = 0;
131 1 if(tWeight == *lbuf)
132 1 {
133 1 Read_CS5460A(buf5460,0x16); //读状态寄存器
134 1 buf5460[0] = 0;
135 1 if(tWeight == *lbuf)
136 1 {
137 1 break;
138 1 }else tWeight = *lbuf;
139 1 }else tWeight = *lbuf;
140 1 }*/
141 1 {
142 2 code uchar buf[] = {0x5E, 0xFF,0xFF,0xFF};
143 2 Write_CS5460A(buf,4); //写状态寄存器,对应位产生的标志清除
144 2 }
145 1 return tWeight;
146 1 }
147
148 long Get5460Reg(uchar uReg)
149 {
150 1 Read_CS5460A(buf5460,uReg); //读状态寄存器
151 1 buf5460[0] = 0;
152 1 if(buf5460[1]&0x80)
153 1 {
154 2 buf5460[0] = 0xFF;
155 2 }
156 1 return *lbuf;
157 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 350 ----
CONSTANT SIZE = 11 ----
XDATA SIZE = 5 8
PDATA SIZE = ---- ----
DATA SIZE = ---- 6
IDATA SIZE = ---- ----
BIT SIZE = ---- 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -