Flasher писал(а):Почему до ноп не дойдет?
потому что по умолчанию char unsigned
с signed char дойдет
Flasher писал(а):Почему до ноп не дойдет?
Volgol_555 писал(а): Ведь в проекте я инкрементирую "вручную"....я с char явно не смогу написать вот так ++day;
Код: Выделить всё
switch (day) {
case 1: case 2 : case 3 : case 4: case 5 :
{
if (hour[0]==22 || hour[0]==12) {puts("ok_g");}
if (hour[0]==1 || hour[0]==17) {puts("ok_t");}
}
break;
case 6 : case 7:
{
if (hour[0]==22 || hour[0]==9) {puts("ok_g");}
if (hour[0]==1 || hour[0]==17) {puts("ok_t");}
}
break;
} Код: Выделить всё
default:
day=1;
Код: Выделить всё
char ar[N];
for (unsigned int i = N-1; i >= 0; --i)
ar[i] = i;всё также:Flasher писал(а):сравнивать знаковые и беззнаковые нужно весьма осторожно.
Flasher писал(а):Проблема в тупом программисте, а не в беззнаковости
Flasher писал(а):Проблема в тупом программисте, а не в беззнаковости

Код: Выделить всё
if (day>5) {
if (hour[0]==22 || hour[0]==12) {puts("ok_g");}
if (hour[0]==1 || hour[0]==17) {puts("ok_t");} //***
}
if (day<6) {
if (hour[0]==22 || hour[0]==9) {puts("ok_g");}
if (hour[0]==1 || hour[0]==17) {puts("ok_t");}
}
Аlex писал(а):На всякий случай. А то там чувствуется в программе может переменная доинкрементироваться хрен знает до чегоКод: Выделить всё
default:
day=1;

a_skr писал(а):http://sunduk.radiokot.ru/loadfile/?load_id=1299612587&turbo=1 2.05.0
Volgol_555, Ваш пример работает как надо.
Код: Выделить всё
#include <tiny13.h>
#include <delay.h>
#define CLK PORTB.0
#define DATA PORTB.1
#define ENA PORTB.2
// функция выдачи одного байта в 74595
void put_byte(char b)
{
char i=8;
// выводим все 8 бит по одному, начиная со старшего
do
{
DATA = b & 0x80; // выставляем в порт старший бит
CLK = 1; CLK = 0; // строб sck
b <<= 1; // сдвигаем наш байт влево на 1 бит
}
while(--i); // и так 8 раз
ENA = 1; ENA = 0; // строб защелки
}
// основная функция
void main(void)
{
char a;
DDRB = 7; // PB0-2 на выход
a = 0; // обнуляем переменную a
// зажигаем светодиоды
// в этом цикле a будет принимать значения:
// 00000001
// 00000011
// 00000111
// 00001111
// 00011111
// 00111111
do
{
a = (a<<1) | 1; // сдвигаем a влево на 1 бит и устанавливаем младший бит в 1
put_byte(a); // выводим a в 74595
delay_ms(500); // задержка 500 мс
}
while(a != 0x3F); // пока a не станет равной 00111111 = 0x3F
// гасим по аналогии
do
{
a >>= 1;
put_byte(a);
delay_ms(500);
}
while(a);
// ждем единицы на PB4
while(PINB.4 == 0);
// зажигаем
do
{
a = (a<<1) | 1;
put_byte(a);
delay_ms(200);
}
while(a != 0x3F);
// задержка 6 секунд
delay_ms(6000);
// гасим
do
{
a >>= 1;
put_byte(a);
delay_ms(200);
}
while(a);
}