Пт янв 28, 2011 00:50:49
misterkuk писал(а): Компиляция прошла успешно:) Завтра проверю на железе.
Пт янв 28, 2011 10:02:07
dosikus писал(а):misterkuk писал(а): Компиляция прошла успешно:) Завтра проверю на железе.
Можешь и не проверять , работать не будет ...
Пт янв 28, 2011 10:31:49
misterkuk писал(а):Вот моя первая програма под схему http://www.labkit.ru/html/Assembler_for_PIC?id=356 Компиляция прошла успешно:) Завтра проверю на железе.
- Код:
#include <pic.h>
__CONFIG (INTIO & UNPROTECT & LVPDIS & BOREN & MCLRDIS & PWRTEN & WDTDIS);
#define knopka RB2 // кнопка
void podgot (void); // подготовка МК
void main (void)
{
podgot();
if (knopka = 0)
PORTB = 0b01111111;
}
// === подготовка МК
void podgot (void)
{
TRISA = 0b00000000; // направление работы ножек порта А
TRISB = 0b11111111; // направление работы ножек порта В
CMCON = 0x07; // отключение компараторов
PORTA = 0; // очищаем порт А
PORTB = 0; // очищаем порт Б
RBPU = 1; // подтягивающие R (0-вкл, 1-выкл)
}
void main (void)
{
podgot();
for(;;)
{
if (knopka == 0)
PORTB |= 0b0000001;
else
PORTB &= 0b1111110;
}
}
Пт янв 28, 2011 11:08:29
ut1wpr писал(а):Дефайны лучше для удобства чтения подтягивать к инклюдам, сразу после них.
Условие проверяется на равенство оператором ==, а не = (оператор присвоения)
Приучайся при модификации порта не трогать те выводы, которые заняты. В твоем случае это вход кнопки.
В твоем случае, судя по программе, ты не успеешь нажать кнопку после включения. Придется держать ее нажатой при подаче питания.
И отслеживать состояние RB0 в зависимости от состояния кнопки.
Пт янв 28, 2011 11:51:24
misterkuk писал(а):Вот моя первая програма под схему http://www.labkit.ru/html/Assembler_for_PIC?id=356 Компиляция прошла успешно:) Завтра проверю на железе.
- Код:
#include <pic.h>
__CONFIG (INTIO & UNPROTECT & LVPDIS & BOREN & MCLRDIS & PWRTEN & WDTDIS);
#define knopka RB7 // кнопка
void podgot (void); // подготовка МК
void main (void)
{
podgot();
while(1) начало бесконечного цикла (внимательно читай самоучитель)
{
if (knopka == 0) PORTB0 = 1;
else PORTB0 = 0;
} //конец бесконечного цикла
} //конец функции
// === подготовка МК
void podgot (void)
{
TRISA = 0b00000000; // направление работы ножек порта А
TRISB = 0b10000000; // направление работы ножек порта В
CMCON = 0x07; // отключение компараторов
PORTA = 0; // очищаем порт А
PORTB = 0; // очищаем порт Б
RBPU = 1; // подтягивающие R (0-вкл, 1-выкл)
}
Пт янв 28, 2011 11:54:19
Пт янв 28, 2011 12:04:15
vovik15 писал(а):скажите ,а зачем накладывать маски |= и &= на порт,чтобы вывести в него данные?
в авр я встречал подобные присваивания, хотя просто пишу через =
PORTB = 0b10100100; и все прекрастно работает
Пт янв 28, 2011 13:21:47
vovik15 писал(а):скажите ,а зачем накладывать маски |= и &= на порт,чтобы вывести в него данные?
в авр я встречал подобные присваивания, хотя просто пишу через =
PORTB = 0b10100100; и все прекрастно работает
char temp;
temp = PORTB & 0xFE;
PORTB = temp;
Пт янв 28, 2011 17:38:32
Вс янв 30, 2011 19:23:29
Пн янв 31, 2011 10:03:59
Пн янв 31, 2011 13:36:04
Пн янв 31, 2011 19:45:55
Пн янв 31, 2011 22:56:17
Пн янв 31, 2011 23:38:43
Вт фев 01, 2011 00:30:55
Вт фев 01, 2011 01:24:43
Вт фев 01, 2011 22:10:09
Вт фев 01, 2011 23:55:13
#include <pic.h>
__CONFIG (LP & UNPROTECT & LVPDIS & BOREN & MCLRDIS & PWRTEN & WDTDIS);
void podgot (void); // подготовка МК
void main (void)
{
podgot();
while (1)
{
if (RA2 == 0) PORTB = 1;
}
} //конец функции
// === подготовка МК
void podgot (void)
{
TRISA = 0b11111111; // направление работы ножек порта А
TRISB = 0b00000000; // направление работы ножек порта В
CMCON = 0x07; // отключение компараторов
PORTA = 0; // очищаем порт А
PORTB = 0; // очищаем порт Б
RBPU = 1; // подтягивающие R (0-вкл, 1-выкл)
}
Ср фев 02, 2011 00:31:51
vovik15 писал(а):бесконечный цикл забыл