ну так и должно быть при нажатии на кнопку загориться 1 сегмент чтобы загорелись все сегменты нужно написать не PORTB = 1; а PORTB = 0xff; или PORTB = 0b11111111 чтобы при отпускании кнопки сегменты потухли нужно написать if (RA0 == 1) PORTB = 0xff; //если на линии RA0 присутсвует 1,значит включаем все сегменты else PORTB = 0; //иначе все выключаем см. предыдущий листинг
ну так и должно быть при нажатии на кнопку загориться 1 сегмент чтобы загорелись все сегменты нужно написать не PORTB = 1; а PORTB = 0xff; или PORTB = 0b11111111 чтобы при отпускании кнопки сегменты потухли нужно написать if (RA0 == 1) PORTB = 0xff; //если на линии RA0 присутсвует 1,значит включаем все сегменты else PORTB = 0; //иначе все выключаем см. предыдущий листинг
бббррррр. терь при отжатии гаснет. Здорово. Но почемуто ггорит 1 сегмент. Хоть и указую порт б а не какойта 1 из выводов Код ниже. .
void podgot (void) { TRISA = 0b11111111; // направление работы ножек порта А TRISB = 0b00000000; // направление работы ножек порта В CMCON = 0x07; // отключение компараторов PORTA = 0; // очищаем порт А PORTB = 0; // очищаем порт Б RBPU = 1; // подтягивающие R (0-вкл, 1-выкл) }
потому что 1 это 00000001 одно и тоже из этого следует ,что 1 прописываеться только в PORTB0 а на всех остальных линиях порта нолики надо написать так PORTB = 0b11111111; или PORTB = 0xff; или PORTB = 255; это одно и тоже в разнвы системах счисления
потому что 1 это 00000001 одно и тоже из этого следует ,что 1 прописываеться только в PORTB0 а на всех остальных линиях порта нолики надо написать так PORTB = 0b11111111; или PORTB = 0xff; или PORTB = 255; это одно и тоже в разнвы системах счисления
УУУРРРАААА:) Работает. Век живи, век учись. Терь переходим к более сложному:)
Проверил на железе. Всё чётко работает. И сразу вопрос. Как организовать "кнопка в режиме переключателя" как это в самоучителе асембрера на лабките? И в еепром можно заносить только 1 бит? или 0-255. Так как там указуется адрес, тоесть ячейка энергонезависимой памяти размером 1 байт или 8бит. А если мне нужно поместить число больше 255? к примеру 500. то кактут обстоят дела?
После 2 попыток зарегистрироваться письмо на почту так и не пришло. _______________ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ В чём тут ошибка? Хочу опрашивать 2 кнопки . И зажигать сегменты в соотвецтвии с нажатой кнопкой.
void podgot (void); // подготовка МК void podpr (void); void main (void); { podgot(); while (1); { if (RA1 == 0); PORTB = 0b11110000; else // иначе podpr (); } } //конец функции // === подготовка МК
void podgot (void) { TRISA = 0b11111111; // направление работы ножек порта А TRISB = 0b00000000; // направление работы ножек порта В CMCON = 0x07; // отключение компараторов PORTA = 0; // очищаем порт А PORTB = 0; // очищаем порт Б RBPU = 1; // подтягивающие R (0-вкл, 1-выкл) } void podpr (void) { if (RA2 == 0); PORTB = 0b00001111; }
ну сам прочитай свою программу. Что там написано? если нажата кнопка в порт оправляем число ИНАЧЕ (тоесть если она не нажата) смотрим нажата ли вторая? если да. то отправляем другое число. правильно? в else за место вызова функции надо обнулить порт.
ну сам прочитай свою программу. Что там написано? если нажата кнопка в порт оправляем число ИНАЧЕ (тоесть если она не нажата) смотрим нажата ли вторая? если да. то отправляем другое число. правильно? в else за место вызова функции надо обнулить порт.
вот так надо
Внёс изменения. Не компилируется. выдаёт кучу ошибок. Ведь вроде всё правельно.
Точно. Но ошибки не пропали. Хотя и стало их меньше.
Код:
Executing: "C:\Program Files\HI-TECH Software\PICC\9.50\BIN\PICC.EXE" -C -E"migal.cce" "migal.c" -O"migal.obj" -Zg9 -O -ASMLIST -Q -MPLAB -16F628A Advisory[1207] : some of the command line options you are using are now obsolete Advisory[1208] : use --help option or refer to the user manual for option details Warning[176] C:\Program Files\Microchip\project\migal\migal.c 38 : missing newline Error[291] C:\Program Files\Microchip\project\migal\migal.c 9 : K&R identifier "podpr" not an argument Warning[347] C:\Program Files\Microchip\project\migal\migal.c 9 : external declaration inside function Error[314] C:\Program Files\Microchip\project\migal\migal.c 9 : ";" expected Error[315] C:\Program Files\Microchip\project\migal\migal.c 12 : "{" expected Error[248] C:\Program Files\Microchip\project\migal\migal.c 17 : inappropriate "else" Error[237] C:\Program Files\Microchip\project\migal\migal.c 24 : function "podgot" redefined Error[248] C:\Program Files\Microchip\project\migal\migal.c 36 : inappropriate "else" Warning[337] C:\Program Files\Microchip\project\migal\migal.c 37 : line does not have a newline on the end Halting build on first failure as requested. BUILD FAILED: Wed Feb 02 23:06:42 2011
так,я разобрался с этой программой ,все работает четко. пол часа угробил найди в сети информацию о том,как использовать маски в СИ . с их помощью сможеш решить свою задачу
так,я разобрался с этой программой ,все работает четко. пол часа угробил найди в сети информацию о том,как использовать маски в СИ . с их помощью сможеш решить свою задачу
в том самоучителе про маски не написано. я говорю в сети посмотри я говорю про |= &= ^=
Подобное нашол только тут http://www.labkit.ru/html/C_for_PIC?id=405 даже Булеваую алгебру просмотрел. Но не пойму почему прогграмма не компилируется. Принцип то элементарный. Если ноль то одно, если единица то другое. А он указует ошибку на последню закрывающую фигурную скобку и говорит что там чтото не написано. Или на "Else" ругается. Может какието правила есть которых я не знаю, может при такой логике действий тут не допустимы эти операторы (if)?
&= при накладывании маски &= , в тех биах где в маске стоит 0 , биты исходного числа принамают значение 0, независимо от первоночального значения, в тех битах, где в маске стоит 1, исходное число не меняется
|= при накладывании маски |=, в тех битах где в маске стоит 1, биты исходного числа принимают 1, независимо то первоначально значения. В тех битах, где в маске стоит 0, исходное значение не меняется
&= при накладывании маски &= , в тех биах где в маске стоит 0 , биты исходного числа принамают значение 0, независимо от первоночального значения, в тех битах, где в маске стоит 1, исходное число не меняется
|= при накладывании маски |=, в тех битах где в маске стоит 1, биты исходного числа принимают 1, независимо то первоначально значения. В тех битах, где в маске стоит 0, исходное значение не меняется
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения