初学PIC C语言的问题,请教各位大大

[复制链接]
4348|19
 楼主| qzhui121 发表于 2010-7-29 09:11 | 显示全部楼层 |阅读模式
#include<pic.h>
#define uchar unsigned char
#define uint unsigned int
void delay(uint x)
{
uint a,b;
for(a=x;a>0;a--)
for(b=110;b>0;b--);
}
void main()
{
uchar i;
TRISA=0x00;
while(1)
{
PORTA=0x01;
for(i=8;i>0;i--)
{
delay(50);
PORTA=PORTA<<1;
}
}
}
这个程序为什么我在仿真的时候只有4个I/O口有输出,真是搞不明白啊!!!我用的是PIC16F628A的
 楼主| qzhui121 发表于 2010-7-29 09:14 | 显示全部楼层
是不是那里没有定义好或者是别的原因啊,一直找不出来!!郁闷

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| qzhui121 发表于 2010-7-29 09:14 | 显示全部楼层
只有D5,D6 D4,D3这四个I/O有输出,别的输出口没有反应!!
skygrow 发表于 2010-7-29 10:33 | 显示全部楼层
A口复用的模拟功能没关
 楼主| qzhui121 发表于 2010-7-29 10:40 | 显示全部楼层
能具体说一下如何处理吗?
 楼主| qzhui121 发表于 2010-7-29 10:40 | 显示全部楼层
第一次看别人写的程序,改一下没有实现,不知道问题出现的那儿
leizi2008 发表于 2010-7-29 12:02 | 显示全部楼层
显然代码有问题:(1)D7没有变化,要注意RA7是一个用作晶振osc输入的引脚,这个引脚的使用应该和振荡器配置字有关,不过从电路图上看单片机用内部振荡器,建议好好看看数据称手册
                      (2)其他三个都是接在RB口上的,“PORTA=PORTA<<1;“这个操作不会改变RB口的输出,所以当然没有反应了,
                 :lol
 楼主| qzhui121 发表于 2010-7-29 13:42 | 显示全部楼层
明白了一些,谢谢!!!还有点不明白的,16系列的每个种类的都要设置振荡器有关吗?!!
leizi2008 发表于 2010-7-29 16:22 | 显示全部楼层
8# qzhui121 你最好吧这个芯片的数据手册好好看看,我用的是18系列,有这种情况
ffccgg 发表于 2010-7-29 16:23 | 显示全部楼层
第一次看别人写的程序,改一下没有实现,不知道问题出现的那儿
 楼主| qzhui121 发表于 2010-7-30 09:11 | 显示全部楼层
PORTA 是一个8 位宽的锁存器。RA4 为施密特触发器
输入和漏极开路输出引脚。它与T0CKI 时钟输入复用。
RA5(1) 只是施密特触发器输入,没有输出驱动器。所有
其他的RA 端口引脚都有施密特触发器输入电平和完整
的CMOS 输出驱动器。所有引脚都有数据方向控制位
(在TRIS 寄存器中),这些位可以将引脚配置为输入或
输出。
PORTA 引脚与比较器和参考电压功能复用。这些引脚
的工作状态是通过CMCON(比较器控制寄存器)寄存
器和VRCON 寄存器(参考电压控制寄存器)中的控制
位选择的。当选择它们作为比较器输入时,这些引脚将
读作0。
看到这里后就不知道改如何做了,我看16f877例子后还是不明白,这些I/O口如何设置才能有输出。。。能指点一下吗,谢谢!!
CONFIG配置字寄存器也没有说到PORTA口的设置,还是不明白
jiabin1024 发表于 2010-7-30 10:25 | 显示全部楼层
PORTA 引脚与比较器和参考电压功能复用。这些引脚
的工作状态是通过CMCON(比较器控制寄存器)寄存
器和VRCON 寄存器(参考电压控制寄存器)中的控制
位选择的。当选择它们作为比较器输入时,这些引脚将
读作0。


参考手册将其设为数字口,并将方向设为输出就可以了。
 楼主| qzhui121 发表于 2010-7-31 08:18 | 显示全部楼层
不明白啊!!可惜啊!!再学习了,看看书了
dzbing 发表于 2010-8-1 15:33 | 显示全部楼层
怎么看的问题都不懂呢?哎,看来我还只是个新手
fxe2008 发表于 2010-8-4 13:14 | 显示全部楼层
要初始化端口啊,作为普通IO口,关掉比较器
boy123456 发表于 2010-12-10 23:35 | 显示全部楼层
你那句PORTA=PORTA<<1,你电路接的也不对啊!A端口初始化时要配置成数字I/O口。
看看数据手册。
wuyurenfei 发表于 2012-2-23 10:48 | 显示全部楼层
我也是新手呀,也看看别人的程序
haiyo 发表于 2012-2-23 11:07 | 显示全部楼层
高手真多
wangc111 发表于 2012-2-23 11:19 | 显示全部楼层
大家互相学习呀
兰天白云 发表于 2012-2-23 16:43 | 显示全部楼层
看数据手册,关问人不行
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

176

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部