/PCA模块1扩展为上升沿下降沿均可触发的外部中断}voidinit_ADC(void)uinti;for(i=10000;i!=0;i-)〃若晶振为6MHZ,是延时20ms等待ADC模块内部模拟电源稳定ADCJ3ONTR二0x80;//开ADC模块电源并选择P1A0作为模拟量输入引脚P1ASF=0x01;?//P1口模拟量功能设置寄存器:使用P1A0的模拟量功能AUXR1=AUXR1&0xfb;//ADRJ=0,ADC_RES存放A/D转换结果高8位〃ADC_RESL存放A/D转换结果低ADC_RES=0;ADC_RESL=0;EADC=1;〃检测前将其清零〃检测前将其清零〃开A/D转换屮断voidINTOJSR(void)interrupt0?//外部屮断0服务程序sign=0;〃工作在固定模式ADC_CONTR=ADC_CONTR&0xF7;〃关闭ADC电源}voidINT1_ISR(void)interrupt2〃外部中断1服务程序{sign=1;?〃工作在ADC模式ADC_CONTR|=OxO&〃打开ADC电源,由用户决定PWM频率}voidT1_ISR(void)interrupt3?〃定时器1中断服务程序TH1=0x3C;TL1=0xB0;t++;〃工作在方式1溢出后不能自动重装载if(t==20)?//2s后输岀低电平P17=!P17;if(t==50){t=0;?//5s为一个周期P17=!P17;}}voidPCA_ISR(void)interrupt7{F1==1)?//PCA模块1中断响应{0为下降沿触jf(P14==0)//判断是上升沿触发还是下降沿触发,等于发{while(t!=25);〃延时0.AP0H=0x80;〃AP0L=0x80;}else?//AP0H=0xFF;//AP0L=0xFF;}CCF1=0;F0=0;//防止干扰信号误动作}