//PORTA RA2 / RA4 / RA5
TRISA|= (BIT2 ); //RA2 输入
TRISA&=~(BIT0|BIT4|BIT5); //RA0 RA4 RA5输出
ANSEL|= (BIT2 ); //AN2 模拟输入
//PORTB RB4 / RB5 / RB6/ RB7
TRISB|= ( BIT5); // RB5 输入
TRISB&=~(BIT4|BIT6|BIT7); //RB4 RB6 RB7 输出
//PORTC RC0 / RC1/ RC2 / RC5 /// // RC3 / RC4/ RC6 / RC7
TRISC|= (BIT0 | BIT1| BIT2| BIT5); //RC0 RC1 RC2 RC5输入
TRISC&=~(BIT3|BIT4|BIT6|BIT7); //RC3 RC4 RC6 RC7输出
ANSEL|=(BIT4|BIT5|BIT6); //RC1 为AD口输入 对应AN5
看不太明白,能解释一下么,百度不到。。
你对PIC16F690单片机有研究么,看过资料吧,我就想知道TRISA|= (BIT2 ); 为什么就是RA2输入。。
追答TRISA是方向寄存器咯,控制io方向的,置为1或0变为输入或输出咯
追问你可能没太明白我的意思,位运算返回值是二进制数,我是想知道TRISA与BIT2位与后,TRISA2怎么等于1?TRISA和BIT2是默认值么,默认值是多少。。
追答例如bit2=0x04;
那么TRISA|= (BIT2 ); 就是将trisa的第三位置为1,就这么简单
可是我不知道BIT2等于几啊,就算BIT2=0X 0000 0100,我也不知道TRISA等于几啊,也没把他置1,别人写的程序也没问题,运行无故障,所以我以为他们都有初值或者固定值或者默认值之类的,我就是想问这个。。
追答╮(╯▽╰)╭
菜鸟就是这个样子地
初始化的话时候可以TRISA=0x00,那么你就知道TRISA等于几咯,至于BIT2=多少,头定义里有的
这个在初始化里真心没找到有初值,头定义里也没有BIT2,算了,谢谢你了,我还是问他本人吧
位运算返回值是二进制,我是想问TRISA和BIT2默认值是多少,TRISA和BIT2位与后怎么就是:TRISA2=1
追答1、pic单片机没用过,不过针对八位单片机BIT2应该就是等于:(unsigned char )(1<<2)也就是0x04(二进制为:00000100b)。
2、你上面有一处误解:“位运算返回值是二进制”,在寄存器和内存中,数据都是以二进制存储的,没有运算返回值是二进制还是八进制还是十进制亦或是其他的说法。
3、针对于:“TRISA和BIT2位与后怎么就是:TRISA2=1”,TRISA我姑且认为是寄存器并且TRISA2为TRISA的第2位,进行&操作是将TRISA的第二位置位为1,所以就有“TRISA和BIT2位与后怎么就是:TRISA2=1”
4、不客气~