Поклонники продукции Microchip Technology Inc тусуются тут.
Ответить

Re: Програмирование pic на СИ.

Ср фев 02, 2011 00:40:43

ну так и должно быть
при нажатии на кнопку загориться 1 сегмент
чтобы загорелись все сегменты нужно написать не PORTB = 1; а PORTB = 0xff; или PORTB = 0b11111111
чтобы при отпускании кнопки сегменты потухли нужно написать
if (RA0 == 1) PORTB = 0xff; //если на линии RA0 присутсвует 1,значит включаем все сегменты
else PORTB = 0; //иначе все выключаем
см. предыдущий листинг

Re: Програмирование pic на СИ.

Ср фев 02, 2011 01:03:32

vovik15 писал(а):ну так и должно быть
при нажатии на кнопку загориться 1 сегмент
чтобы загорелись все сегменты нужно написать не PORTB = 1; а PORTB = 0xff; или PORTB = 0b11111111
чтобы при отпускании кнопки сегменты потухли нужно написать
if (RA0 == 1) PORTB = 0xff; //если на линии RA0 присутсвует 1,значит включаем все сегменты
else PORTB = 0; //иначе все выключаем
см. предыдущий листинг

бббррррр.:) терь при отжатии гаснет. Здорово. Но почемуто ггорит 1 сегмент. Хоть и указую порт б а не какойта 1 из выводов Код ниже.
.
Код:
   
     
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 на СИ.

Ср фев 02, 2011 01:07:49

потому что 1 это 00000001 одно и тоже
из этого следует ,что 1 прописываеться только в PORTB0 а на всех остальных линиях порта нолики :)
надо написать так PORTB = 0b11111111; или PORTB = 0xff; или PORTB = 255; это одно и тоже в разнвы системах счисления

Re: Програмирование pic на СИ.

Ср фев 02, 2011 01:11:24

vovik15 писал(а):потому что 1 это 00000001 одно и тоже
из этого следует ,что 1 прописываеться только в PORTB0 а на всех остальных линиях порта нолики :)
надо написать так PORTB = 0b11111111; или PORTB = 0xff; или PORTB = 255; это одно и тоже в разнвы системах счисления

УУУРРРАААА:) :)) Работает. Век живи, век учись. Терь переходим к более сложному:)

Re: Програмирование pic на СИ.

Ср фев 02, 2011 12:31:02

Проверил на железе. Всё чётко работает. И сразу вопрос. Как организовать "кнопка в режиме переключателя" как это в самоучителе асембрера на лабките? И в еепром можно заносить только 1 бит? или 0-255. Так как там указуется адрес, тоесть ячейка энергонезависимой памяти размером 1 байт или 8бит. А если мне нужно поместить число больше 255? к примеру 500. то кактут обстоят дела?

Re: Програмирование pic на СИ.

Ср фев 02, 2011 14:57:02

спросите в этой ветке ,вам обязательно ответят . :) (я просто там больше времени провожу)
http://labkit.ru/forum/index.php?s=d882 ... howforum=5

Re: Програмирование pic на СИ.

Ср фев 02, 2011 18:00:37

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 на СИ.

Ср фев 02, 2011 19:47:06

ну сам прочитай свою программу. Что там написано? если нажата кнопка в порт оправляем число
ИНАЧЕ (тоесть если она не нажата) смотрим нажата ли вторая? если да. то отправляем другое число. правильно?
в 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;
}

Re: Програмирование pic на СИ.

Ср фев 02, 2011 20:49:42

vovik15 писал(а):ну сам прочитай свою программу. Что там написано? если нажата кнопка в порт оправляем число
ИНАЧЕ (тоесть если она не нажата) смотрим нажата ли вторая? если да. то отправляем другое число. правильно?
в else за место вызова функции надо обнулить порт.

вот так надо


Внёс изменения. Не компилируется. выдаёт кучу ошибок. Ведь вроде всё правельно.

Re: Програмирование pic на СИ.

Ср фев 02, 2011 21:30:56

листинг давай

Re: Програмирование pic на СИ.

Ср фев 02, 2011 22:22:10

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

Re: Програмирование pic на СИ.

Ср фев 02, 2011 22:43:28

void main (void);
{
Нафига тут ; ?

Re: Програмирование pic на СИ.

Чт фев 03, 2011 00:06:56

А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 2011

Re: Програмирование pic на СИ.

Чт фев 03, 2011 00:49:59

так,я разобрался с этой программой ,все работает четко. пол часа угробил :))
найди в сети информацию о том,как использовать маски в СИ . с их помощью сможеш решить свою задачу

Re: Програмирование pic на СИ.

Чт фев 03, 2011 08:51:33

Код:
if (RA1 == 0);
А здесь зачем ; ?
PS: Буду мучить по одной строчке :)))

Re: Програмирование pic на СИ.

Чт фев 03, 2011 09:55:10

vovik15 писал(а):так,я разобрался с этой программой ,все работает четко. пол часа угробил :))
найди в сети информацию о том,как использовать маски в СИ . с их помощью сможеш решить свою задачу

Про маски не слова. Может про масивы?:)

Re: Програмирование pic на СИ.

Чт фев 03, 2011 10:58:16

в том самоучителе про маски не написано. я говорю в сети посмотри
я говорю про |= &= ^=

Re: Програмирование pic на СИ.

Чт фев 03, 2011 11:52:30

vovik15 писал(а):в том самоучителе про маски не написано. я говорю в сети посмотри
я говорю про |= &= ^=

Подобное нашол только тут http://www.labkit.ru/html/C_for_PIC?id=405 даже Булеваую алгебру просмотрел. Но не пойму почему прогграмма не компилируется. Принцип то элементарный. Если ноль то одно, если единица то другое. А он указует ошибку на последню закрывающую фигурную скобку и говорит что там чтото не написано. Или на "Else" ругается. Может какието правила есть которых я не знаю, может при такой логике действий тут не допустимы эти операторы (if)?

Re: Програмирование pic на СИ.

Чт фев 03, 2011 12:02:42

&=
при накладывании маски &= , в тех биах где в маске стоит 0 , биты исходного числа принамают значение 0, независимо от первоночального значения, в тех битах, где в маске стоит 1, исходное число не меняется

|=
при накладывании маски |=, в тех битах где в маске стоит 1, биты исходного числа принимают 1, независимо то первоначально значения. В тех битах, где в маске стоит 0, исходное значение не меняется

Re: Програмирование pic на СИ.

Чт фев 03, 2011 12:14:15

vovik15 писал(а):&=
при накладывании маски &= , в тех биах где в маске стоит 0 , биты исходного числа принамают значение 0, независимо от первоночального значения, в тех битах, где в маске стоит 1, исходное число не меняется

|=
при накладывании маски |=, в тех битах где в маске стоит 1, биты исходного числа принимают 1, независимо то первоначально значения. В тех битах, где в маске стоит 0, исходное значение не меняется

А можно элементарный пример?
Ответить