PIC16LF1503 代码查了2天都查不出来,求大神指点迷津!

2020-02-06 09:55发布

根据RC2的电平控制RC0的电平,可是实际上不管RC2的电平高低,RC0都是低电平!!查了2天都查不到原因  TT

#include <htc.h>
//__CONFIG(FOSC_ECL&WDTE_OFF);
__CONFIG(0x3fe4);
//内部晶振,禁止看门狗

void init_gpio()
{
        TRISA0=1;   //ICSPDAT        
        TRISA1=1;        //ICSPCLK
        TRISA2=1;        //DIM  INT
        TRISA3=1;         //VPP
        TRISA4=1;         //DIM  SAMP
        TRISA5=1;        //NC

        SDOSEL = 1;
        ANSELC |= 0X04;
        TRISC = 0X04;

        INTCON = 0x00;   //关闭所有中断
}

main()
{
        OSCCON=0B01101011;        //fosc=4Mhz; internal osc;
        WDTCON = 0;

        init_gpio();

        while(1)
        {
                if(PORTC & 0X04)
                        PORTC |= 0X01;
                else
                        PORTC &= ~0X01;       
        }
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
21条回答
zpywz
2020-02-08 04:23
ADC、比较器都关掉。
这里有两个1503的初始化,你参考一下:
-------------------------------------------
        OSCCON        =        0B1101010        ;        //4MHz内置振荡
        OPTION_REG        =        0x81        ;        //4分频
        PORTA        =        0        ;
        LATA        =        0        ;
        ANSELA        =        0        ;
        TRISA        =        0B11000                ; //RA5,RA2,RA1,RA0:OUTPUT;                RA4,RA3:INPUT
        PORTC        =        0        ;
        LATC        =        0        ;
        ANSELC        =        0        ;
        TRISC        =        0xFF        ;        //RC全部为输入脚
------------------------------------------------------------
INITIALIZATION
        BANKSEL OSCCON  ;;★设置RC/4M,选择1扇区
    MOVLW 6AH       ;H'01101010'
    MOVWF OSCCON    ;
        ;
    BANKSEL LATA    ;;★设置PA状态,选择0扇区
    CLRF LATA       ;PA输出缓存状态寄存器清零
    BANKSEL PORTA   ;
    CLRF PORTA                ;PORTA输出为低电平
    BANKSEL ANSELA  ;选择1扇区
    CLRF ANSELA     ;取消PA引脚和PC引脚的模拟输入功能,设置相应的引脚为数字IO
    BANKSEL TRISA   ;
    MOVLW B'00000100';
    MOVWF TRISA     ;设置PA引脚方向,PA0/1/5为输出,SYN/ALT/RED
        ;
    BANKSEL LATC    ;;★设置PC状态,
    CLRF LATC       ;PC输出缓存状态寄存器清零
        BANKSEL PORTC   ;;★设置PC状态,
    CLRF PORTC      ;设置PORTC输出为0
    BANKSEL ANSELC  ;选择1扇区
    CLRF ANSELC      ;取消PA引脚和PC引脚的模拟输入功能,设置相应的引脚为数字IO
    BANKSEL TRISC   ;
    MOVLW B'00000011';
    MOVWF TRISC     ;设置PC引脚方向,PC4/5为输出(BLUE/WHITE),PC0/1为输入(WHITE/GREEN)

;
    BANKSEL OPTION_REG;★设置TIM0,开始计时                    ;
    MOVLW 87H       ;关闭弱上拉,选择内部时钟作为TIM0时钟源,预分频分配给TIM0
    MOVWF OPTION_REG;256分频,0.00001s*256*256=0.065536s
    BANKSEL LAMP_STATE
        MOVLW 7FH                                ;
        MOVWF ADDRH                                ;
        MOVLW 0FDH                                ;
        MOVWF ADDRL                                ;
        ;
        CLRF GREEN_COUNT                  ;EQU 0X25,绿线计时寄存器
    CLRF SLAVE_SYN_COUNT        ;
        ;CLRF SLAVE_FLASH_COUNT
        ;
        CALL DATA_READ                        ;
        ;

        MOVLW 0AH                                ;
        SUBWF BANK_TEMP,W                ;
        BTFSS STATUS,Z                        ;
        GOTO GO_NEXT
        GOTO MAIN       

一周热门 更多>