📄 cs5460a.lst
字号:
C51 COMPILER V7.00 CS5460A 07/18/2007 12:16:45 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 ROM(COMPACT) BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include "CS5460A.h"
2 #include "default.h"
3
4 sbit SK=P3^4; /* SPI时钟 */
5 sbit SO=P3^2; /* SDO */
6 sbit SI=P3^3; /* SDI */
7 sbit RST = P3^5;
8
9 uchar Read8(void); //SPI 读一个字节的 程序
10 void Write8(uchar cData); //SPI 写一个字节的 程序
11 void initspi(void); // 复位CS5460A的SPI模式 程序
12 void Write_CS5460A(uchar *p,uchar len);// 写 CS5460A 的状态寄存器
13 void Read_CS5460A(uchar *p,uchar CommData );// 读 CS5460A 的状态寄存器
14
15 xdata uchar buf5460[4];
16 code long *lbuf = (long *)&buf5460;
17 //-------------------------------------------------
18 //SPI 读一个字节的 程序
19 uchar Read8(void)
20 {
21 1 bit bData; uchar cLoop; uchar cData;
22 1 cData=0x00;
23 1 SI=1;
24 1 for(cLoop = 0; cLoop < 8; cLoop++)
25 1 {
26 2 SK=1;
27 2 SK=0; //下降沿输出
28 2 cData<<=1;
29 2 bData=SO;
30 2 if(bData) { cData|=0x01; }
31 2 }
32 1 return cData;
33 1 }
34
35 //SPI 写一个字节的 程序
36 void Write8(uchar cData)
37 {
38 1 uchar cLoop;
39 1 for(cLoop = 0; cLoop < 8; cLoop++)
40 1 {
41 2 if((cData&0x80)==0) { SI=0; }
42 2 else { SI=1; }
43 2 SK=0; //上升沿写入
44 2 SK=1;
45 2 cData <<= 1;
46 2 }
47 1 }
48
49 // 写 CS5460A 的状态寄存器
50 void Write_CS5460A(uchar *p,uchar len)
51 {
52 1 uchar i;
53 1 initspi();
54 1 for(i=0;i<len;i++)
55 1 { Write8(p[i]);}
C51 COMPILER V7.00 CS5460A 07/18/2007 12:16:45 PAGE 2
56 1 }
57
58
59 // 读 CS5460A 的状态寄存器
60 void Read_CS5460A(uchar *p,uchar CommData )
61 {
62 1 uchar i;
63 1 initspi();
64 1 Write8(CommData);
65 1 for(i = 1; i < 4; i++)
66 1 {
67 2 p[i] = Read8();
68 2 }
69 1 }
70
71 void initspi(void)
72 {
73 1 Write8(SYNC1);
74 1 Write8(SYNC1);
75 1 Write8(SYNC1);
76 1 Write8(SYNC0);
77 1 }
78
79 void Clear_DRDY()
80 {
81 1 code uchar tBuf[] = {0x5E,0xFF,0xFF,0xFF};
82 1 initspi();
83 1 Write_CS5460A(tBuf,4);
84 1 }
85
86 bit Waite_DRDY_High()
87 {
88 1 uchar i;
89 1 while(i < 250)
90 1 {
91 2 initspi();
92 2 Read_CS5460A(buf5460,0x1E);
93 2 if(buf5460[1]&0x80)
94 2 return TRUE;
95 2 i++;
96 2 delay(1000);
97 2 }
98 1 return FALSE;
99 1 }
100
101 void Reset5460A()
102 {
103 1 RST = 0;
104 1 delay(100);
105 1 RST = 1;
106 1 }
107
108 //获得当前重量数据
109 long GetWeight(void)
110 {
111 1 long xdata tWeight;
112 1 Read_CS5460A(buf5460,0x16); //读状态寄存器
113 1 buf5460[0] = 0;
114 1 tWeight = *lbuf;
115 1 for(;;)
116 1 {
117 2 Read_CS5460A(buf5460,0x16); //读状态寄存器
C51 COMPILER V7.00 CS5460A 07/18/2007 12:16:45 PAGE 3
118 2 buf5460[0] = 0;
119 2 if(tWeight == *lbuf)
120 2 {
121 3 Read_CS5460A(buf5460,0x16); //读状态寄存器
122 3 buf5460[0] = 0;
123 3 if(tWeight == *lbuf)
124 3 {
125 4 break;
126 4 }else tWeight = *lbuf;
127 3 }else tWeight = *lbuf;
128 2 }
129 1 {
130 2 code uchar buf[] = {0x5E, 0xFF,0xFF,0xFF};
131 2 Write_CS5460A(buf,4); //写状态寄存器,对应位产生的标志清除
132 2 }
133 1 return tWeight;
134 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 391 ----
CONSTANT SIZE = 11 ----
XDATA SIZE = 4 4
PDATA SIZE = ---- ----
DATA SIZE = ---- 9
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 + -