📄 cs5460.lst
字号:
C51 COMPILER V8.01 CS5460 01/25/2007 09:59:10 PAGE 1
C51 COMPILER V8.01, COMPILATION OF MODULE CS5460
OBJECT MODULE PLACED IN cs5460.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE cs5460.c BROWSE DEBUG OBJECTEXTEND
line level source
1 //-------------存在的问题------------------------------------------
2 //问题一:目前没有办法检验这个模块是否正确,因为无法确定得出的数据是否合理
3 // 暂时将这个模块存放在主程序中,通过真实地称重来检验是否准确。
4 // 尽管我目前我无法准确判断,得到的AD值是否准确,但是至少线性
5 // 应该正确,AD值也不能太小。
6 //问题二:现在不能实现连续转换
7 #include<reg52.h>
8 #include<intrins.h>
9 #define uchar unsigned char
10 #define uint unsigned int
11 //以下是cs5460的管脚定义:
12 sbit reset_5460=P1^0;
13 sbit sdo_5460=P1^1;
14 sbit sclk_5460=P1^2;
15 sbit sdi_5460=P1^3;
16 long buf_rd[3]={0,0,0};
17 //以下是cs5460的函数声明
18 void cmd_5460(uchar cmd);
19 long read_5460(void);
20 void delay_nms(uint n);
21 void main(void)
22 {
23 1 char k;
24 1 cmd_5460(0xff);
25 1 cmd_5460(0xff);
26 1 cmd_5460(0xff);
27 1 cmd_5460(0xfe);//以上四条命令的功能:初始化5460的串口
28 1 cmd_5460(0xe8);//启动5460的连续转换
29 1 delay_nms(5000);
30 1 //cmd_5460(0x0e);//读取瞬时电流寄存器
31 1 k=0;
32 1 while(k<3)
33 1 {
34 2 cmd_5460(0x0e);//读取瞬时电流寄存器
35 2 buf_rd[k]=read_5460();
36 2 delay_nms(1000);
37 2 k++;
38 2 }
39 1 //read_5460();
40 1 _nop_();
41 1 }
42
43
44
45 /*************************************************
46 原型:void cmd_5460(uchar cmd)
47 行参:uchar cmd
48 返回值:无
49 功能:向cs5460中写入8位的命令
50 *************************************************/
51 void cmd_5460(uchar cmd)
52 {
53 1 char i=8;
54 1 while(i>0)
55 1 {
C51 COMPILER V8.01 CS5460 01/25/2007 09:59:10 PAGE 2
56 2 sclk_5460=0;
57 2 if(cmd>=0x80)
58 2 sdi_5460=1;
59 2 else
60 2 sdi_5460=0;
61 2 sclk_5460=1;
62 2 i--;
63 2 cmd<<=1;
64 2 }
65 1 }
66 /******************************
67 原型:void delay_nms(uint n)
68 行参:uint n
69 返回值:无
70 功能:延时n ms
71 *****************************/
72 void delay_nms(uint n)
73 {
74 1 uchar i;
75 1 for(;n>0;n--)
76 1 {
77 2 for(i=125;i>0;i--)
78 2 {
79 3 ;
80 3 }
81 2 }
82 1 }
83 /******************************
84 原型:void read_5460(void)
85 行参:无
86 返回值:无
87 功能:从cs5460中读取24位数据,存放在数据缓冲区buf_read中
88 *****************************/
89 /****************************
90 void read_5460(void)
91 {
92 char i;
93 char j;
94 long temp;
95 j=0;
96 while(j<3)
97 {
98 i=24;
99 temp=0;
100 sdi_5460=1;
101 while(i>0)
102 {
103 sclk_5460=0;
104 temp<<=1;
105 sclk_5460=1;
106 _nop_();
107 if(sdo_5460==1)
108 temp|=0x00000001;
109 i--;
110 }
111 buf_rd[j]=temp;
112 j++;
113 delay_nms(1000);
114 }
115 }
116 ******************************/
117 long read_5460(void)
C51 COMPILER V8.01 CS5460 01/25/2007 09:59:10 PAGE 3
118 {
119 1 char i;
120 1 char j=0;
121 1 //char k;
122 1 long temp;
123 1 //k=0;
124 1 //cmd_5460(0x0e);//读取瞬时电流寄存器
125 1 //read_5460();
126 1 temp=0;
127 1 while(j<3)
128 1 {
129 2 i=7;
130 2 sdi_5460=1;
131 2 while(i>0)
132 2 {
133 3 sclk_5460=0;
134 3 temp<<=1;
135 3 sclk_5460=1;
136 3 _nop_();
137 3 if(sdo_5460==1)
138 3 temp|=0x00000001;
139 3 i--;
140 3 }
141 2 sdi_5460=0;
142 2 sclk_5460=0;
143 2 temp<<=1;
144 2 sclk_5460=1;
145 2 _nop_();
146 2 if(sdo_5460==1)
147 2 temp|=0x00000001;
148 2 j++;
149 2 }
150 1 return(temp);
151 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 183 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 12 1
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 + -