求教最基础的PIC 的I/O控制问题 C语言
小弟刚开始接触PIC的C程序,用的调试环境是MPLAB-IDE,然后编译器是网上下载的破解版的PICC9.50版本。本想就控制一个引脚的高低电平转换,选择的芯片是PIC1...
小弟刚开始接触PIC的C程序,用的调试环境是 MPLAB-IDE,然后编译器是网上下载的破解版的PICC9.50版本。 本想就控制一个引脚的高低电平转换,选择的芯片是 PIC16F684,程序如下:
#include<pic.h>
main()
{ TRISA4=0;
RA4=1;
}
可以通过编译,生成.HEX文件
这个程序应该是把RA4脚变成高电平
问题是,我用ISIS仿真,选择的也是PIC16F684器件,载入这个生成的HEX文件后,仿真时,每个脚都是低电平。就是程序没有用,没有把引脚变高电平
请教各位前辈是什么原因呢?
编译器有问题? ISIS 的问题? 还是程序的问题?还是设置的问题?
求教大家了 谢谢 展开
#include<pic.h>
main()
{ TRISA4=0;
RA4=1;
}
可以通过编译,生成.HEX文件
这个程序应该是把RA4脚变成高电平
问题是,我用ISIS仿真,选择的也是PIC16F684器件,载入这个生成的HEX文件后,仿真时,每个脚都是低电平。就是程序没有用,没有把引脚变高电平
请教各位前辈是什么原因呢?
编译器有问题? ISIS 的问题? 还是程序的问题?还是设置的问题?
求教大家了 谢谢 展开
1个回答
展开全部
首先,你要去Microchip的网站上找16F684的数据手册。因为PIC单片机就算是16F系列的各个型号不同也有差异的。16f684数据说明书上写明了,要把某I/O引脚做数字量输入输出,除了TRIS寄存器外还要配置CMCON0和ANSEL这两个寄存器。CMCON0=0X07;ANSEL=0;
如果还不行,那就在RA4置一的语句之后再加while(1);因为程序执行太快,一下子就都执行玩了,这个时候可能出现的情况就是:单片机的程序执行到程序区域的最后,再重新从头执行,从头再执行的时候TRISA又复位置一了。这样在不到几十毫秒的时间里RA4输出1后,又变成输入,当然看不出这个引脚是否为1了。
另外要注意一下配置位。因为这款芯片有内部振荡器,有的时候配置位没配置好单片机根本不工作,因为它不知道你是要用内部RC振荡器还是标注晶振还是用外部RC振荡。学PIC的单片机最开始最关键就是要设置好这东东。
如果还不行,那就在RA4置一的语句之后再加while(1);因为程序执行太快,一下子就都执行玩了,这个时候可能出现的情况就是:单片机的程序执行到程序区域的最后,再重新从头执行,从头再执行的时候TRISA又复位置一了。这样在不到几十毫秒的时间里RA4输出1后,又变成输入,当然看不出这个引脚是否为1了。
另外要注意一下配置位。因为这款芯片有内部振荡器,有的时候配置位没配置好单片机根本不工作,因为它不知道你是要用内部RC振荡器还是标注晶振还是用外部RC振荡。学PIC的单片机最开始最关键就是要设置好这东东。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询