| Автор |
Съобщение |
|
mash
Ранг: Новодошъл
Регистриран на: Пет Окт 27, 2006 6:23 pm Мнения: 162 Местоположение: Севлиево
|
 bin to bcd
Имам проблем със следния код:
int i;
...
....
...
int get_bcd(BYTE data)
{
int nibh;
int nibl;
nibh=data/10;
nibl=data-(nibh*10);
return((nibh<<4)|nibl);
}
write_ds1307(0,get_bcd(i));
При компилиране ми излиза следното : Expecting a close paren
|
| Сря Окт 28, 2009 7:28 pm |
|
 |
|
bobyper
Ранг: Ориентиран
Регистриран на: Вто Яну 31, 2006 11:11 pm Мнения: 295 Местоположение: София
|
 Re: bin to bcd
От този код не се наблюдава липсваща скоба. Вероятно е в другата част дето не е показана
|
| Сря Окт 28, 2009 8:15 pm |
|
 |
|
fan
Ранг: Почетен член
Регистриран на: Съб Окт 13, 2007 12:12 pm Мнения: 712
|
Кода е наред, търси на друго място!
|
| Сря Окт 28, 2009 8:23 pm |
|
 |
|
RM
Ранг: Почетен член
Регистриран на: Нед Окт 19, 2008 7:26 pm Мнения: 673
|
_________________ Вниманиене съмвишист....ИЙ.
|
| Сря Окт 28, 2009 8:46 pm |
|
 |
|
mash
Ранг: Новодошъл
Регистриран на: Пет Окт 27, 2006 6:23 pm Мнения: 162 Местоположение: Севлиево
|
Не!.....
много интересно ...
пробвах различни варианти.
От там е проблема, защото компилатора ми маркира i след пробата да компилирам кода
|
| Сря Окт 28, 2009 11:23 pm |
|
 |
|
tommyboy
Ранг: Минаващ
Регистриран на: Вто Авг 21, 2007 10:40 pm Мнения: 24
|
void BINtoDEC()
{
for (DIG_10000=0; Vout>=10000; DIG_10000++){
Vout = Vout - 10000;
}
for (DIG_1000=0; Vout>=1000; DIG_1000++){
Vout = Vout - 1000;
}
for (DIG_100=0; Vout>=100; DIG_100++){
Vout = Vout - 100;
}
for (DIG_10=0; Vout>=10; DIG_10++){
Vout = Vout - 10;
}
for (DIG_1=0; Vout>=1; DIG_1++){
Vout = Vout - 1;
}
}
Писано е на микроС , Vout е число в бин, а DIG_10000,DIG_1000,DIG_100... са десетохилядни, хилядни и т.н.
|
| Чет Окт 29, 2009 12:10 am |
|
 |
|
kiiid
Ранг: Почетен член
Регистриран на: Съб Сеп 24, 2005 2:00 pm Мнения: 787
|
bx=(unsigned char)(((x/10)<<4)+(x%10))
Това ти взима BIN число и ти го прави на BCD. Не разбрах за какво ти беше цяла фунция за това
|
| Чет Окт 29, 2009 2:15 am |
|
 |
|
Wise
Ранг: Форумен бог
Регистриран на: Нед Дек 19, 2004 6:26 pm Мнения: 1628 Местоположение: Сливен
|
без да съм навътре в C мисля, че това BYTE не е дефинирано.
Ако е int или char би трябвало да се компилира
|
| Чет Окт 29, 2009 10:46 am |
|
 |
|
mash
Ранг: Новодошъл
Регистриран на: Пет Окт 27, 2006 6:23 pm Мнения: 162 Местоположение: Севлиево
|
не става  ..
нещо зациклих .... преглеждах целия код и никъде няма проблем в него. Като го оставя така write_ds1307(0,i); и се компилира но така:write_ds1307(0,get_bcd(i)); не иска ...
|
| Съб Окт 31, 2009 10:02 am |
|
 |
|
zaphod
Ранг: Форумен бог
Регистриран на: Нед Юли 24, 2005 10:28 am Мнения: 2658
|
къв компилер ползваш бе чадо? кода наистина изглежда наред, да не си на нещо писано от ентусиасти?
|
| Съб Окт 31, 2009 10:06 am |
|
 |
|
mash
Ранг: Новодошъл
Регистриран на: Пет Окт 27, 2006 6:23 pm Мнения: 162 Местоположение: Севлиево
|
|
| Съб Окт 31, 2009 10:19 am |
|
 |
|
mash
Ранг: Новодошъл
Регистриран на: Пет Окт 27, 2006 6:23 pm Мнения: 162 Местоположение: Севлиево
|
ето вида в който не се компилира:
 |  |  |  | Код: //sveriavane na chasovnika Do { printf(lcd_putc,"\fClock adjust:"); printf(lcd_putc,"\nHour:%02d",k); delay_ms(100); if(!input(pin_c0)) {k++;delay_ms(100);} if(!input(pin_c1)) {k--;delay_ms(100);} delay_ms(100); if(!input(pin_c2)) {delay_ms(1000); if(!input(pin_c2)) {h=3;}} } While(h>3); Do {printf(lcd_putc,"\fClock adjust:"); printf(lcd_putc,"\nMin:%02d",j); delay_ms(100); if(!input(pin_c0)) {j++;delay_ms(100);} if(!input(pin_c1)) {j--;delay_ms(100);} delay_ms(100); if(!input(pin_c2)) {delay_ms(1000); if(!input(pin_c2)) {h=2;}} } While(h>2); Do {printf(lcd_putc,"\fClock adjust:"); printf(lcd_putc,"\nSec:%02d",i); delay_ms(100); if(!input(pin_c0)) {i++;delay_ms(100);} if(!input(pin_c1)) {i--;delay_ms(100);} delay_ms(100); if(!input(pin_c2)) delay_ms(1000); if(!input(pin_c2)) { write_ds1307(0,get_bcd(i));///// този ред delay_ms(40); write_ds1307(1,j); delay_ms(40); write_ds1307(2,k); delay_ms(40); b=2;h=1;}} While (b>1); |  |  |  |  |
ето и вида в който се компилира в същата програма :
|
| Съб Окт 31, 2009 12:05 pm |
|
 |
|
fan
Ранг: Почетен член
Регистриран на: Съб Окт 13, 2007 12:12 pm Мнения: 712
|
Слушай, има нещо друго. При мен всичко се компилира - естствено с добавяне на променливи и фантомни функции на мястото на write_ds1307 и get_bcd (ами не си ги постнал). И си сложи по-нова версия - няма да ти гръмне компа от нея, в момента из нета можеш да си намериш 4.093. Не е лошо и да си пооправиш стила на писане в си-то(ако искаш?!).
|
| Съб Окт 31, 2009 12:38 pm |
|
 |
|
mash
Ранг: Новодошъл
Регистриран на: Пет Окт 27, 2006 6:23 pm Мнения: 162 Местоположение: Севлиево
|
Реших проблема като организирах нова подпрограма в която да се изпълни това.
Мерси за отговорите. Вече съм с нова версия 
|
| Вто Ное 03, 2009 6:41 pm |
|
 |
|
sv_shady
Ранг: Популярен
Регистриран на: Сря Окт 11, 2006 8:19 pm Мнения: 373 Местоположение: София/Edinburgh, UK
|
Абе то проблема не е от весията, но по добре да имаш по-нова от 4.033, а иначе наистина, пооправи си стила на писане, защото това ме отказа да ти разгледам кода. Слагай нови редове, табчета, е такива работи, помагат. Как дебъгваш такъв код не знам...
|
| Сря Ное 04, 2009 2:31 am |
|
|