📄 main.lst
字号:
C51 COMPILER V7.50 MAIN 04/04/2006 16:00:50 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN MAIN.OBJ
COMPILER INVOKED BY: c:\Keil\C51\BIN\C51.EXE MAIN.C BROWSE DEBUG OBJECTEXTEND
line level source
1 //#pragma src
2 // ***************交流采样测试成功****************
3
4 /*======================================================
5 CopyRight by Protronic .Ltd
6 Project: AC Voltage Caputure testing system
7 Fiel Name: at89s52
8 Creator: LaiYongZhong
9 Create Date: 2005/08/20
10 Last modify: 2006/02/20
11
12
13
14 交流采样原理:就是根据一个周期各采样瞬时值及每周期采样点数计算电压信号有效值的公式。
15
16 计算步骤:
17 1: 先计算每次采样数据对应的实际电压值(要跟据A/D,基准参数确定),再求其平方
18 2: 再将N次采样实际电压值的平方值求和,然后求其平均值
19 3: 将平均值开方,得出的数值就是电压的有效值了。
20
21
22 注意:此采用的A/D器件应有允许‘正负输入’这一量程。如:MAX1271,ADS7808,等
23 =======================================================*/
24 //////////////////////////////////////////////////////////////////////////////
25 #include<REG51.h>
26 #include<intrins.h>
27 #include<absacc.h>
28 #include<math.h>
29 #include<stdio.H>
30 #include<string.h>
31
32 ////////////////////////////////////////////////////////////////////////////////
33
34 //#define _PC_DEBUG_
35
36
37
38 #define uchar unsigned char
39 #define uint unsigned int
40 #define ulong unsigned long
41
42
43 #define nop _nop_()
44 #define Timeout 0xfff
45 #define ADCPoint_SIZE 50
46 #define Vref 10 //+/-5v
47 #define LSB_12bit 4096
48 #define TRUE 1
49 #define FALSE 0
50 //-----输入口----------
51 ////////ADS7808(12BIT)///////////////
52 sbit ADS7808_RC =P1^3 ;
53 sbit ADS7808_CLK =P1^4 ;
54 sbit ADS7808_CS =P1^5;
55 sbit ADS7808_DATA =P1^7 ;
C51 COMPILER V7.50 MAIN 04/04/2006 16:00:50 PAGE 2
56
57
58 sbit TEST_key =P3^6;
59
60 //==============================================================
61
62 uint idata *pADC_buffer ; //定义存放A/D转换结果的数组,
63 static uchar byADC_count;
64 bit bSTART_ADC;
65
66 //-----------------------------------------------------------------
67 #define XPORT1 XBYTE[0X000]
68 #define XPORT2 XBYTE[0X001]
69
70 //##################################################
71 ////////////////////////////////////////////////////
72 // 初始化系统
73
74 ///////////////////////////////////////////////////
75 void INI_SYS(void){
76 1 uint i;
77 1
78 1 P0=P1=P2=P3=0XFF;
79 1 pADC_buffer=0x80;
80 1 // pADC_buffer[0]=0x44;
81 1
82 1 TMOD= 0X01; //T0 model1 16bit
83 1 TL0 = 0XE0;
84 1 TH0 = 0XFC; //400US
85 1 ET0 = 1;
86 1 EA = 1;
87 1
88 1 for(i=0;i<ADCPoint_SIZE;i++) pADC_buffer[i]=0;
89 1
90 1 #ifdef _PC_DEBUG_
SCON = 0x50; /* SCON: mode 1, 8-bit UART, enable rcvr */
TMOD |= 0x20; /* TMOD: timer 1, mode 2, 8-bit reload */
TL1=TH1 = 0XFD; /* TH1: reload value for 1200 baud @ 16MHz */
TR1 = 1; /* TR1: timer 1 run */
TI = 1; /* TI: set TI to send first char of UART */
#endif
97 1
98 1
99 1 }
100 ////////////////////////////////////////
101
102
103 //================================================
104 void delay1ms(uchar m)
105 {
106 1 uint i;
107 1 do{
108 2 m-- ;
109 2 for(i=1000;i>0;i--);
110 2 }while(m) ;
111 1
112 1
113 1 }
114
115
116
117 /*****************************************************************
C51 COMPILER V7.50 MAIN 04/04/2006 16:00:50 PAGE 3
118 函数原型: void Read2_ADS7808(void)
119 参数: 无
120 返回值: Read
121 描述: 读ADS7808数据存于指定数组中(12bit数据)(1次读性12bit)
122
123 测试Y/N: N
124 ****************************************************************/
125 uint Read_ADS7808(void)
126 {
127 1 uint Read=0x0000;
128 1 uchar i;
129 1
130 1 ADS7808_CS=0; //开芯片使能
131 1 ADS7808_RC=0; //读使能(1:读数据操作:0:启动转
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -