打印

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

[复制链接]
2540|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
#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口复用的模拟功能没关

使用特权

评论回复
5
qzhui121|  楼主 | 2010-7-29 10:40 | 只看该作者
能具体说一下如何处理吗?

使用特权

评论回复
6
qzhui121|  楼主 | 2010-7-29 10:40 | 只看该作者
第一次看别人写的程序,改一下没有实现,不知道问题出现的那儿

使用特权

评论回复
7
leizi2008| | 2010-7-29 12:02 | 只看该作者
显然代码有问题:(1)D7没有变化,要注意RA7是一个用作晶振osc输入的引脚,这个引脚的使用应该和振荡器配置字有关,不过从电路图上看单片机用内部振荡器,建议好好看看数据称手册
                      (2)其他三个都是接在RB口上的,“PORTA=PORTA<<1;“这个操作不会改变RB口的输出,所以当然没有反应了,
                 :lol

使用特权

评论回复
8
qzhui121|  楼主 | 2010-7-29 13:42 | 只看该作者
明白了一些,谢谢!!!还有点不明白的,16系列的每个种类的都要设置振荡器有关吗?!!

使用特权

评论回复
9
leizi2008| | 2010-7-29 16:22 | 只看该作者
8# qzhui121 你最好吧这个芯片的数据手册好好看看,我用的是18系列,有这种情况

使用特权

评论回复
10
ffccgg| | 2010-7-29 16:23 | 只看该作者
第一次看别人写的程序,改一下没有实现,不知道问题出现的那儿

使用特权

评论回复
11
qzhui121|  楼主 | 2010-7-30 09:11 | 只看该作者
PORTA 是一个8 位宽的锁存器。RA4 为施密特触发器
输入和漏极开路输出引脚。它与T0CKI 时钟输入复用。
RA5(1) 只是施密特触发器输入,没有输出驱动器。所有
其他的RA 端口引脚都有施密特触发器输入电平和完整
的CMOS 输出驱动器。所有引脚都有数据方向控制位
(在TRIS 寄存器中),这些位可以将引脚配置为输入或
输出。
PORTA 引脚与比较器和参考电压功能复用。这些引脚
的工作状态是通过CMCON(比较器控制寄存器)寄存
器和VRCON 寄存器(参考电压控制寄存器)中的控制
位选择的。当选择它们作为比较器输入时,这些引脚将
读作0。
看到这里后就不知道改如何做了,我看16f877例子后还是不明白,这些I/O口如何设置才能有输出。。。能指点一下吗,谢谢!!
CONFIG配置字寄存器也没有说到PORTA口的设置,还是不明白

使用特权

评论回复
12
jiabin1024| | 2010-7-30 10:25 | 只看该作者
PORTA 引脚与比较器和参考电压功能复用。这些引脚
的工作状态是通过CMCON(比较器控制寄存器)寄存
器和VRCON 寄存器(参考电压控制寄存器)中的控制
位选择的。当选择它们作为比较器输入时,这些引脚将
读作0。


参考手册将其设为数字口,并将方向设为输出就可以了。

使用特权

评论回复
13
qzhui121|  楼主 | 2010-7-31 08:18 | 只看该作者
不明白啊!!可惜啊!!再学习了,看看书了

使用特权

评论回复
14
dzbing| | 2010-8-1 15:33 | 只看该作者
怎么看的问题都不懂呢?哎,看来我还只是个新手

使用特权

评论回复
15
fxe2008| | 2010-8-4 13:14 | 只看该作者
要初始化端口啊,作为普通IO口,关掉比较器

使用特权

评论回复
16
boy123456| | 2010-12-10 23:35 | 只看该作者
你那句PORTA=PORTA<<1,你电路接的也不对啊!A端口初始化时要配置成数字I/O口。
看看数据手册。

使用特权

评论回复
17
wuyurenfei| | 2012-2-23 10:48 | 只看该作者
我也是新手呀,也看看别人的程序

使用特权

评论回复
18
haiyo| | 2012-2-23 11:07 | 只看该作者
高手真多

使用特权

评论回复
19
wangc111| | 2012-2-23 11:19 | 只看该作者
大家互相学习呀

使用特权

评论回复
20
兰天白云| | 2012-2-23 16:43 | 只看该作者
看数据手册,关问人不行

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

176

帖子

1

粉丝