?? 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 + -