SCI0_SendByte(0x01); SCI0_SendByte(0x02); SCI0_SendByte(0x03);
for(;;) {
_FEED_COP(); /* feeds the dog */
if(SCI_Flag==1) { SCI_Flag = 0;
SCI0_SendByte(SCI_Rev); }
} /* loop forever */
/* please make sure that you never leave main */ }
void Service_WD(void) {
CPMUARMCOP = 0x55; CPMUARMCOP = 0xAA; }
void SetBusClock_24MHz(void) {
CPMUOSC_OSCE = 1; /* enable ext osc */
/*
Initialise the system clock from a 16 MHz Crystal, 24 MHz Bus CLK (48 MHz VCO, 48 MHz PLL) */
CPMUSYNR = 0x00 | 0x05; /* VCOFRQ[7:6], SYNDIV[5:0] */
CPMUREFDIV = 0x20 | 0x03; /* REFFRQ[7:6], REFDIV[3:0] */
CPMUPOSTDIV = 0x00; /* POSTDIV = 0 FPLL = FVCO */
while(!CPMUFLG_LOCK); /* wait for VCO to stabilize*/
Service_WD();
CPMUCLKS_PLLSEL = 1; /* Switch clk to use PLL */ }
//串口初始化
void SCI0_Init(void) {
SCI0CR1 = 0x00; /* 8 Data Bits, 1 Start Bit, 1 Stop Bit, No Parity */
SCI0CR2 = 0x2C; /* 使能接收中断;使能 Tx,Rx */
/* SCIASR1, SCIACR1, SCIACR2, SCISR1, SCISR2, SCIDRH & SCIDRL left at default values */ }
//串口波特率设置
void SCI0_BR(unsigned long br) {
uint brPrescaler;
brPrescaler = (uint)(24000000 / (16 * br));
/* Set the Baud Rate */
SCI0BDH = (uchar)((brPrescaler>>8)); SCI0BDL = (uchar)(brPrescaler); }
//串口发送字节
void SCI0_SendByte(char ch) { }
//串口中断
#pragma CODE_SEG __NEAR_SEG NON_BANKED void interrupt VectorNumber_Vsci0 SCI0_ISR(void) {
SCI0CR2_RIE=0;
/* check SCI transmit data register is empty */ while(SCI0SR1_TDRE == 0); SCI0DRL = ch;
while(SCI0SR1_RDRF == 0); SCI_Rev = SCI0DRL; SCI_Flag = 1;
SCI0CR2_RIE = 1; }
#pragma CODE_SEG DEFAULT
ADC应用程序
#include
// 函数声明 void ADC_Init(void);
uint ADC_GetValue(byte ch); void Service_WD(void); void SetBusClock_24MHz(void); void Delay(void);
// 全局变量 uint AD_Result; uint AD_Result2;
void main(void) {
/* put your own code here */
SetBusClock_24MHz();
ADC_Init(); for(;;) {
_FEED_COP(); /* feeds the dog */
AD_Result = ADC_GetValue(7);
AD_Result2 = ADC_GetValue(0); } /* loop forever */
/* please make sure that you never leave main */
EnableInterrupts;
}
// AD初始化
void ADC_Init(void) {
ATDCTL1 = 0x3F; /* 10-Bit resolution ,discharge before sampling. */
ATDCTL3 = 0x88; /* Right Justified Data, Single conversion sequence */
ATDCTL4 = 0xE1; /* 6 MHz, Notice: 12MHz Max ATD Clock, Fatdlk = FBUS/(2*(PRS+1)) */ /* 26 ATD Clock cycles sample time */ }
// ADC通道采集
uint ADC_GetValue(byte ch)
{
ATDCTL5 = 0x0F & ch; /* Start Continuous Conversions on ch */
while (!ATDSTAT0_SCF); /* wait for conversion sequence to complete */ return ATDDR0; }
// 看门狗
void Service_WD(void) {
CPMUARMCOP = 0x55; CPMUARMCOP = 0xAA; }
void SetBusClock_24MHz(void) {
CPMUOSC_OSCE = 1; /* enable ext osc */
/*
Initialise the system clock from a 16 MHz Crystal, 24 MHz Bus CLK (48 MHz VCO, 48 MHz PLL) */
CPMUSYNR = 0x00 | 0x05; /* VCOFRQ[7:6], SYNDIV[5:0] */
CPMUREFDIV = 0x20 | 0x03; /* REFFRQ[7:6], REFDIV[3:0] */
CPMUPOSTDIV = 0x00; /* POSTDIV = 0 FPLL = FVCO */
while(!CPMUFLG_LOCK); /* wait for VCO to stabilize*/
Service_WD();
CPMUCLKS_PLLSEL = 1; /* Switch clk to use PLL */ }
void Delay(void) {
uint dummy_ctr;
for(dummy_ctr=0; dummy_ctr<0x007f;dummy_ctr++) { ; } }
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库freescale 单片机MC9S12G128应用程序(PWM,Timer,ADC……)(3)在线全文阅读。
相关推荐: