Часть кода для начала киньте, там посмотрим. Я на датчике холла делаю опрос пина в каждом цикле программы, и ничё, не ругается... Может в одном месте значение Х ошиблись, или саму команду описываете не правильно...fan2005 писал(а)::" SBIC instruction: bit in I/O=X (unknown)". Я так понимаю что жалуется на то что я в программе часто использую PIN_X.n....
CodeVision AVR в вопросах и ответах
- Сообщения: 2316
- Зарегистрирован: Вс июн 26, 2011 20:03:21
- Реклама
void auto_1 (void)Часть кода для начала киньте, там посмотрим
{
while (PIND.4==0&PINB.3==1)
{
PORTB.2=0;
PORTB.1=1;
delay_ms(150);
if (PIND.6==0) { //сработка датчика №1
PORTB.2=0; //Выкл всё
PORTB.1=0;
};
}
if (PIND.4==1&PINB.3==1) //Кнопки не нажаты, то стоим на месте
{
PORTB.2=0; //Выкл всё
PORTB.1=0;
}
if (PIND.4==1&PINB.3==0) //нажата кнопка вверх
{
zero_t();
}
if (PIND.1==1) //проверка галетника, выход
{
zero_t ();
return;
}
}
все мы учились - чему-нибудь и как-нибудь
В условиях if и while напишите вместо
while (PIND.4==0&PINB.3==1)
while (!PIND.4 & PINB.3)
while (PIND.4==0&PINB.3==1)
while (!PIND.4 & PINB.3)
Купи два беляша и собери из них кошку
Labor est etiam ipse voluptas Труд уже сам по себе есть наслаждение (*Формула любви)
Ave novie-nostra ales Если один человек построил - другой завсегда разобрать может....(*Формула Любви).
Labor est etiam ipse voluptas Труд уже сам по себе есть наслаждение (*Формула любви)
Ave novie-nostra ales Если один человек построил - другой завсегда разобрать может....(*Формула Любви).
Спасибо, Panda_Y2K!
Сделал все как ты написал, заработало! Попутно пробовал использование битовых масок, тоже помогает, но более тяжелее. Я так понял что не стоит использовать прямое сравнение (==) бита в КодеВизион, а лучше использовать конструкции проверки бита на 0 или 1!?
Сделал все как ты написал, заработало! Попутно пробовал использование битовых масок, тоже помогает, но более тяжелее. Я так понял что не стоит использовать прямое сравнение (==) бита в КодеВизион, а лучше использовать конструкции проверки бита на 0 или 1!?
все мы учились - чему-нибудь и как-нибудь
- Сообщения: 2316
- Зарегистрирован: Вс июн 26, 2011 20:03:21
А я всегда скобки ставлю, дабы уже ни раз возникали проблемы с приоритетом при использовании переменных (почему не знаю, но с числами багов не замечал). Скобки еока ни раз не подводилиPanda_Y2K писал(а): while (!PIND.4 & PINB.3)
- Реклама
Ребята, может кто поможет чем сможет?!
Уже месяца два борюсь с 74HC595. вот прихожу к выводу что нужно больше ног и достаю из пакетика эту микросхему.
к Q0-Q7 подключаю диоды(через резистор) к земле.
далее питалку(Vcc на +), землю на землю.
Ds вешаю на PB0 (в коде DataPin)
OE на землю
ST_CP на PB1 (в коде RunPin)
SH_CP на PB2 (в коде ClockPin)
MR на +
Q7' весит в воздухе.
Далее загоняю код в контроллер, и ничего не работает.
иногда загораются рандомные диоды, но чаще всего вообще ничего не происходит, а если дёрнуть проводки то загорятся все.
Пробовал вешать 0.1мкф на RunPin но ничего не дало.
До этого пытался делать на кнопках(вместо контролера) -ничего не вышло.
Требуется срочно увеличить число выводов на контроллере.
З.Ы. Облазил кучу форумов конечно. то ли я такой тупой то ли микросхемы палёные но не пашет.
Я так понял что когда состояние ноги часов меняется с 0 на 1 она считывает состояние даты, так делаешь 8 раз и потом переводишь RunPin в 1?
Уже месяца два борюсь с 74HC595. вот прихожу к выводу что нужно больше ног и достаю из пакетика эту микросхему.
к Q0-Q7 подключаю диоды(через резистор) к земле.
далее питалку(Vcc на +), землю на землю.
Ds вешаю на PB0 (в коде DataPin)
OE на землю
ST_CP на PB1 (в коде RunPin)
SH_CP на PB2 (в коде ClockPin)
MR на +
Q7' весит в воздухе.
Код: Выделить всё
#include <tiny2313.h>
#include <delay.h>
#define DataPin PORTB.0
#define ClockPin PORTB.2
#define RunPin PORTB.1
#define wait delay_ms(1)
void main(void) {
PORTB=0x00;
DDRB=0x00;
while (1) {
wait; RunPin = 1; wait; RunPin = 0; wait;
delay_ms(300);
DataPin = 0;
wait; ClockPin = 1; wait; ClockPin = 0; wait;
DataPin = 1;
wait; ClockPin = 1; wait; ClockPin = 0; wait;
DataPin = 0;
wait; ClockPin = 1; wait; ClockPin = 0; wait;
DataPin = 1;
wait; ClockPin = 1; wait; ClockPin = 0; wait;
DataPin = 0;
wait; ClockPin = 1; wait; ClockPin = 0; wait;
DataPin = 1;
wait; ClockPin = 1; wait; ClockPin = 0; wait;
DataPin = 0;
wait; ClockPin = 1; wait; ClockPin = 0; wait;
DataPin = 1;
wait; ClockPin = 1; wait; ClockPin = 0; wait;
wait; RunPin = 1; wait; RunPin = 0; wait;
}
}иногда загораются рандомные диоды, но чаще всего вообще ничего не происходит, а если дёрнуть проводки то загорятся все.
Пробовал вешать 0.1мкф на RunPin но ничего не дало.
До этого пытался делать на кнопках(вместо контролера) -ничего не вышло.
Требуется срочно увеличить число выводов на контроллере.
З.Ы. Облазил кучу форумов конечно. то ли я такой тупой то ли микросхемы палёные но не пашет.
Я так понял что когда состояние ноги часов меняется с 0 на 1 она считывает состояние даты, так делаешь 8 раз и потом переводишь RunPin в 1?
Если возникнут вопросы - посмотрите на мой аватар.
Лол. Это вся программа?
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Ну да...
Я думал больше и не надо чтоб "шашечки" вывести.
Я думал больше и не надо чтоб "шашечки" вывести.
Если возникнут вопросы - посмотрите на мой аватар.
Во-первых, RunPin, DataPin и ClockPin хорошо бы настроить на вывод. А это совсем не
Во-вторых, что такое wait?
Код: Выделить всё
DDRB=0x00;[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Вот это фейл так фейл:) а wait это delay_ms(1)(cм #define wait delay_ms(1))
Если возникнут вопросы - посмотрите на мой аватар.
0867532, ноги надо настроить на выход. а у вас все ноги работают в режиме входа ( DDRB = 0x00 )
Ставим плюсы: )
да, я ж вроде ставил 0xFF
ну хз, почему стояло 0x00 Но теперь всё работает!!!
Доволен как слон:)
ну хз, почему стояло 0x00 Но теперь всё работает!!!
Доволен как слон:)
Если возникнут вопросы - посмотрите на мой аватар.
Ну с контроллером только сегодня попробовал.
А когда кнопки ставил не вешал MR на +(не знал.)
И пытался раз в 2 недели.
А когда кнопки ставил не вешал MR на +(не знал.)
И пытался раз в 2 недели.
Если возникнут вопросы - посмотрите на мой аватар.
Во первых это не пограмма ,а кусок кода)черновик(...0867532 писал(а):а что ты хотел? ты на кнопки ничего не повесил.
и.т.д.
Спойлер
#include <tiny2313.h>#include <delay.h>
unsigned char flag = 0;void main(void)
void main(void)
{
PORTA=0x07;
DDRA=0x00;
PORTB=0x00;
DDRB=0xFF;
PORTD=0x3F;
DDRD=0x40;
Как посоветовал
urry
Спойлер
Очень легко считать требуемое значение таймераНапример, на вход 1 таймера поступает 8 мег, нужно снять с него 1 килогерц (1 мс период)
Код:
#define F_IN 8000000
#define F_OUT 1000
#define TM1_C 65536 - (F_IN/F_OUT)
interrupt [TIM1_OVF] void timer1_ovf_isr(void)
{
TCNT1+=TM1_C;
// выставляем флаг, что прошла миллисекунда
unalex писал(а): эта программа некритична
И поэтому завёл таймер TIM0
Полностью согласен!urry писал(а): Тема - многозадачные процессы - ему еще понадобится.
Здраствуйте, подскажите пожалуйста как правильно записать условие:
Если PORTB.O=1 (кнопка нажата), то PORTC.0=1
если кнопка выкл, то PORTC.0=0
Если PORTB.O=1 в течение 0,3 сек(кнопку нажали и отпустили), то PORTС.O=1 в течение 5 сек
Если на PORTD.O=1, то PORTC.0=0
Спасибо.
Если PORTB.O=1 (кнопка нажата), то PORTC.0=1
если кнопка выкл, то PORTC.0=0
Если PORTB.O=1 в течение 0,3 сек(кнопку нажали и отпустили), то PORTС.O=1 в течение 5 сек
Если на PORTD.O=1, то PORTC.0=0
Спасибо.
как правильно записать условие
Код: Выделить всё
if(...){
....
}vadd писал(а):PORTB.O=1 (кнопка нажата), то PORTC.0=1
если кнопка выкл, то PORTC.0=0
Код: Выделить всё
PORTC.0= PINB.0;Использовать отслеживание по времени.vadd писал(а):Если PORTB.O=1 в течение 0,3 сек(кнопку нажали и отпустили), то PORTС.O=1 в течение 5 сек
А как это согласуется с первым условием?vadd писал(а):Если на PORTD.O=1, то PORTC.0=0
Docendo discimus
Я хотел сделать так, чтобы при появлении 1 на портуD.0 - порт С.0 оключался , в каком бы состоянии не была кнопка вкл или выкл.
А можно ссылку на раздел "Периферия"
А можно ссылку на раздел "Периферия"


