PIC单片机输出电压这么低?
单片机是PIC16F886;配置位设置为__CONFIG(0X206A);__CONFIG(0X3EFF);程序如下:TRISB=0X00;RB0=0;RB1=1;RB2...
单片机是PIC16F886;
配置位设置为
__CONFIG(0X206A);
__CONFIG(0X3EFF);
程序如下:
TRISB=0X00;
RB0= 0;
RB1= 1;
RB2= 0;
RB3= 1;
RB4= 0;
RB5= 1;
RB6= 0;
RB7= 1;
问题就是,我输出的电压只有RB7为5V,其余的管脚都是0V和0.42V间隔出现,其中RB7,RB1,RB2是空脚;这是什么原因呢? 展开
配置位设置为
__CONFIG(0X206A);
__CONFIG(0X3EFF);
程序如下:
TRISB=0X00;
RB0= 0;
RB1= 1;
RB2= 0;
RB3= 1;
RB4= 0;
RB5= 1;
RB6= 0;
RB7= 1;
问题就是,我输出的电压只有RB7为5V,其余的管脚都是0V和0.42V间隔出现,其中RB7,RB1,RB2是空脚;这是什么原因呢? 展开
2个回答
展开全部
你的主要问题是,在88X的单片机中,B口中大部分都同时有模拟口的功能,默认时标有ANx的脚为模拟口,所以出现了你说的问题。886的RB0-RB5都同时有模拟输入的功能。为了将这些口设置为数字口,要增加:ANSELH=0xFF;程序就正常了。
还有,你对那些B口的单个脚连续设置为高或低电平可能会有问题:
RB0= 0;
RB1= 1;
RB2= 0;
RB3= 1;
RB4= 0;
RB5= 1;
RB6= 0;
RB7= 1;
要改为:PORTB=0b10101010;
或者在每个引脚输出间加上NOP();语句,这个问题超出你的问题范围。
如果以下的程序还是不对,那肯定是你的硬件问题了。
完整的程序如下,用单步调试运行可以看到B口的电平输出是完全正确的。
#include <pic.h>
__CONFIG(0X206A);
__CONFIG(0X3EFF);
void main(void)
{ TRISB=0X00;
ANSELH=0xFF; // !!!
PORTB=0xFF;
NOP();
PORTB=0;
NOP();
while(1);
}
还有,你对那些B口的单个脚连续设置为高或低电平可能会有问题:
RB0= 0;
RB1= 1;
RB2= 0;
RB3= 1;
RB4= 0;
RB5= 1;
RB6= 0;
RB7= 1;
要改为:PORTB=0b10101010;
或者在每个引脚输出间加上NOP();语句,这个问题超出你的问题范围。
如果以下的程序还是不对,那肯定是你的硬件问题了。
完整的程序如下,用单步调试运行可以看到B口的电平输出是完全正确的。
#include <pic.h>
__CONFIG(0X206A);
__CONFIG(0X3EFF);
void main(void)
{ TRISB=0X00;
ANSELH=0xFF; // !!!
PORTB=0xFF;
NOP();
PORTB=0;
NOP();
while(1);
}
参考资料: 北航:PIC16系列单片机C程序设计与PROTEUS仿真
艾普斯
2024-07-18 广告
2024-07-18 广告
稳频稳压电源哪家好?艾普斯电源(苏州)有限公司开始专业研发、制造及营销交流稳压电源,满足全球电子及信息业对电源设备日益蓬勃的市场需求。迄今为止,业已发展成为交流不间断电源、稳压电源、变频电源、中频航空- 军事专用电源、直流电源、逆变电源等产...
点击进入详情页
本回答由艾普斯提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询