Портал для радиолюбителей и разработчиков электроники · с 2003 годаРеклама на сайте
Найти компонент, схему или даташит

Даташиты, справочник отечественных приборов, схемы с разбором и живой форум


 
Опции темы

PIC 16F877/Лампочка с ключом

Непрочитано 15.03.2010, 06:06  
vip7070
Прохожий
 
Регистрация: 02.03.2010
Сообщений: 8
Сказал спасибо: 9
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
vip7070 на пути к лучшему
Радость Re: PIC 16F877/Лампочка с ключом

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

Выложу на Ваш суд схему, с подведенным резистором к входу и земле. Прошу прокомментировать если есть какие-то неточности.

Также, может есть сайт где самые простейшие схемы (ну как эта, с лампочкой), даны, если с объяснениями, еще лучше! Чтобы я вас сильно не мучал
Миниатюры:
Нажмите на изображение для увеличения
Название: el.jpg
Просмотров: 407
Размер:	406.4 Кб
ID:	5715  
Реклама:
vip7070 вне форума  
Непрочитано 15.03.2010, 18:28  
CERGEI1982
Почётный гражданин KAZUS.RUN
 
Аватар для CERGEI1982
 
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,578
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
CERGEI1982 на пути к лучшему
По умолчанию Re: PIC 16F877/Лампочка с ключом

Лучше начни себе автоматику делать на контроллерах,тогда еще интересней будет все это.
__________________
Глаза боятся,а руки делают.
CERGEI1982 вне форума  
Непрочитано 16.03.2010, 01:49  
tsb
Прописка
 
Аватар для tsb
 
Регистрация: 25.11.2006
Адрес: Харьков
Сообщений: 295
Сказал спасибо: 25
Сказали Спасибо 71 раз(а) в 60 сообщении(ях)
tsb на пути к лучшему
По умолчанию Re: PIC 16F877/Лампочка с ключом

Сообщение от vip7070 Посмотреть сообщение
до поздней ночи сидел и моделировал ситуации
О.К. Вы, я вижу, человек увлекающийся. Тогда попробуйте в протеусе "измерить" ток, текущий через R1 при замкнутом выключателе.
tsb вне форума  
Сказали "Спасибо" tsb
vip7070 (16.03.2010)
Непрочитано 16.03.2010, 18:02  
miron63
Прохожий
 
Регистрация: 24.01.2008
Сообщений: 5
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
miron63 на пути к лучшему
По умолчанию Re: PIC 16F877/Лампочка с ключом

Вот ещё:на каждое нажатие кнопки зжигается следующий светодиод.


list P=16F877
include "P16F877.INC"

declare:
BSF STATUS, RP0;1 bank-TRIS
MOVLW 0x06 ; Configure all pins
MOVWF ADCON1 ; as digital inputs
BSF TRISA, 0;input
BCF TRISB, 0;output
BCF TRISB, 1
BCF TRISB, 2
BCF TRISB, 3
BCF TRISB, 4
BCF TRISB, 5
BCF TRISB, 6
BCF TRISB, 7
BCF STATUS, RP0;0 bank-PORT

CLRF PORTB
BSF PORTB,0
check:
BTFSS PORTA,0
goto $-1
BTFSC PORTA,0
goto $-1
RLF PORTB,1

goto check

end
miron63 вне форума  
Сказали "Спасибо" miron63
vip7070 (18.03.2010)
Непрочитано 18.03.2010, 18:15  
miron63
Прохожий
 
Регистрация: 24.01.2008
Сообщений: 5
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
miron63 на пути к лучшему
По умолчанию Re: PIC 16F877/Лампочка с ключом

Если есть интерес могу подкидывать простенькие исходники каждый раз
с новой командой.Всё это есть в интернете,но знаю ,что начинающему
трудно выбрать то что нужно.
Здесь бегущие огни, кнопкой меняется направление.

list P=16F877
include "P16F877.INC"

;Блоки данных
CBLOCK 0x20
Reg_1
Reg_2

ENDC

declare:
BSF STATUS, RP0;1 bank-TRIS
MOVLW 0x06 ; Configure all pins
MOVWF ADCON1 ; as digital inputs
BSF TRISA, 0;input
BCF TRISB, 0;output
BCF TRISB, 1
BCF TRISB, 2
BCF TRISB, 3
BCF TRISB, 4
BCF TRISB, 5
BCF TRISB, 6
BCF TRISB, 7
BCF STATUS, RP0;0 bank-PORT

CLRF PORTB
BSF PORTB,0
check:
call Pause ;Вызов подпрограммы задержки
RLF PORTB,1

BTFSS PORTA,0
goto check
BTFSC PORTA,0
goto $-1
check1
call Pause ;Вызов подпрограммы задержки
RRF PORTB,1

BTFSS PORTA,0
goto check1
BTFSC PORTA,0
goto $-1
goto check

;******Подпрограмма задержки
;delay = 100'000 machine cycles
Pause movlw .221
movwf Reg_1
movlw .130
movwf Reg_2
wr decfsz Reg_1, F
goto wr
decfsz Reg_2, F
goto wr
nop
nop
return
end
miron63 вне форума  
Сказали "Спасибо" miron63
vip7070 (24.03.2010)
Непрочитано 19.03.2010, 12:24  
miron63
Прохожий
 
Регистрация: 24.01.2008
Сообщений: 5
Сказал спасибо: 0
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
miron63 на пути к лучшему
По умолчанию Re: PIC 16F877/Лампочка с ключом

Инициализацию портов можно представить по другому.Это то же самое.
В регистр данные можно загружать одной командой,а в двоичном виде-так
визуально видно на каком пине что имеем.Но это на любителя, у каждого
на этот счёт своё мнение.

declare:
BSF STATUS, RP0;1 bank-TRIS
movlw B'00000110' ; Configure all pins
MOVWF ADCON1 ; as digital inputs
movlw B'00000001' ;бит 0 вход, остальные выход
movwf TRISA
movlw B'00000000' ; все выход
movwf TRISB
BCF STATUS, RP0;0 bank-PORT
miron63 вне форума  
Сказали "Спасибо" miron63
vip7070 (24.03.2010)
Непрочитано 24.03.2010, 08:08  
vip7070
Прохожий
 
Регистрация: 02.03.2010
Сообщений: 8
Сказал спасибо: 9
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
vip7070 на пути к лучшему
По умолчанию Re: PIC 16F877/Лампочка с ключом

Доброе утро, уважаемые! Попробовал сделать еще одну тестовую схемку, в принципе работает, но иной раз перескакивает диоды Вот уж не знаю, в чем тут дело

Код:
list P=16F877
include "P16F877.INC"

count	equ	h'22'
	BSF STATUS, RP0
	;MOVLW 0x06 ; Configure all pins
        ;MOVWF ADCON1 ; as digital inputs
	CLRF TRISB
	BSF TRISD,0
	BCF STATUS, RP0

check   BTFSC PORTD, 0
	call left
	BTFSS PORTD, 0
	call right
	goto check

right   movlw b'10000000'
	movwf PORTB
	call delay

loop    RRF PORTB, f
	call delay
	BTFSS PORTD, 0
	goto loop
	return

left    movlw b'00000001'
	movwf PORTB
	call delay

loop1:
	RLF PORTB, f
	call delay
	BTFSC PORTD, 0
	goto loop1
	return

delay   movlw h'FF'
	movwf count

loop2   decfsz count,f
	goto loop2
	return
end
Также, хотелось бы выразить огромное признание за Вашу помощь и советы! Очень помогают. Насколько я понял, эту программу еще можно сделать с использование таймера, не так ли?
vip7070 вне форума  
Непрочитано 24.03.2010, 08:27  
vip7070
Прохожий
 
Регистрация: 02.03.2010
Сообщений: 8
Сказал спасибо: 9
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
vip7070 на пути к лучшему
Счастье Re: PIC 16F877/Лампочка с ключом

Прилагаю, пошаговую отладку программки.

Т.е. на 0 шаге, начальное состояние - система не запущена, с 1 уже идет непосредственное выполнение. Также стоит заметить, что, при "простом |›" запуске, видно что все работает, как и надо, все диоды задействованы, а когда начинаю смотреть шаг за шагом вот как то так..

С уважением, vip7070
Миниатюры:
Нажмите на изображение для увеличения
Название: micro.jpg
Просмотров: 63
Размер:	317.6 Кб
ID:	6102  
vip7070 вне форума  
Непрочитано 24.03.2010, 17:42  
Shurik_kor
Частый гость
 
Регистрация: 16.11.2007
Адрес: Гомель (Беларусь)
Сообщений: 37
Сказал спасибо: 348
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
Shurik_kor на пути к лучшему
По умолчанию Re: PIC 16F877/Лампочка с ключом

Доброго времени суток! Проблема с "перескакиванием" светодиодов скорее всего связана с протеусом. У меня она появляется при большой скорости переключения светодиодов. Поэтому попробуйте уменьшить скорость переключения, например введением вложенниго цикла в подпрограмму задержки и (или) снижением тактовой частоты контроллера:

list P=16F877
include "P16F877.INC"

COUNT1 equ h'22'
COUNT2 equ h'23'

BSF STATUS, RP0
MOVLW 0x06 ; Configure all pins
MOVWF ADCON1 ; as digital inputs
CLRF TRISB
BSF TRISD,0
BCF STATUS, RP0

check
BTFSC PORTD, 0
call left
BTFSS PORTD, 0
call right
goto check

right
movlw b'10000000'
movwf PORTB
BCF STATUS,C ;СБРАСЫВАЕМ ФЛАГ ПЕРЕНОСА
call delay

loop
RRF PORTB, f
call delay
BTFSS PORTD, 0
goto loop
return

left
movlw b'00000001'
movwf PORTB
BCF STATUS,C ;СБРАСЫВАЕМ ФЛАГ ПЕРЕНОСА
call delay

loop1
RLF PORTB, f
call delay
BTFSC PORTD, 0
goto loop1
return

;---------------------------
delay
;ЗДЕСЬ ЦИКЛ "LOOP3" ВЛОЖЕН В ЦИКЛ "LOOP2"
;ДЛЯ РЕАЛИЗАЦИИ БОЛЬШИХ ЗАДЕРЖЕК
movlw h'FF'
movwf COUNT1
LOOP2
MOVLW 0x80
MOVWF COUNT2

LOOP3
decfsz COUNT2,f
goto LOOP3
decfsz COUNT1,f
goto LOOP2

return
;---------------------------

end

И еще обратите внимание на команды сброса флага переноса после загрузки начальных значений в порт. Они необходимы, так как команды RRF и RLF сдвигают регистр через этот флаг. А если у вас после переключения направления в CY останется единица, произойдет вот такая ситуация:
Нажмите на изображение для увеличения
Название: 1.jpg
Просмотров: 44
Размер:	70.6 Кб
ID:	6124
Shurik_kor вне форума  
Непрочитано 24.03.2010, 18:22  
Shurik_kor
Частый гость
 
Регистрация: 16.11.2007
Адрес: Гомель (Беларусь)
Сообщений: 37
Сказал спасибо: 348
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
Shurik_kor на пути к лучшему
По умолчанию Re: PIC 16F877/Лампочка с ключом

Вот вам пример использования таймера для реализации задержки:

Код:
.
.
.
;ИНИЦИАЛИЗИРУЕМ ТАЙМЕР TMR0
	MOVLW	B'10000111'	;бит5="0" - внутренний тактовый сигнал для таймера
				;бит4="0" - выбор фронта приращения при внешнем 
				;тактовом сигнале (не имеет значения, если бит5="0")
				;бит3="0" - предделитель включен перед TMR0
				;биты 2-0 - коэффициент деления предделителя ("111" - 256)
	BSF	STATUS, RP0
	MOVWF	OPTION_REG
	BCF	STATUS, RP0
;---------------------------
.
.
.
.
.
;---------------------------
delay
;ЗДЕСЬ ДЛЯ РЕАЛИЗАЦИИ ЗАДЕРЖКИ ИСПОЛЬЗУЕТСЯ TMR0
	movlw	0x0A	;ЗАГРУЖАЕМ В ТАЙМЕР НАЧАЛЬНОЕ ЗНАЧЕНИЕ
	movwf	TMR0
	BCF	INTCON,T0IF	;СБРАСЫВАЕМ ФЛАГ ПРЕРЫВАНИЯ ОТ TMR0
	BTFSS	INTCON,T0IF	;ОЖИДАЕМ УСТАНОВКУ ФЛАГА ПРЕРЫВАНИЯ
	GOTO	$-1
	return
;---------------------------
end
Shurik_kor вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Flowcode for PIC v4 sa502 Proteus, KiCAD и другие ECAD 867 12.02.2019 19:38
Одновременный вывод сигнала на PIC Huuligan Микроконтроллеры, АЦП, память и т.д 11 03.02.2010 04:20
Размещение констант в памяти программ в PIC ST_Senya Микроконтроллеры, АЦП, память и т.д 10 15.10.2009 20:12


Часовой пояс GMT +4, время: 11:03.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.