?? main.src
字號:
; MAIN.SRC generated from: MAIN.C
; COMPILER INVOKED BY:
; C:\Keil\C51\BIN\C51.EXE MAIN.C BROWSE DEBUG OBJECTEXTEND
$NOMOD51
NAME MAIN
P0 DATA 080H
P1 DATA 090H
P2 DATA 0A0H
P3 DATA 0B0H
T0 BIT 0B0H.4
AC BIT 0D0H.6
T1 BIT 0B0H.5
EA BIT 0A8H.7
IE DATA 0A8H
RD BIT 0B0H.7
ES BIT 0A8H.4
IP DATA 0B8H
RI BIT 098H.0
INT0 BIT 0B0H.2
CY BIT 0D0H.7
TI BIT 098H.1
INT1 BIT 0B0H.3
PS BIT 0B8H.4
SP DATA 081H
OV BIT 0D0H.2
ADS7808_RC BIT 090H.3
ADS7808_CS BIT 090H.5
WR BIT 0B0H.6
ADS7808_DATA BIT 090H.7
SBUF DATA 099H
PCON DATA 087H
SCON DATA 098H
TMOD DATA 089H
TCON DATA 088H
IE0 BIT 088H.1
IE1 BIT 088H.3
B DATA 0F0H
ACC DATA 0E0H
ET0 BIT 0A8H.1
ET1 BIT 0A8H.3
TF0 BIT 088H.5
TF1 BIT 088H.7
RB8 BIT 098H.2
TH0 DATA 08CH
EX0 BIT 0A8H.0
IT0 BIT 088H.0
TH1 DATA 08DH
TB8 BIT 098H.3
EX1 BIT 0A8H.2
IT1 BIT 088H.2
P BIT 0D0H.0
SM0 BIT 098H.7
TL0 DATA 08AH
SM1 BIT 098H.6
TL1 DATA 08BH
SM2 BIT 098H.5
PT0 BIT 0B8H.1
PT1 BIT 0B8H.3
RS0 BIT 0D0H.3
TR0 BIT 088H.4
RS1 BIT 0D0H.4
TR1 BIT 088H.6
PX0 BIT 0B8H.0
PX1 BIT 0B8H.2
DPH DATA 083H
DPL DATA 082H
REN BIT 098H.4
TEST_key BIT 0B0H.6
ADS7808_CLK BIT 090H.4
RXD BIT 0B0H.0
TXD BIT 0B0H.1
F0 BIT 0D0H.5
PSW DATA 0D0H
?PR?INI_SYS?MAIN SEGMENT CODE
?PR?_delay1ms?MAIN SEGMENT CODE
?PR?Read_ADS7808?MAIN SEGMENT CODE
?PR?_GET_U0?MAIN SEGMENT CODE
?DT?_GET_U0?MAIN SEGMENT DATA OVERLAYABLE
?PR?Volt_virtual_value?MAIN SEGMENT CODE
?DT?Volt_virtual_value?MAIN SEGMENT DATA OVERLAYABLE
?PR?TIMER0_ISR?MAIN SEGMENT CODE
?PR?main?MAIN SEGMENT CODE
?DT?main?MAIN SEGMENT DATA OVERLAYABLE
?DT?MAIN SEGMENT DATA
?BI?MAIN SEGMENT BIT
EXTRN CODE (_sqrt)
EXTRN CODE (?C?ILDPTR)
EXTRN CODE (?C?ILDOPTR)
EXTRN CODE (?C?FCASTI)
EXTRN CODE (?C?FPMUL)
EXTRN CODE (?C?FPDIV)
EXTRN CODE (?C?FPADD)
EXTRN CODE (?C?MEMSET)
EXTRN CODE (?C_STARTUP)
PUBLIC bSTART_ADC
PUBLIC pADC_buffer
PUBLIC main
PUBLIC TIMER0_ISR
PUBLIC Volt_virtual_value
PUBLIC _GET_U0
PUBLIC Read_ADS7808
PUBLIC _delay1ms
PUBLIC INI_SYS
RSEG ?DT?Volt_virtual_value?MAIN
?Volt_virtual_value?BYTE:
dSqu?451: DS 4
dSquSum?452: DS 4
U0?453: DS 2
i?454: DS 1
RSEG ?DT?_GET_U0?MAIN
?_GET_U0?BYTE:
Lenght?346: DS 2
ORG 2
U0?348: DS 4
Up?349: DS 4
temp?350: DS 2
RSEG ?DT?main?MAIN
?main?BYTE:
U0?656: DS 4
RSEG ?DT?MAIN
pADC_buffer: DS 1
byADC_count: DS 1
RSEG ?BI?MAIN
bSTART_ADC: DBIT 1
; #pragma src
; // ***************交流采樣測試成功****************
;
; /*======================================================
; CopyRight by Protronic .Ltd
; Project: AC Voltage Caputure testing system
; Fiel Name: at89s52
; Creator: LaiYongZhong
; Create Date: 2005/08/20
; Last modify: 2006/02/20
;
;
;
; 交流采樣原理:就是根據一個周期各采樣瞬時值及每周期采樣點數計算電壓信號有效值的公式。
;
; 計算步驟:
; 1: 先計算每次采樣數據對應的實際電壓值(要跟據A/D,基準參數確定),再求其平方
; 2: 再將N次采樣實際電壓值的平方值求和,然后求其平均值
; 3: 將平均值開方,得出的數值就是電壓的有效值了。
;
;
; 注意:此采用的A/D器件應有允許‘正負輸入’這一量程。如:MAX1271,ADS7808,等
; =======================================================*/
; //////////////////////////////////////////////////////////////////////////////
; #include<REG51.h>
; #include<intrins.h>
; #include<absacc.h>
; #include<math.h>
; #include<stdio.H>
; #include<string.h>
;
; ////////////////////////////////////////////////////////////////////////////////
;
; //#define _PC_DEBUG_
;
;
;
; #define uchar unsigned char
; #define uint unsigned int
; #define ulong unsigned long
;
;
; #define nop _nop_()
; #define Timeout 0xfff
; #define ADCPoint_SIZE 50
; #define Vref 10 //+/-5v
; #define LSB_12bit 4096
; #define TRUE 1
; #define FALSE 0
; //-----輸入口----------
; ////////ADS7808(12BIT)///////////////
; sbit ADS7808_RC =P1^3 ;
; sbit ADS7808_CLK =P1^4 ;
; sbit ADS7808_CS =P1^5;
; sbit ADS7808_DATA =P1^7 ;
;
;
; sbit TEST_key =P3^6;
;
; //==============================================================
;
; uint idata *pADC_buffer ; //定義存放A/D轉換結果的數組,
; static uchar byADC_count;
; bit bSTART_ADC;
;
; //-----------------------------------------------------------------
; #define XPORT1 XBYTE[0X000]
; #define XPORT2 XBYTE[0X001]
;
; //##################################################
; ////////////////////////////////////////////////////
; // 初始化系統(tǒng)
;
; ///////////////////////////////////////////////////
; void INI_SYS(void){
RSEG ?PR?INI_SYS?MAIN
INI_SYS:
USING 0
; SOURCE LINE # 75
; uint i;
;
; P0=P1=P2=P3=0XFF;
; SOURCE LINE # 78
MOV P3,#0FFH
MOV P2,#0FFH
MOV P1,#0FFH
MOV P0,#0FFH
; pADC_buffer=0x80;
; SOURCE LINE # 79
MOV pADC_buffer,#080H
; // pADC_buffer[0]=0x44;
;
; TMOD= 0X01; //T0 model1 16bit
; SOURCE LINE # 82
MOV TMOD,#01H
; TL0 = 0XE0;
; SOURCE LINE # 83
MOV TL0,#0E0H
; TH0 = 0XFC; //400US
; SOURCE LINE # 84
MOV TH0,#0FCH
; ET0 = 1;
; SOURCE LINE # 85
SETB ET0
; EA = 1;
; SOURCE LINE # 86
SETB EA
;
; for(i=0;i<ADCPoint_SIZE;i++) pADC_buffer[i]=0;
; SOURCE LINE # 88
;---- Variable 'i?040' assigned to Register 'R6/R7' ----
CLR A
MOV R7,A
MOV R6,A
?C0001:
MOV A,R7
ADD A,ACC
ADD A,pADC_buffer
MOV R0,A
CLR A
MOV @R0,A
INC R0
MOV @R0,A
INC R7
CJNE R7,#00H,?C0044
INC R6
?C0044:
MOV A,R7
XRL A,#032H
ORL A,R6
JNZ ?C0001
;
; #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
;
;
; }
; SOURCE LINE # 99
?C0004:
RET
; END OF INI_SYS
; ////////////////////////////////////////
;
;
; //================================================
; void delay1ms(uchar m)
RSEG ?PR?_delay1ms?MAIN
_delay1ms:
USING 0
; SOURCE LINE # 104
;---- Variable 'm?141' assigned to Register 'R7' ----
; {
; SOURCE LINE # 105
?C0007:
; uint i;
; do{
; SOURCE LINE # 107
; m-- ;
; SOURCE LINE # 108
DEC R7
; for(i=1000;i>0;i--);
; SOURCE LINE # 109
;---- Variable 'i?142' assigned to Register 'R4/R5' ----
MOV R5,#0E8H
MOV R4,#03H
?C0008:
MOV A,R5
DEC R5
JNZ ?C0045
DEC R4
?C0045:
MOV A,R5
ORL A,R4
JNZ ?C0008
; }while(m) ;
; SOURCE LINE # 110
?C0005:
MOV A,R7
JNZ ?C0007
;
;
; }
; SOURCE LINE # 113
RET
; END OF _delay1ms
;
;
;
; /*****************************************************************
; 函數原型: void Read2_ADS7808(void)
; 參數: 無
; 返回值: Read
; 描述: 讀ADS7808數據存于指定數組中(12bit數據)(1次讀性12bit)
;
; 測試Y/N: N
; ****************************************************************/
; uint Read_ADS7808(void)
RSEG ?PR?Read_ADS7808?MAIN
Read_ADS7808:
USING 0
; SOURCE LINE # 125
; {
; SOURCE LINE # 126
; uint Read=0x0000;
; SOURCE LINE # 127
;---- Variable 'Read?243' assigned to Register 'R6/R7' ----
CLR A
MOV R7,A
MOV R6,A
; uchar i;
;
; ADS7808_CS=0; //開芯片使能
; SOURCE LINE # 130
CLR ADS7808_CS
; ADS7808_RC=0; //讀使能(1:讀數據操作:0:啟動轉
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -