xc8+pic - for nezastaví na nule
Moderátor: Moderátoři
xc8+pic - for nezastaví na nule
může mi někdo prosím vysvětlit, proč když udělám v xc8 a pic 16f88 toto
bit_to_lcd(unsigned char a)
{
char b;
for(b=7;b>=0;b--) {
if((a & (1<<b))!= 0) {
lcd_zapis("1");
} else {
lcd_zapis("0");
}
}
}
tak prostě for jede furt do nekonečna.
Aby to fungovalo, tak musím udělat odčítání od 8 do 1
for(b=8;b>0;b--) {
a pak v podmínce od b odečítat 1
if((a & (1<<b-1))!= 0) {
opravdu nechápu, proč nezastaví.
C=0b1000 0000;
Bcko daj normalne. For b=0 b<7; b++
(
If (a&c) posli 1 else posli 0;
C>>1;
)
Kód: Vybrat vše
void bit_to_lcd1(unsigned char a)
{
char b = 7;
do
{
if((a & (1<<b))!= 0)
{
lcd_zapis("1");
}
else
{
lcd_zapis("0");
}
}while(b-- != 0);
} - Programator
- Příspěvky: 1
- Registrován: 19 úno 2017, 00:00
Pozn.: Jako profesionální programátor musím říct, že je pravda, že se cyklu do-while vyhýbám, stejně jako drtivá většina ostatních programátorů, ale ono to má svoje důvody - čitelnost, přehlednost, korektnost apod. Ale to by bylo na delší diskuzi (čti flamewar).
Kód: Vybrat vše
void bit_to_lcd1(unsigned char a)
{
unsigned char b;
for (b = 0b10000000; b > 0; b >>= 1) {
lcd_zapis(a & b ? "1" : "0");
}
}