📄 f206_ad.c
字号:
/////////////////////////////////////
// Generated Initialization File //
/////////////////////////////////////
#include "C8051F200.h"
#define uchar unsigned char
#define uint unsigned int
#define N 7
unsigned char tab1[17]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x2e,0x56,0xA1,0xE6,0xA6,0xB8,0x6b};
//-----------------------------------------------------------------------------
// 16-bit SFR Definitions for 'F0xx
//-----------------------------------------------------------------------------
sfr16 RCAP2 = 0xCA; // Timer2 capture/reload
sfr16 TMR2 = 0xCC; // Timer2
sfr16 ADC = 0xBE; // ADC 12bit
sbit P30 = P3^0;
sbit P31 = P3^1;
sbit P32 = P3^2;
sbit P33 = P3^3;
sbit P06 = P0^6;
sbit sf = P2^4; // 火情
sbit sh = P2^5; // 高温
sbit ss = P2^6; // 状态
sbit sc = P2^7; // 校验
sbit led = P2^0;
sbit fled = P3^6;
sbit hled = P3^7;
uint vp14,vp15;
// Peripheral specific initialization functions,
// Called from the Init_Device() function
// P0.0 - TX (UART), Open-Drain Digital
// P0.1 - RX (UART), Open-Drain Digital
// P0.2 - Unassigned, Open-Drain Digital
// P0.3 - Unassigned, Open-Drain Digital
// P0.4 - Unassigned, Open-Drain Digital
// P0.5 - Unassigned, Open-Drain Digital
// P0.6 - Unassigned, Open-Drain Digital
// P0.7 - Unassigned, Open-Drain Digital
// P1.0 - Unassigned, Open-Drain Digital
// P1.1 - Unassigned, Open-Drain Digital
// P1.2 - Unassigned, Open-Drain Digital
// P1.3 - Unassigned, Open-Drain Digital
// P1.4 - Unassigned, Open-Drain Analog
// P1.5 - Unassigned, Open-Drain Analog
// P1.6 - Unassigned, Open-Drain Analog
// P1.7 - Unassigned, Open-Drain Digital
// P2.0 - Unassigned, Push-Pull Digital
// P2.1 - Unassigned, Open-Drain Digital
// P2.2 - Unassigned, Open-Drain Digital
// P2.3 - Unassigned, Open-Drain Digital
// P2.4 - Unassigned, Push-Pull Digital
// P2.5 - Unassigned, Push-Pull Digital
// P2.6 - Unassigned, Push-Pull Digital
// P2.7 - Unassigned, Push-Pull Digital
// Initialization function for device,
// Call Init_Device() from your main program
void Init_Device(void) ;
uint getad();
void uart_send_dz(long dz);
main()
{
WDTCN = 0xDE; // Disable watchdog timer
WDTCN = 0xAD;
Init_Device( ) ;
TR1 = 1 ;
P30 = 1;
P31 = 1;
P32 = 0;
P33 = 0;
while (1)
{
AMX0SL = 0x2C;
vp14 = getad();
uart_send_dz(vp14) ;
AMX0SL = 0x2D;
vp15= getad();
uart_send_dz(vp15);
}
}
void Init_Device(void)
{
int i = 0;
OSCXCN = 0x67;
for (i = 0; i < 3000; i++); // Wait 1ms for initialization
while ((OSCXCN & 0x80) == 0);
OSCICN = 0x0C;
CKCON = 0x10;
TMOD = 0x20;
TH1 = 0xF4;
PCON = 0x80;
SCON = 0x50;
AMX0SL = 0x2C;
ADC0CN = 0x80;
REF0CN = 0x03;
PRT0MX = 0x01;
PRT2MX = 0x70;
PRT2CF = 0xF1;
PRT3CF = 0xCF;
P1MODE = 0x0;
IE = 0x90;
// EIE2 = 0x02;
}
uint getad()
{
uint value_buf[N],temp;
char count,i,j;
for (i=0;i<100;i++)
for (j = 0; j < 10 ; j++);
for ( count=0;count<N;count++)
{
// for (i=0;i<100;i++) ;
ADCINT = 0 ;
ADBUSY = 1;
for (j = 0; j < 10 ; j++);
while ( ADCINT ==0 );
value_buf[count] = ADC;
// delay();
}
for (j=0;j<N-1;j++)
{
for (i=0;i<N-j;i++)
{
if ( value_buf[i]>value_buf[i+1] )
{
temp = value_buf[i];
value_buf[i] = value_buf[i+1];
value_buf[i+1] = temp;
}
}
}
return ((value_buf[(N-1)/2])*0.72583) ;
}
void uart_ISR() interrupt 4{
}
void uart_send_dz(long dz)
{
char a;
long temp = dz;
a=temp/100000000;
temp=temp%100000000;
ES = 0;
// EA = 0;
SBUF =tab1[a];
while(TI ==0);
TI = 0;
a=temp/10000000;
temp=temp%10000000;
SBUF =tab1[a];
while(TI ==0);
TI = 0;
a=temp/1000000;
temp=temp%1000000;
SBUF = tab1[a];
while(TI == 0);
TI = 0;
a=temp/100000;temp=temp%100000;
SBUF = tab1[a];
while(TI == 0);
TI = 0;
a=temp/10000; temp=temp%10000;
SBUF = tab1[a];
while(TI == 0);
TI = 0;
a=temp/1000; temp=temp%1000;
SBUF = tab1[a];
while(TI == 0);
TI =0;
a=temp/100; temp=temp%100;
SBUF =tab1[a];
while(TI == 0);
TI = 0;
a=temp/10;
SBUF =tab1[a];
while(TI == 0);
TI = 0;
a=temp%10;
SBUF = tab1[a];
while(TI == 0);
TI = 0;
SBUF = tab1[14];
while(TI == 0);
TI = 0;
SBUF = tab1[15];
while(TI == 0);
TI = 0;
SBUF =0x20;
while(TI ==0);
TI =0;
SBUF =0x20;
while(TI ==0);
TI =0;
ES = 1;
// EA = 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -