📄 ad7705 sensor.lst
字号:
C51 COMPILER V7.50 AD7705_SENSOR 03/13/2007 14:59:24 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE AD7705_SENSOR
OBJECT MODULE PLACED IN AD7705 SENSOR.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE AD7705 SENSOR.C OBJECTADVANCED ROM(COMPACT) OPTIMIZE(11,SIZE) BROWSE DEBUG
line level source
1 #include <reg931.h>
2 #include <stdio.h>
3 #include <flashiap.h>
4
5 #define uchar unsigned char
6 #define uint unsigned int
7 #define CH1 1 /*AD7705输入通道IN1*/
8 #define CH2 2 /*AD7705输入通道IN2*/
9 #define BIPOLAR 0 /*AD7705双极性输入*/
10 #define UNIPOLAR 1 /*AD7705单极性输入*/
11 #define AD_CLK_WIDTH 1 /*AD7705串口时钟脉冲宽度*/
12 sbit AdClk = P2^5; /*AD7705时钟脉冲*/
13 sbit AdDout = P2^3; /*AD7705数据输出的反相脉冲*/
14 sbit AdDin = P2^2; /*AD7705数据输入脉冲*/
15 sbit DRDY = P2^7;
16 sbit REST = P2^6;
17 sbit ALARM_X = P2^0;
18 sbit ALARM_Y = P2^1;
19 uchar code BAUD_Data = 0xfa; /*存储波特率初值*/ //19200
20 uchar code ID1 = 0x30,ID0 = 0x31,Update = 1;
21 uchar code ALARM[8]={0x01,0x00,0xff,0xff,0x01,0x00,0xff,0xff};
22 uchar code ZERO[4]; //////////////////////
23 uint idata ZeroPoint_X,ZeroPoint_Y;
24 uint idata ReceiveData_X[4]; /*存储从AD7705读到的转换结果*/
25 uint idata ReceiveData_Y[4];
26 uint idata ALARM_X_P,ALARM_Y_P,ALARM_X_N,ALARM_Y_N;
27 uchar idata RIFlag,SendFlag,ArrangeFlag,InitFlag;
28 uchar idata BAUD_temp,BAUD_Data_temp,Update_temp = 1,ID0_temp,ID1_temp,ZeroPoint_X_temp,ZeroPoint_Y_temp;
29 uchar idata CommandData[7]; /*存储从串口接收到的命令数据*/
30 uchar idata i = 6; /*命令数据字符串的小脚标*/
31 uchar f = 1,ChannelFlag = 2,zerotemp;
32 float idata LSB = 0.000457764;
33 //---------------------------------------------------------------------------
34 //功能:看门狗初始化
35 //---------------------------------------------------------------------------
36 void WatchdogInit(void)
37 {
38 1 WDL = 0XFF; //看门狗复位时间
39 1 EA =0;
40 1 WDCON = 0XE6; //选择看门狗振荡器为看门狗时钟源;//0XE5;选择PCLK为看门狗时钟源
41 1 WFEED1 = 0XA5;
42 1 WFEED2 = 0X5A;
43 1 EA =1;
44 1 }
45 ///---------------------------------------------------------------------------
46 //功能:关看门狗定时器时钟
47 //---------------------------------------------------------------------------
48 void WatchdogStop(void)
49 {
50 1 EA =0;
51 1 WDCON =0XE1;
52 1 WFEED1 =0XA5;
53 1 WFEED2 =0X5A;
54 1 EA =1;
55 1 }
C51 COMPILER V7.50 AD7705_SENSOR 03/13/2007 14:59:24 PAGE 2
56 //---------------------------------------------------------------------------
57 //功能:喂狗程序
58 //---------------------------------------------------------------------------
59 void WatchdogFeed(void)
60 {
61 1 EA =0;
62 1 WFEED1 = 0XA5;
63 1 WFEED2 = 0X5A;
64 1 EA =1;
65 1 }
66
67 //---------------------------------------------------------------------------
68 //功能:初始化单片机接口
69 //---------------------------------------------------------------------------
70 /*void UART_Init()
71 {
72 P1M1 = 0x00;
73 P1M2 = 0x00;
74 SCON = 0x52;
75 SSTAT = 0x60;
76 BRGR1 = 0x02;
77 BRGR0 = 0xf0;
78 BRGCON = 0x03;
79 }
80 */
81 //---------------------------------------------------------------------------
82 //功能:串口中断处理
83 //---------------------------------------------------------------------------
84 void serial() interrupt 4 using 1
85 {
86 1 if(RI)
87 1 {
88 2 CommandData[i] = SBUF;
89 2 if(CommandData[i] == 0x0d)
90 2 {
91 3 RIFlag = 1;
92 3 }
93 2 i--;
94 2 }
95 1 RI = 0;
96 1 }
97 //---------------------------------------------------------------------------
98 //功能:AD7705软件延时d
99 //---------------------------------------------------------------------------
100 void Wait7705(unsigned int t)
101 {
102 1 for( ;t>0 ;t-- );
103 1 }
104 //---------------------------------------------------------------------------
105 //功能:向AD7705写入一个字
106 //---------------------------------------------------------------------------
107 void WriteByte7705(uchar x)
108 {
109 1 uchar i;
110 1 AdClk = 1;
111 1 for (i=0; i<8; i++)
112 1 {
113 2 AdClk=0;
114 2 Wait7705(AD_CLK_WIDTH);
115 2 AdDin =(bit) (x & 0x80);
116 2 Wait7705(AD_CLK_WIDTH);
117 2 AdClk=1;
C51 COMPILER V7.50 AD7705_SENSOR 03/13/2007 14:59:24 PAGE 3
118 2 Wait7705(AD_CLK_WIDTH);
119 2 x <<=1;
120 2 }
121 1 }
122 //---------------------------------------------------------------------------
123 //功能:从AD7705读一个字
124 //---------------------------------------------------------------------------
125 uint ReadWord7705(void)
126 {
127 1 uchar i;
128 1 uint x ;
129 1 AdClk = 1 ;
130 1 for (i = 0,x=0 ; i < 16 ; i++)
131 1 {
132 2 AdClk=0;
133 2 Wait7705(AD_CLK_WIDTH);
134 2 x<<=1;
135 2 if (AdDout) /* 光电耦合器反相 */
136 2 x |= 0x01;
137 2 AdClk=1;
138 2 Wait7705(AD_CLK_WIDTH);
139 2 }
140 1 return x;
141 1 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -