📄 cc1160.lst
字号:
C51 COMPILER V8.02 CC1160 05/04/2008 21:35:46 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE CC1160
OBJECT MODULE PLACED IN CC1160.OBJ
COMPILER INVOKED BY: e:\Keil\C51\BIN\C51.EXE CC1160.C BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<config.h>
2 #include<head.h>
3 #pragma OPTIMIZE(8,size)
4
5
6 #define ADBUFEN 0 //cs1160的输入buf是否开启,开启后噪音较大,但输入阻抗可达10m
7
8 long pdata adreadtemp[3];
9
10 union LongData
11 {
12 unsigned long word ;
13 unsigned char byte[4];
14 };
15 //
16 void delay_50us(void)
17 {
18 1 unsigned char i;
19 1 for (i=0; i<16; i++)
20 1 ;
21 1 }
22 void SPI_clock(void)
23 {
24 1 SCLK = LOW;
25 1 _nop_();_nop_();
26 1 SCLK = HIGH;
27 1 _nop_();_nop_();
28 1 }
29 /**************************************************************************************
30 *函数原型: void SPI_send(unsigned char SPI_data)
31 *功能 : 向spi总线上发送8位数据信号
32 **************************************************************************************/
33 void SPI_send(unsigned char SPI_data)
34 {
35 1 unsigned char bitCount;
36 1 for (bitCount=0; bitCount<8; bitCount++)
37 1 {
38 2 SDI = (bit)(SPI_data & 0x80);
39 2 SPI_data <<= 1;
40 2 SPI_clock();
41 2 }
42 1 }
43 /**************************************************************************************
44 *函数原型: unsigned char SPI_receive(void)
45 *功能 : 从spi总线上接受8位数据信号,并将接收到的数据作为一个字节返回
46 **************************************************************************************/
47 unsigned char SPI_receive(void)
48 {
49 1 unsigned char bitCount;
50 1 unsigned char SPI_data=0;
51 1 SDO = 1;
52 1 for (bitCount=0; bitCount<8; bitCount++)
53 1 {
54 2 SPI_data *= 2;
55 2 SCLK = HIGH;
C51 COMPILER V8.02 CC1160 05/04/2008 21:35:46 PAGE 2
56 2 _nop_();_nop_();
57 2 SCLK = LOW;
58 2 _nop_();_nop_();
59 2 if (SDO)
60 2 {
61 3 SPI_data++;
62 3 }
63 2 }
64 1 return (SPI_data);
65 1 }
66
67 /**************************************************************************
68 * 函数原型:void EXT0_INT(void);
69 * 功 能:外部中断读AD中断!
70 **************************************************************************/
71 void exit_int0() interrupt 0
72 {
73 1 unsigned char i;
74 1 union LongData a;
75 1 while (DRDY) //当drdy 为高时,不读取数据
76 1 ;
77 1 a.byte[0] = 0;
78 1 CS = LOW;
79 1 _nop_();_nop_();
80 1 SPI_send(COMM_RDATA);
81 1 delay_50us();
82 1 for (i=1;i<4;i++)
83 1 {
84 2 a.byte[i] = SPI_receive();
85 2 }
86 1 CS = HIGH;
87 1 adreadtemp[0]=adreadtemp[1];
88 1 adreadtemp[1]=adreadtemp[2];
89 1 adreadtemp[2]=(a.word>>8);
90 1 PostMessageOne(M_ADHAD,0);
91 1 }
92
93 /**************************************************************************
94 * 函数原型: ulong CS1160read();
95 * 功 能:读AD功能函数
96 **************************************************************************/
97 long CS1160read()
98 {
99 1 return adreadtemp[0]+adreadtemp[1]+adreadtemp[2];
100 1 }
101
102
103 /******************************************************
104 *函数原型: void InitCS1160(void)
105 *功能 : 初始化CS1160
106 **************************************************************************************/
107 void InitCS1160(uchar gain,uchar adzero)
108 {
109 1 SCLK = HIGH;
110 1 SDI = HIGH ;
111 1 SDO = HIGH ;
112 1 _nop_();_nop_();
113 1 CS = LOW;
114 1 _nop_();_nop_();
115 1 SPI_send(COMM_RESET); //rst 1240
116 1 _nop_();_nop_();
117 1 CS = HIGH;
C51 COMPILER V8.02 CC1160 05/04/2008 21:35:46 PAGE 3
118 1 delay_50us();
119 1
120 1
121 1 CS = LOW;
122 1 _nop_();_nop_();
123 1 SPI_send(0x50);
124 1 SPI_send(0x02); // 发送3个指令
125 1 if(gain==64)
126 1 SPI_send(0x06); // 0x00 pga =64
127 1 else
128 1 SPI_send(0x07); // 0x00 pga =128
129 1 SPI_send(0x01); // 0x01 设置ad 通道
130 1 #if ADBUFEN
SPI_send(0x70); // 0x02 输出频率 15hz,参考电压2.5V
#else
133 1 SPI_send(0x60); // 0x02 输出频率 15hz,参考电压2.5V
134 1 #endif
135 1 _nop_();_nop_();
136 1 CS = HIGH;
137 1 delay_50us();
138 1
139 1 CS = LOW;
140 1 _nop_();_nop_();
141 1 SPI_send(COMM_CALSELF);
142 1 _nop_();_nop_();
143 1 CS = HIGH;
144 1 while (DRDY)
145 1 ;
146 1 while (!DRDY)
147 1 ;
148 1 delayms(10);
149 1 while (DRDY) //扔调一次 数据
150 1 ;
151 1 IT0=1;
152 1 EX0=1;
153 1 EA=1;
154 1
155 1 }
*** WARNING C280 IN LINE 107 OF CC1160.C: 'adzero': unreferenced local variable
156
157
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 325 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = 12 ----
DATA SIZE = ---- 5
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -