Програмирование pic на СИ.
Re: Програмирование pic на СИ.
ну так и должно быть
при нажатии на кнопку загориться 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; //иначе все выключаем
см. предыдущий листинг
-
misterkuk
- Мучитель микросхем
- Сообщения: 400
- Зарегистрирован: Сб апр 17, 2010 10:30:13
- Контактная информация:
Re: Програмирование pic на СИ.
vovik15 писал(а):ну так и должно быть
при нажатии на кнопку загориться 1 сегмент
чтобы загорелись все сегменты нужно написать не PORTB = 1; а PORTB = 0xff; или PORTB = 0b11111111
чтобы при отпускании кнопки сегменты потухли нужно написать
if (RA0 == 1) PORTB = 0xff; //если на линии RA0 присутсвует 1,значит включаем все сегменты
else PORTB = 0; //иначе все выключаем
см. предыдущий листинг
бббррррр.
.
Код: Выделить всё
void podgot (void); // подготовка МК
void main (void)
{
podgot();
while (1)
{
if (RA2 == 0) PORTB = 1;
else PORTB = 0;
}
} //конец функции;
// === подготовка МК
void podgot (void)
{
TRISA = 0b11111111; // направление работы ножек порта А
TRISB = 0b00000000; // направление работы ножек порта В
CMCON = 0x07; // отключение компараторов
PORTA = 0; // очищаем порт А
PORTB = 0; // очищаем порт Б
RBPU = 1; // подтягивающие R (0-вкл, 1-выкл)
}Re: Програмирование pic на СИ.
потому что 1 это 00000001 одно и тоже
из этого следует ,что 1 прописываеться только в PORTB0 а на всех остальных линиях порта нолики
надо написать так PORTB = 0b11111111; или PORTB = 0xff; или PORTB = 255; это одно и тоже в разнвы системах счисления
из этого следует ,что 1 прописываеться только в PORTB0 а на всех остальных линиях порта нолики
надо написать так PORTB = 0b11111111; или PORTB = 0xff; или PORTB = 255; это одно и тоже в разнвы системах счисления
-
misterkuk
- Мучитель микросхем
- Сообщения: 400
- Зарегистрирован: Сб апр 17, 2010 10:30:13
- Контактная информация:
Re: Програмирование pic на СИ.
vovik15 писал(а):потому что 1 это 00000001 одно и тоже
из этого следует ,что 1 прописываеться только в PORTB0 а на всех остальных линиях порта нолики![]()
надо написать так PORTB = 0b11111111; или PORTB = 0xff; или PORTB = 255; это одно и тоже в разнвы системах счисления
УУУРРРАААА:)
-
misterkuk
- Мучитель микросхем
- Сообщения: 400
- Зарегистрирован: Сб апр 17, 2010 10:30:13
- Контактная информация:
Re: Програмирование pic на СИ.
Проверил на железе. Всё чётко работает. И сразу вопрос. Как организовать "кнопка в режиме переключателя" как это в самоучителе асембрера на лабките? И в еепром можно заносить только 1 бит? или 0-255. Так как там указуется адрес, тоесть ячейка энергонезависимой памяти размером 1 байт или 8бит. А если мне нужно поместить число больше 255? к примеру 500. то кактут обстоят дела?
Re: Програмирование pic на СИ.
спросите в этой ветке ,вам обязательно ответят .
(я просто там больше времени провожу)
http://labkit.ru/forum/index.php?s=d882 ... howforum=5
http://labkit.ru/forum/index.php?s=d882 ... howforum=5
-
misterkuk
- Мучитель микросхем
- Сообщения: 400
- Зарегистрирован: Сб апр 17, 2010 10:30:13
- Контактная информация:
Re: Програмирование pic на СИ.
vovik15 писал(а):спросите в этой ветке ,вам обязательно ответят .(я просто там больше времени провожу)
http://labkit.ru/forum/index.php?s=d882 ... howforum=5
После 2 попыток зарегистрироваться письмо на почту так и не пришло.
_______________ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
В чём тут ошибка?
Хочу опрашивать 2 кнопки . И зажигать сегменты в соотвецтвии с нажатой кнопкой.
Код: Выделить всё
__CONFIG (LP & UNPROTECT & LVPDIS & BOREN & MCLRDIS & PWRTEN & WDTDIS);
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;
}Re: Програмирование pic на СИ.
ну сам прочитай свою программу. Что там написано? если нажата кнопка в порт оправляем число
ИНАЧЕ (тоесть если она не нажата) смотрим нажата ли вторая? если да. то отправляем другое число. правильно?
в else за место вызова функции надо обнулить порт.
вот так надо
ИНАЧЕ (тоесть если она не нажата) смотрим нажата ли вторая? если да. то отправляем другое число. правильно?
в else за место вызова функции надо обнулить порт.
вот так надо
Код: Выделить всё
__CONFIG (LP & UNPROTECT & LVPDIS & BOREN & MCLRDIS & PWRTEN & WDTDIS);
void podgot (void); // подготовка МК
void podpr (void);
void main (void);
{
podgot();
while (1);
{
podpr (); //функция вызываеться постоянно
if (RA1 == 0);
PORTB = 0b11110000;
else PORTB = 0;
}
} //конец функции
// === подготовка МК
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 PORTB = 0;
}
-
misterkuk
- Мучитель микросхем
- Сообщения: 400
- Зарегистрирован: Сб апр 17, 2010 10:30:13
- Контактная информация:
Re: Програмирование pic на СИ.
vovik15 писал(а):ну сам прочитай свою программу. Что там написано? если нажата кнопка в порт оправляем число
ИНАЧЕ (тоесть если она не нажата) смотрим нажата ли вторая? если да. то отправляем другое число. правильно?
в else за место вызова функции надо обнулить порт.
вот так надо
Внёс изменения. Не компилируется. выдаёт кучу ошибок. Ведь вроде всё правельно.
Re: Програмирование pic на СИ.
листинг давай
-
misterkuk
- Мучитель микросхем
- Сообщения: 400
- Зарегистрирован: Сб апр 17, 2010 10:30:13
- Контактная информация:
Re: Програмирование pic на СИ.
vovik15 писал(а):листинг давай
Это листинг?
Код: Выделить всё
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 37 : missing newline
Error[285] C:\Program Files\Microchip\project\migal\migal.c 10 : no identifier in declaration
Warning[374] C:\Program Files\Microchip\project\migal\migal.c 10 : missing basic type; int assumed
Error[314] C:\Program Files\Microchip\project\migal\migal.c 10 : ";" expected
Error[285] C:\Program Files\Microchip\project\migal\migal.c 12 : no identifier in declaration
Warning[374] C:\Program Files\Microchip\project\migal\migal.c 12 : missing basic type; int assumed
Error[314] C:\Program Files\Microchip\project\migal\migal.c 12 : ";" expected
Error[285] C:\Program Files\Microchip\project\migal\migal.c 13 : no identifier in declaration
Warning[374] C:\Program Files\Microchip\project\migal\migal.c 13 : missing basic type; int assumed
Error[314] C:\Program Files\Microchip\project\migal\migal.c 13 : ";" expected
Error[285] C:\Program Files\Microchip\project\migal\migal.c 15 : no identifier in declaration
Warning[374] C:\Program Files\Microchip\project\migal\migal.c 15 : missing basic type; int assumed
Error[314] C:\Program Files\Microchip\project\migal\migal.c 15 : ";" expected
Warning[374] C:\Program Files\Microchip\project\migal\migal.c 16 : missing basic type; int assumed
Error[983] C:\Program Files\Microchip\project\migal\migal.c 16 : storage class redeclared
Error[984] C:\Program Files\Microchip\project\migal\migal.c 16 : type redeclared
Error[239] C:\Program Files\Microchip\project\migal\migal.c 16 : identifier "PORTB" redefined (from line 23)
Error[285] C:\Program Files\Microchip\project\migal\migal.c 17 : no identifier in declaration
Warning[374] C:\Program Files\Microchip\project\migal\migal.c 17 : missing basic type; int assumed
Error[314] C:\Program Files\Microchip\project\migal\migal.c 17 : ";" expected
Error[285] C:\Program Files\Microchip\project\migal\migal.c 19 : no identifier in declaration
Warning[374] C:\Program Files\Microchip\project\migal\migal.c 19 : missing basic type; int assumed
Error[314] C:\Program Files\Microchip\project\migal\migal.c 19 : ";" expected
Error[285] C:\Program Files\Microchip\project\migal\migal.c 20 : no identifier in declaration
Warning[374] C:\Program Files\Microchip\project\migal\migal.c 20 : missing basic type; int assumed
Error[314] C:\Program Files\Microchip\project\migal\migal.c 20 : ";" expected
Error[248] C:\Program Files\Microchip\project\migal\migal.c 36 : inappropriate "else"
Warning[337] C:\Program Files\Microchip\project\migal\migal.c 36 : line does not have a newline on the end
Halting build on first failure as requested.
BUILD FAILED: Wed Feb 02 21:21:38 2011
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: Програмирование pic на СИ.
Нафига тут ; ?void main (void);
{
-
misterkuk
- Мучитель микросхем
- Сообщения: 400
- Зарегистрирован: Сб апр 17, 2010 10:30:13
- Контактная информация:
Re: Програмирование pic на СИ.
Аlex писал(а):Нафига тут ; ?void main (void);
{
Точно. Но ошибки не пропали. Хотя и стало их меньше.
Код: Выделить всё
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 2011Re: Програмирование pic на СИ.
так,я разобрался с этой программой ,все работает четко. пол часа угробил
найди в сети информацию о том,как использовать маски в СИ . с их помощью сможеш решить свою задачу
найди в сети информацию о том,как использовать маски в СИ . с их помощью сможеш решить свою задачу
-
misterkuk
- Мучитель микросхем
- Сообщения: 400
- Зарегистрирован: Сб апр 17, 2010 10:30:13
- Контактная информация:
Re: Програмирование pic на СИ.
vovik15 писал(а):так,я разобрался с этой программой ,все работает четко. пол часа угробил![]()
найди в сети информацию о том,как использовать маски в СИ . с их помощью сможеш решить свою задачу
Про маски не слова. Может про масивы?:)
Re: Програмирование pic на СИ.
в том самоучителе про маски не написано. я говорю в сети посмотри
я говорю про |= &= ^=
я говорю про |= &= ^=
-
misterkuk
- Мучитель микросхем
- Сообщения: 400
- Зарегистрирован: Сб апр 17, 2010 10:30:13
- Контактная информация:
Re: Програмирование pic на СИ.
vovik15 писал(а):в том самоучителе про маски не написано. я говорю в сети посмотри
я говорю про |= &= ^=
Подобное нашол только тут http://www.labkit.ru/html/C_for_PIC?id=405 даже Булеваую алгебру просмотрел. Но не пойму почему прогграмма не компилируется. Принцип то элементарный. Если ноль то одно, если единица то другое. А он указует ошибку на последню закрывающую фигурную скобку и говорит что там чтото не написано. Или на "Else" ругается. Может какието правила есть которых я не знаю, может при такой логике действий тут не допустимы эти операторы (if)?
Re: Програмирование pic на СИ.
&=
при накладывании маски &= , в тех биах где в маске стоит 0 , биты исходного числа принамают значение 0, независимо от первоночального значения, в тех битах, где в маске стоит 1, исходное число не меняется
|=
при накладывании маски |=, в тех битах где в маске стоит 1, биты исходного числа принимают 1, независимо то первоначально значения. В тех битах, где в маске стоит 0, исходное значение не меняется
при накладывании маски &= , в тех биах где в маске стоит 0 , биты исходного числа принамают значение 0, независимо от первоночального значения, в тех битах, где в маске стоит 1, исходное число не меняется
|=
при накладывании маски |=, в тех битах где в маске стоит 1, биты исходного числа принимают 1, независимо то первоначально значения. В тех битах, где в маске стоит 0, исходное значение не меняется
-
misterkuk
- Мучитель микросхем
- Сообщения: 400
- Зарегистрирован: Сб апр 17, 2010 10:30:13
- Контактная информация:
Re: Програмирование pic на СИ.
vovik15 писал(а):&=
при накладывании маски &= , в тех биах где в маске стоит 0 , биты исходного числа принамают значение 0, независимо от первоночального значения, в тех битах, где в маске стоит 1, исходное число не меняется
|=
при накладывании маски |=, в тех битах где в маске стоит 1, биты исходного числа принимают 1, независимо то первоначально значения. В тех битах, где в маске стоит 0, исходное значение не меняется
А можно элементарный пример?