查看: 1164|回复: 2
|
Urgent!希望各位大大帮忙
[复制链接]
|
|
请各位大大帮忙看看这 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?
谢谢各位的帮忙。谢谢。 |
|
|
|
|
|
|
|
发表于 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。 |
|
|
|
|
|
|
| |
本周最热论坛帖子
|