📄 ad.c
字号:
// Release 1.0
// -Initial Revision (clm)
// 2008-11-13
//-----------------------------------------------------------------------------
// Includes
//-----------------------------------------------------------------------------
#include "c8051F320.h" // SFR declarations
#include <stdio.h>
//-----------------------------------------------------------------------------
// 16-bit SFR Definitions for 'F34x
//-----------------------------------------------------------------------------
sfr16 ADC0 = 0xbd; // ADC0 result
//-----------------------------------------------------------------------------
// Global CONSTANTS
//-----------------------------------------------------------------------------
#define SYSCLK 12000000 // SYSCLK frequency in Hz
sbit LED = P2^2; // LED='1' means ON
idata float volt;
//-----------------------------------------------------------------------------
// Function PROTOTYPES
//-----------------------------------------------------------------------------
void SYSCLK_Init (void);
void PORT_Init (void);
void ADC0_Init(void);
void ADC0_Conver(void);
//-----------------------------------------------------------------------------
// MAIN Routine
//-----------------------------------------------------------------------------
void main (void)
{
PCA0MD &= ~0x40; // WDTE = 0 (clear watchdog timer
// enable)
SYSCLK_Init (); // Initialize system clock to
// 12MHz
PORT_Init (); // Initialize crossbar and GPIO
//Timer2_Init(); // Init Timer2 to generate
// overflows to trigger ADC
//UART0_Init(); // Initialize UART0 for printf's
ADC0_Init(); // Initialize ADC0
//EA = 1; // enable global interrupts
while (1)
{
ADC0_Conver();
}
}
//-----------------------------------------------------------------------------
// Initialization Subroutines
//-----------------------------------------------------------------------------
//
//-----------------------------------------------------------------------------
// SYSCLK_Init
//-----------------------------------------------------------------------------
//
// Return Value: None
// Parameters: None
//
// This routine initializes the system clock to use the internal 12MHz
// oscillator as its clock source. Also enables missing clock detector reset.
//
//-----------------------------------------------------------------------------
void SYSCLK_Init (void)
{
OSCICN = 0x83; // configure internal oscillator for
// 12MHz / 1
RSTSRC = 0x04; // enable missing clock detector
}
//-----------------------------------------------------------------------------
// PORT_Init
//-----------------------------------------------------------------------------
//
// Return Value: None
// Parameters: None
//
// Configure the Crossbar and GPIO ports.
// P0.4 - UART TX (push-pull)
// P0.5 - UART RX
// P2.4 - ADC0 analog input
// P2.2 - LED (push-pull)
//
//-----------------------------------------------------------------------------
void PORT_Init (void)
{
//XBR0 = 0x01; // Enable UART0
XBR1 = 0x40; // Enable crossbar and weak pull-ups
P0MDOUT |= 0x10; // Set TX pin to push-pull
P2MDOUT |= 0x04; // enable LED as a push-pull output
//P2MDIN &= ~0x10; // set P2.4 as an analog input
P1MDIN &= ~(1<<0);
P1SKIP |= (1<<0);
}
//-----------------------------------------------------------------------------
// ADC0_Init
//-----------------------------------------------------------------------------
//
// Return Value: None
// Parameters: None
//
// Configures ADC0 to make single-ended analog measurements on pin P2.4
//
//-----------------------------------------------------------------------------
void ADC0_Init (void)
{
AD0EN = 0; // ADC0 disabled, normal tracking,
// conversion triggered on TMR2 overflow
REF0CN = 0x03; // Enable on-chip VREF and buffer
AMX0P |= 0x0; // ADC0 positive input = P1.0
AMX0N |= 0x1F; // ADC0 negative input = GND
// i.e., single ended mode
ADC0CF = ((SYSCLK/3000000)-1)<<3; // set SAR clock to 3MHz
ADC0CF |= 0x00; // right-justify results
}
void ADC0_Conver(void)
{
unsigned int temp;
AD0EN = 1; // enable ADC0
AD0BUSY=1;
while(!AD0INT);
AD0INT=0;
temp=ADC0;
volt=temp*0.00234375;
}
//-----------------------------------------------------------------------------
// End Of File
//-----------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -