pic单片机IO如何进行位操作
我用pic16f506编写一个简单的LED程序,#defineLED1RC0#defineLED2RC1voidmain(void){C2ON=0;//关闭C2比较器TR...
我用pic16f506编写一个简单的LED程序,
#define LED1 RC0
#define LED2 RC1
void main(void)
{
C2ON = 0 ; //关闭C2比较器
TRISC = 0xfc ; //RC0、RC1输出
while(1)
{
LED1 = 0 ;
delay(60000);
LED2 = 0 ;
delay(60000);
}
}
程序应该是两个LED都亮,但实际上是两个LED交替代着亮,我分析原因为对RC0=0,PORTC其它位变成1;对RC1=0,PORTC其它位变成1。而我希望对IO某位操作,其它位不变,请大师赐教。 展开
#define LED1 RC0
#define LED2 RC1
void main(void)
{
C2ON = 0 ; //关闭C2比较器
TRISC = 0xfc ; //RC0、RC1输出
while(1)
{
LED1 = 0 ;
delay(60000);
LED2 = 0 ;
delay(60000);
}
}
程序应该是两个LED都亮,但实际上是两个LED交替代着亮,我分析原因为对RC0=0,PORTC其它位变成1;对RC1=0,PORTC其它位变成1。而我希望对IO某位操作,其它位不变,请大师赐教。 展开
1个回答
2015-01-21
展开全部
要看头文件里面规定的对于IO寄存器某位的定义。
PIC的单片机一般都是直接可以赋RC0=0或1
或者是赋PORTC=0B00000011 这样就是RC0=1 RC1=1,其它位都为0
你这里的问题是没有赋初始值吧
PIC的单片机一般都是直接可以赋RC0=0或1
或者是赋PORTC=0B00000011 这样就是RC0=1 RC1=1,其它位都为0
你这里的问题是没有赋初始值吧
追问
我添加PORTC = 0xff ;后,还是不行,现象与之前一样。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询