| 
 
| 本帖最后由 pzsh 于 2022-11-6 21:24 编辑 
 PIC12F1571 RA0-RA2做输入口功能不正常;做输出口功能。软件用MPLAB X IDE V5.15,有配置外设触发。void main(void)
 {
 OPTION_REG=0X47;
 ANSELA=0x00;
 INTCON=0x00;        //中断控制寄存器
 PORTA=0x00;         //1100 1111
 WPUA =0xFF;
 TRISA=0xCF;                    //1100 1111=RA0-3输入=1;RA4-5输出=0
 OpenWinFB=0;
 CloseWinFB=0;
 ADIE=1;                     //1 = 允许ADC 中断
 TMR1GIE=1;      //1 = 允许Timer1 门控采集中断
 TMR1IE=1;       //1 = 允许Timer1 上溢中断
 INTCONbits.IOCIE = 1;       //1 = 允许电平变化中断
 INTCONbits.IOCIF = 1;       //1 = 至少有一个电平变化中断引脚改变了状态
 INTCONbits.PEIE = 1;        //外设中断允许
 INTCONbits.INTE = 1;        //允许INT 外部中断
 INTCONbits.GIE  = 1;        //系统中断允许
 TMR0IE = 1;                                //TMR0使能
 while (1)
 {
 //    ADC_PowerForward  = get_adc_contiue(0);//电源正方向取样AN0
 //    ADC_PowerReverse  = get_adc_contiue(1);//电源反方向取样AN1
 NOP();
 NOP();
 if(RA0)//判断电压的方向=正方向
 {
 PowerForwardFlag=1;
 OpenWinFB=1;
 }
 
 if( RA1 )//判断电压的方向=正方向
 {
 PowerReverseFlag=1;
 CloseWinFB=1;
 }
 
 
 
 /*
 if( (ADC_PowerForward > 150 ) && ( ADC_PowerReverse < 8 ) )//判断电压的方向=正方向
 {
 __delay_ms(5);
 if(ADC_PowerForward > 150 )
 {
 PowerForwardFlag=1;
 OpenWinFB=1;
 }
 }
 else{ PowerForwardFlag=0;OpenWinFB=0;}
 if( (ADC_PowerReverse > 150 ) && ( ADC_PowerForward < 8 ) )//判断电压的方向=正方向
 {
 __delay_ms(5);
 if(ADC_PowerReverse > 150 )
 {
 PowerReverseFlag=1;
 CloseWinFB=1;
 }
 }
 else{PowerReverseFlag=0; CloseWinFB=0;}
 * /
 /*
 if(PowerForwardFlag)//正方向
 {
 OpenWinFB=1;
 }
 if(PowerReverseFlag)//反方向
 {
 CloseWinFB=1;
 }
 */
 }
 }
 | 
 |