Перейти к содержанию
    

Микроконтроллеры для начинающих

А зачем нужен предварительный делитель?

Вам надо почитать какую-нибудь литературу на русском.

Суда по вашим вопросам, читать даташиты на английском пока рано.

Посмотрите, например, вот это.

PIC_________________.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А если мы,к примеру, запрограммировали порт B на вход,там получается в битах стоят единицы, а когда мы нажимаем кнопку, подключенную к этому входу, что изменяется?в этот бит записывается 0?просто непонятно как проверить состояние входов при нажатой кнопке :05:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

просто непонятно как проверить состояние входов при нажатой кнопке

Прочитать порт.

Можно читать периодически, по прерыванию от таймера, например. Сравнивать с прошлым, запомненным. Находить изменение, и так определять кнопку.

Можно настроить прерывание по изменению состояния порта, и по этому прерыванию прочитать новое состояние.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А какой командой можно проверить весь байт на наличие к примеру 1?что-то наподобие команды BTFSS f,b?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

XOR - исключающее ИЛИ

При совпадении разряда переменной и маски в этом разряде результата будет 0, а при несовпадении - 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

можно сделать так, чтобы команда btfss f,b(проверяет бит b в регистре f и пропускает следующиую команду, если результат 1) пропускала при выполнении условия не одну команду, а несколько,заданное количество?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

можно сделать так, чтобы команда btfss f,b(проверяет бит b в регистре f и пропускает следующиую команду, если результат 1) пропускала при выполнении условия не одну команду, а несколько,заданное количество?
Нет, нельзя. Но можно использовать команду btfsc f,b которая будет пропускать следующую команду goto, которая, в свою очередь, "пропускает не одну команду, а несколько,заданное количество".

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

MOVLW B'11111111'

MOVWF TRISC;

....

....

....

 

MOVLW B'11111111'

XORWF PORTC,0

BTFSC STATUS,Z

NOP

BSF PORTB,0

 

 

Последний кусочек кода делает:

1.пересылает константу в аккумулятор

2.сравнивает константу с состоянием битов в порте С,сохраняет результат в аккумуляторе и меняет(не меняет) состояние флага Z

3.если значение флага Z=0(нашлось различие в битах между сравниваемыми регистрами),то устанавливаем нулевой бит в порте B и далее по кругу,если нет,то задержка

Я правильно понимаю?Просто программа у меня по "моей логике" не работает,значит я понимаю может быть не совсем правильно или совсем неправильно...помогите :blush:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3.если значение флага Z=0(нашлось различие в битах между сравниваемыми регистрами),то устанавливаем нулевой бит в порте B
... а если Z=1, то ничего не делаем, а потом точно так же устанавливаем нулевой бит в порте B. Просто задержка, да.

Очень маленькая такая задержечка... чем наблюдается она, как выяснено "не работает?"

и далее по кругу
прописать "по кругу" * надо в программе, а не на форуме.

 

* любая программа должна так или иначе бесконечно зацикливаться в любом случае.

(не спящий) процессор всегда выполняет какую-то инструкцию; "всё сделать и остановиться" нельзя.

это мало ли вдруг.

Изменено пользователем нечитатель

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а как реализуется задержка с помощью tmr0?может есть какие-нибудь примеры на асме?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

MCC18 бесплатная версия. Начинаю изучать Си под пики. Не понимаю как пользоваться строковыми функциями и ф-ями вида memst().

 

include "p18f14k50.h"

#include "string.h"

unsigned char RS232_Out_Data[15]="45a0";

void main(void)

{

memset(RS232_Out_Data, '\0', 15);

strcpy(RS232_Out_Data,"543");

RS232_Out_Data[0]='4';

RS232_Out_Data[1]='5';

RS232_Out_Data[0]='\0';

}

 

- почему memset вначале забивает все нулями, а потом снова возвращает все как было? Почему strcpy ничего не копирует в RS232_Out_Data ? Посимвольное копирование (4,5,\0) - работает нормально.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хочу начать знакомится с контролерами, уже есть ATmega8A, всвязи с чем возникли вопросы:

1) Можно ли ипользовать программатор Громова для прошивки?

2) Где найти уроки со схемами и написанием кода для мигания светодиодами и более сложными задачами?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хочу начать знакомится с контролерами, уже есть ATmega8A, всвязи с чем возникли вопросы:

1) Можно ли ипользовать программатор Громова для прошивки?

2) Где найти уроки со схемами и написанием кода для мигания светодиодами и более сложными задачами?

В книгах например:

 

Вольфганг Трамперт "AVR-RISC микроконтроллеры"

Джон Мортан " Микроконтроллеры AVR"

 

Наберите в инете Самоучитель по AVR

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1) Можно ли ипользовать программатор Громова для прошивки?

Есть знакомые, которые использовали программатор Громова для LPT и пожгли порт этим программатором. Соединять напрямую пины LPT и целевое устройство это слишком рискованно. Надо чтоб хоть буфер был как у байтбластера. Для нормальной работы можно пользоваться байтбластер + софт AVREAL.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хочу начать знакомится с контролерами, уже есть ATmega8A, всвязи с чем возникли вопросы:

1) Можно ли ипользовать программатор Громова для прошивки?

2) Где найти уроки со схемами и написанием кода для мигания светодиодами и более сложными задачами?

 

1. Можно, но имхо лучше попробуйте через COM порт. http://easyelectronics.ru/avr-shag-pervyj-programmator.html Вот к примеру - элементарное решение через COM.

2. Для ассамблера есть внятные уроки здесь - http://radiokot.ru/start/mcu_fpga/avr/. Там уроки не для atmega8a, но суть это не меняет, проблем не должно возникнуть.

Изменено пользователем mig-11101

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...