📄 main.lst
字号:
C51 COMPILER V7.06 MAIN 11/18/2006 22:47:02 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /*---------------------------------------
2 Net analyse's C main file
3 Creat by Computer-lov Date: 2005.7.19
4 Last edit date:2005.11.18
5 Copyright(C) 2005-2015 Computer-lov
6 All rights reserved
7 Welcome to my Blog: Http://computer00.21ic.org
8 -----------------------------------------*/
9
10 #include <AT89X52.h>
11 #include "hardware.h"
12 #include "i2c.h"
13 #include "serial_port.h"
14 #include <math.h>
15
16 //*****************************************************************************************
17 void InitAD5933(void) //AD5933初始化
18 {
19 1 Write_a_data(D_ADDR,0x80,0xB0);
20 1 Write_a_data(D_ADDR,0x81,0x08);
21 1
22 1 Write_a_data(D_ADDR,0x82,0x00); //start frequency
23 1 Write_a_data(D_ADDR,0x83,0x83); //1kHz
24 1 Write_a_data(D_ADDR,0x84,0x12);
25 1
26 1 Write_a_data(D_ADDR,0x85,0x00); //increment frequency
27 1 Write_a_data(D_ADDR,0x86,0x41); //100Hz
28 1 Write_a_data(D_ADDR,0x87,0x89);
29 1
30 1 Write_a_data(D_ADDR,0x88,0x01); //测量点数
31 1 Write_a_data(D_ADDR,0x89,0xFF);
32 1
33 1 Write_a_data(D_ADDR,0x8A,0x01); //等待建立周期数
34 1 Write_a_data(D_ADDR,0x8B,0xFF);
35 1
36 1 Write_a_data(D_ADDR,0x80,0x13);
37 1 Write_a_data(D_ADDR,0x80,0x23);
38 1 }
39 //****************************************************************************************
40
41 //****************************************************************************************
42 unsigned int ReadData(unsigned char addr) //读数据
43 {
44 1 return Read_a_data(D_ADDR,addr);
45 1 }
46 //****************************************************************************************
47
48 //****************************************************************************************
49 void DelayXms(unsigned int x)
50 {
51 1 unsigned int i;
52 1 for(;x>0;x--)
53 1 for(i=0;i<133;i++);
54 1 }
55 //****************************************************************************************
C51 COMPILER V7.06 MAIN 11/18/2006 22:47:02 PAGE 2
56
57
58 //****************************************************************************************
59 void main(void)
60 {
61 1 unsigned char Status; //保存状态
62 1 unsigned int Re,Im,Tm; //保存实部,虚部,温度
63 1 unsigned int Count; //计数
64 1
65 1 InitComport(); //串口初始化
66 1 InitAD5933(); //AD5933初始化
67 1
68 1 while(1)
69 1 {
70 2 OK=0;
71 2 while(!OK); //等待主机发送数据
72 2
73 2 //复位AD5933
74 2 Write_a_data(D_ADDR,0x81,0x18);
75 2 Write_a_data(D_ADDR,0x81,0x08);
76 2
77 2 //启动温度测量
78 2 Write_a_data(D_ADDR,0x80,0x93);
79 2
80 2 //等待转换完成
81 2 do
82 2 {
83 3 Status=ReadData(0x8F);
84 3 }while(!(Status & 0x01));
85 2
86 2 //读出温度,保存在Tm中
87 2 Tm=ReadData(0x92);
88 2 Tm<<=8;
89 2 Tm+=ReadData(0x93);
90 2 Tm<<=2;
91 2
92 2 //将温度值通过串口发送
93 2 SendToComport('T');
94 2 PrintHex(Tm);
95 2 SendToComport('E');
96 2
97 2 //设置启始频率。参数来自串口接收到的buffer[0]、buffer[1]、buffer[2]中
98 2 Write_a_data(D_ADDR,0x82,Buffer[0]); //start frequency
99 2 Write_a_data(D_ADDR,0x83,Buffer[1]);
100 2 Write_a_data(D_ADDR,0x84,Buffer[2]);
101 2
102 2 //设置频率增量。参数来自串口接收到的buffer[3]、buffer[4]、buffer[5]中
103 2 Write_a_data(D_ADDR,0x85,Buffer[3]); //increment frequency
104 2 Write_a_data(D_ADDR,0x86,Buffer[4]);
105 2 Write_a_data(D_ADDR,0x87,Buffer[5]);
106 2
107 2 //设置等待建立周期数
108 2 Write_a_data(D_ADDR,0x8A,0x01); //number of setting time cycles
109 2 Write_a_data(D_ADDR,0x8B,0xFF);
110 2
111 2 //设置幅度以及增益
112 2 Buffer[6]|=0xF0; //Buffer[6] 低3位设置输出幅度以及增益
113 2 Write_a_data(D_ADDR,0x80,0x17 & Buffer[6]); //Control register
114 2 Write_a_data(D_ADDR,0x80,0x27 & Buffer[6]);
115 2
116 2 //通知上位机,接下来的数据是阻抗测试数据
117 2 SendToComport('S');
C51 COMPILER V7.06 MAIN 11/18/2006 22:47:02 PAGE 3
118 2 DelayXms(50);
119 2
120 2 //设置等待建立周期数
121 2 Write_a_data(D_ADDR,0x8A,0x00); //number of setting time cycles
122 2 Write_a_data(D_ADDR,0x8B,Buffer[7]);
123 2
124 2 //测试105个点。
125 2 for(Count=0;Count<105;Count++)
126 2 {
127 3
128 3 //等待一个点测试完毕
129 3
130 3 do
131 3 {
132 4 Status=ReadData(0x8F);
133 4 }while(!(Status & 0x02));
134 3
135 3 if(Cancel)break; //如果接收到取消命令,则取消测试
136 3
137 3 //读回阻抗的实部和虚部
138 3 Re=ReadData(0x94);
139 3 Re<<=8;
140 3 Re+=ReadData(0x95);
141 3
142 3 Im=ReadData(0x96);
143 3 Im<<=8;
144 3 Im+=ReadData(0x97);
145 3
146 3 Write_a_data(D_ADDR,0x80,0x37&Buffer[6]); //频率调整
147 3
148 3 SendToComport('R');
149 3 PrintHex(Re);
150 3 SendToComport('E');
151 3
152 3 SendToComport('I');
153 3 PrintHex(Im);
154 3 SendToComport('E');
155 3 }
156 2 }
157 1 }
158 //************************************************************************************************
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 568 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 9
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 + -