根据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;
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
这里有两个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
不同的编译器,处理方式不同,不和你讨论这个无意义的问题。
如果不了解PIC的汇编,就不要乱现,PIC的BTFSS指令是可以直接对C2口操作的,跟哪个编译器都无关!
跟你这种半瓶子醋讨论才是无意义的事情,这里只不过借讨论给楼主提供个更好思路而已!
我也是想给LZ提供一个思路。
我针对的不单是PIC的C2口。我当时是想着所有的单片机。有些单片机的端口不支持位操作。
一周热门 更多>