发新帖我要提问
12
返回列表
打印

请教基本的问题

[复制链接]
楼主: hlhfootbal
手机看帖
扫描二维码
随时随地手机跟帖
21
多谢各位帮忙。我的逻辑写错了。改了下程序,指示灯有反应了。
但是PORB口没有测到相应的波形,现状是在PORB 10口和11口测到高电平,在12口和13口测到低电平。此程序的目的是让PORB依次输出0000-1111的波形。
是因为 ...
hlhfootbal 发表于 2011-11-15 14:26

//portb.0......portb.15
for(i=0,LATB=0x0000;i<16;i++)
{
LATB+=0x0400;
}

使用特权

评论回复
22
hlhfootbal|  楼主 | 2011-11-18 11:10 | 只看该作者
为什么是对LATB操作呢,而不是对PORTB操作呢
按照你的做法,还是不行。

使用特权

评论回复
23
yewuyi| | 2011-11-18 11:13 | 只看该作者
为什么是对LATB操作呢,而不是对PORTB操作呢
按照你的做法,还是不行。
hlhfootbal 发表于 2011-11-18 11:10


TRISB对应的位打开了没有?

使用特权

评论回复
24
yewuyi| | 2011-11-18 11:18 | 只看该作者
为什么是对LATB操作呢,而不是对PORTB操作呢
按照你的做法,还是不行。
hlhfootbal 发表于 2011-11-18 11:10


对LATB操作的原因你可以自己看IO口的示意图,当用户外部电路设计不当时,用PORTB操作可能会出现读-修改-写的现象,所以新的芯片都改成用LATB操作了。

你必须把TRISB对应的IO口设置为输出。

在这里可以设置为TRISB=0b1100001111111111;
另外,你必须自己保证芯片的各个配置位设置正确,否则芯片没有工作,那写什么样的代码也不会工作。

如果还看不到波形,那你需要去检查自己的测试手段和测试方法是否正确了。

使用特权

评论回复
25
hlhfootbal|  楼主 | 2011-11-25 11:07 | 只看该作者
准备不用IO口并行输出数据了,以后数据量会很大。
准备采用IIC串行输出数据。

使用特权

评论回复
26
headwolf_83| | 2011-11-27 22:32 | 只看该作者
PIC24F的B口,注意设置ADPCFG寄存器,把B口设置成数字口之后再进行数字操作,比如送1和送0。

使用特权

评论回复
27
hlhfootbal|  楼主 | 2011-11-29 14:46 | 只看该作者
PIC24F是有IIC接口的,有IIC函数吗?

使用特权

评论回复
28
hlhfootbal|  楼主 | 2011-11-29 16:26 | 只看该作者
以上所说的第一部,是有库函数的吧。
开始函数,停止函数,发送数据函数?

5.JPG (44.6 KB )

5.JPG

使用特权

评论回复
29
hlhfootbal|  楼主 | 2011-11-29 17:40 | 只看该作者
库函数我已经找到了,但是以上第三条:wait for and verify an Acknowledge from the slave怎么处理啊?
多谢!

使用特权

评论回复
30
hlhfootbal|  楼主 | 2011-11-29 18:18 | 只看该作者
以上问题,自己用了以下语句处理 while(I2C1STATbits.ACKSTAT = 0);
                              MaserWriteI2C(0x0);

使用特权

评论回复
31
hlhfootbal|  楼主 | 2011-11-29 18:21 | 只看该作者
新问题,编译不通过。以下是我的程序
#include <p24Fxxxx.h>
#include <stdio.h>
#include <i2c.h>
int main (void)
{
  unsigned char add = 0x11;/* address is 0x11*/
  unsigned int configure1;
  unsigned int configure2 = 0x76;/*set baud rate as 100kHz,FCY is 12MHz*/
  configure1 = (I2C_ON & I2C_IDLE_CON & I2C_CLK_HLD &
             I2C_IPMI_DIS & I2C_7BIT_ADD &
             I2C_SLW_DIS & I2C_SM_DIS &
             I2C_GCALL_DIS & I2C_STR_DIS &
             I2C_NACK & I2C_ACK_DIS & I2C_RCV_DIS &
             I2C_STOP_DIS & I2C_RESTART_DIS &
             I2C_START_DIS);
  /*CW2 &=0xFB;*//*multiplexes the module to the ASCL1 and ASDA1 pins*/
  
  OpenI2C(configure1,configure2);
  IdleI2C();
  StartI2C();
  MaserWriteI2C(add);
  while(I2C1STATbits.ACKSTAT = 0);
     MaserWriteI2C(0x0);
  StopI2C();
  while(I2C1CONbits.PEN);
  CloseI2C();
}
请帮个忙吧,不识别#include <i2c.h>吗?

6.JPG (136.49 KB )

6.JPG

使用特权

评论回复
32
hlhfootbal|  楼主 | 2011-11-29 22:21 | 只看该作者
找到原因了,函数没有写对。

使用特权

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

本版积分规则