佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1163|回复: 2

Urgent!希望各位大大帮忙

[复制链接]
发表于 7-3-2008 11:55 PM | 显示全部楼层 |阅读模式
请各位大大帮忙看看这 C Program 有错误吗?

让我说明一下我的 Program. (sorry 没准备到电路图)

我要把资料存进 external eeprom, 然后再用hyperterminal 将它 display 在电脑。

我的 circuit 有两个 button, 当我一按 port C0 的 button 时,我的资料就会被 record,然后会被储存在 external eeprom. 而当我一按 port C2 的 button 时,那些在 external eeprom 的资料就会被 display 在电脑。

我的问题是:

1)要如何停止record 资料.
2) 要如何停止 display 资料.
3) 要如何删除 external eeprom 的资料。

可不可以帮我改c program 让它有以上的功能。

#include <24256.C> 这是external eeprom 的 header file.

4)init_ext_eeprom();
   delay_ms(1);

上面的code要放在那里?要放几次?需要放delay_ms(1); 吗?


这是我的c program:

#include <16f877a.h>
#device adc=8
#use delay(clock=20000000)
#use rs232(baud=9600,xmit=PIN_C6,rcv=PIN_C7,parity=N)
#fuses hs,nowdt,noprotect,brownout,nolvp

#byte PORTA=5
#byte PORTB=6
#byte PORTc=7

#define EEPROM_SDA PIN_C4
#define EEPROM_SCL PIN_C3
#include <24256.C>

void main()

{
   signed int value2prom,value4prom;

   int i=0;
   int status=0;
   int status2=0;
   int sec_trigger=0;

   float mydata;

   set_tris_b(0);
   set_tris_c(0x81);

   setup_port_a(ALL_ANALOG);
   setup_adc(ADC_CLOCK_INTERNAL);
   set_adc_channel(0);

   output_low(pin_c1);
  
   do
   {  
      if(input(pin_c0)==0 && status==0 )
      {status=1;
      }

      else if (input(pin_c0)==1 && status==1 )
      {  status=0;
        value2prom=read_adc();
         init_ext_eeprom();
   delay_ms(1);
         write_ext_eeprom(i,value2prom);

       if(i<255)
         {  i++;     }

         else
         {  output_high(pin_c1);  }
         delay_ms(1);
         sec_trigger = 1;
      }

      else if (input(pin_c2)==0 && status2==0 )
      { status2=1 ;
      }

      else if (input(pin_c2)==1 && status2==1)
      {
         status2=0;
         output_low(pin_c1);
         for(i=0; i<=255; i++)
         {
            value4prom=read_ext_eeprom(i);
            mydata=5*value4prom;
            printf(" %f ", mydata);
            delay_ms(1);
         }
         i=0;
      }
   }while(1);
}

我的另一个问题是,我的external eeprom 有set对吗?



想问各位大大,第5 和 第6 个脚的resister应该是多少呢?
从 24LC256 的datasheet, 10 kΩ for 100 kHz, 2 kΩ for 400 kHz and 1 MHz.
可是我的是10到150Hz..我该用多少Ω 的resister?

谢谢各位的帮忙。谢谢。
回复

使用道具 举报


ADVERTISEMENT

发表于 11-3-2008 12:17 AM | 显示全部楼层
24LC256 是 I2C interface 的 eeprom 吧
改我就不会,我不是用 c compiler 的

1)要如何停止record 资料.
2) 要如何停止 display 资料.
3) 要如何删除 external eeprom 的资料。

以上三个状况,你要 study 这颗 eeprom 的timing 里面先,或给你一些 example
放什么 pull up resistor 我就不懂了。。。
回复

使用道具 举报

发表于 11-3-2008 12:58 AM | 显示全部楼层
原帖由 emroom 于 7-3-2008 11:55 PM 发表
我的问题是:

1)要如何停止record 资料.
2) 要如何停止 display 资料.
3) 要如何删除 external eeprom 的资料。

可不可以帮我改c program 让它有以上的功能。

你的问题并不难,难就难在你要人帮你改。。。

1)要如何停止record 资料.
> 你要录几个资料?按就录, 放就停?还是一按就录n个, 录够n个自己停?

2) 要如何停止 display 资料.
> 你要显示几个资料?按就显示, 放就停?还是?

3) 要如何删除 external eeprom 的资料。
> 可以用Erase command, 或覆写0x00, 或0xFF。

上面的游戏规则是你定的, 是你决定他要怎样, 你就把它做成怎样。。。

Pull up resistor 用10K。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 26-12-2024 12:15 AM , Processed in 0.106941 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表