问题补充 : 2019/09/18 17:51ML51_BSP_Keil_C51文件中的示例文件(StdDriver目录下的)ADC_Simple,将其代码改为如下,便可出现上述问题。
/*---------------------------------------------------------------------------------------------------------*/
/* */
/* Copyright(c) 2019 Nuvoton Technology Corp. All rights reserved. */
/* */
/*---------------------------------------------------------------------------------------------------------*/
//***********************************************************************************************************
// Website: http://www.nuvoton.com
// E-Mail : MicroC-8bit@nuvoton.com
//***********************************************************************************************************
//***********************************************************************************************************
// File Function: ML51 series ADC software trigger on shot demo code
//***********************************************************************************************************
#include "ML51.h"
#define en_MPW_CTR() P56_PUSHPULL_MODE, SFRS = 0x00, P5 |= SET_BIT6 //P56脚推挽输出高电平
#define dis_MPW_CTR() P56_PUSHPULL_MODE, SFRS = 0x00, P5 &= CLR_BIT6 //P56脚推挽输出低电平
void ADC_ISR (void) interrupt 11
{
;
// clr_ADCCON0_ADCF; //clear ADC interrupt flag
}
void main ()
{
unsigned int ADCRESULT;
MFP_P16_UART0_TXD; //设置P16为串口0输出
P16_PUSHPULL_MODE;
UART_Open(24000000,UART0_Timer3,115200); // Open UART0 use timer1 as baudrate generate and baud rate = 115200
ENABLE_UART0_PRINTF;
ENABLE_ADC_INTERRUPT;
ENABLE_GLOBAL_INTERRUPT;
ADC_Open(ADC_SINGLE,1); //Enable ADC_CH4
ADC_ConvertTime(3,7);
clr_ADCCON0_ADCF;
set_ADCCON0_ADCS; // Software trig adc start
while((ADCCON0|CLR_BIT7)==CLR_BIT7); // wait ADCF = 1;
ADCRESULT = (ADCRH<<4)+ADCRL;
printf("\n ADC result = 0x%X ", ADCRESULT);
Timer0_Delay(24000000,100,1000);
while(1)
{
en_MPW_CTR();
dis_MPW_CTR();
}
}
,如果禁止ADC中断则不会出现上述问题。