Свежие обсуждения
Микроконтроллеры

Рабта с портом RB0 на Pic,неполучается установить 0.

1 2

да при чём тут одновременно, в смысле параллельно,можно и последовательно!

 

То есть если мы загоняем в TRIS - x 0 то порт выход 1 вход?

 

то есть получается чтобы записать в порт значение нужно
RP0 в 1 а для считыания в 0?
Как же тогда считывать из порта RB1 а записывать в RB2
одновременно?

Для управления направлением передачи данных предназначены регистры TRIS.
При записи 1 в какой либо разряд регистра соответствующий вывод будет работать как вход . При записи 0 , соответствующий вывод порта будет работать как выход.

Для обеспечения доступа к регистрам TRIS необходимо выбрать первый банк памяти данных, а для обеспечения доступа к регистрам порта выбрать нулевой банк.

;****************************************************
; Инициализация PORTB может выглядеть так
;****************************************************

CLRF PORTB ; Установка выходных регистров
BSF STATUS, RP0 ; Выбор банка 1.
MOVLW B’00000010’ ; Значение для задания направления
MOVWF TRISB ; Вывод порта RB1 вход , остальные выход
BСF STATUS, RP0 ; Выбор банка 0.
;**************************************************************

В этом примере для указания направления я использовал бинарный формат данных, по моему так наглядней, но можно написать так:
MOVLW 2 ; Значение для задания направления (десятичный формат)
Или так
MOVLW 0х02 ; Значение для задания направления (шестнадцатиричный)

У меня на выходе на RB2 посажен одновибратор на К561ЛА7,
и по 0 на RB1 в RB2 посылается импульс который должен
запустить одновибратор который сгенерирует импульс заданной длительности.

Зачем использовать дополнительный одновибратор если Вы применили контроллер?

Напишите так

;***Импульс заданной длительности __|**|___

BSF PORTB,2 ; Высокий уровень
CALL delay ; Необходимая задержка
BСF PORTB,2 ; Низкий уровень
.
.
.
.
;********************************************************
; Подпрограмма задержки. Задержка 255*3+2 t
delay
MOVLW D'255'
MOVWF cnt
del1 decfsz cnt,f
goto del1
return
;*********************************************************

 

Зачем использовать дополнительный одновибратор если Вы применили контроллер?
легче послать импульс в порт и забыть.
а как же быть с временем,у меня на контроллере лежит функция подсчета времени!а ведь пока я буду посылать в порт импульс длительность 0,5 секунды часы отстанут на такое же время!
Как можно высчитать длительность паузы?

 

Чему равна длительность одного цикла у PIC при кварце 4мгц

 

а как же быть с временем,у меня на контроллере лежит функция подсчета времени!а ведь пока я буду посылать в порт импульс длительность 0,5 секунды часы отстанут на такое же время!
Для решения этих проблем используют встроеные таймеры и прерывания.

Чему равна длительность одного цикла у PIC при кварце 4мгц
1/CLK/4 1 мкс.

Артём Сергеевич, ИМХО, самое правильное почитать документацию на используемый контроллер.
Если это 16 серия то http://www.microchip.ru:80/files/d-sheets-rus/PIC16_Manual.pdf
http://www.microchip.ru/lit/?mid=1x0

 

13мб ... 2 часа качать буду...
ну да ладно,разобрался наконец с переключением,
для тех кто будет читать дело оказалось в том что я бытался записать в порт который был для чтения...

И ещё у меня попутно возникла проблема,когда я нажимаю на кнопочку стобы сгенерировался импульс,импульс генерируется и затем во время отпускания тоже генерируется импульс!

Это что дребезг контактов?

 

13мб ... 2 часа качать буду...
Раньше на сайте компании можно было заказать CD с документацией и средой разработки MPLAB.
Это что дребезг контактов?
Возможно.
Можно опрашивать кнопку в цикле счетчика. Или сделать задержку повторно считать состояния порта и сравнить результаты если совпали значит кнопка нажата. Почитайте форум на "телесистемах" там это вопрос периодически обсуждают или здесь> http://www.microchip.ru/phorum/read.php?f=2&i=71050&t=71013

 
1 2