Отредактировано pasha_zv (Апрель 26, 2013 20:56:00)
Офлайн
Отредактировано Vikto50 (Апрель 26, 2013 23:12:16)
Офлайн
; by Pasha_zv
list p=12f629
include "p12f629.inc"
__config _MCLRE_OFF & _CP_OFF & _WDT_OFF & _FOSC_INTRCIO
;--------------------------------------------------------------------------------------------
; БЛОК ПЕРЕМЕННЫЕ
;--------------------------------------------------------------------------------------------
schetchik equ 0x20; память в этих пределах
sc1 equ 0x21;память цикла.
; порты
#define chanel1 GPIO,GP0; три выхода
#define chanel2 GPIO,GP1
#define chanel3 GPIO,GP2
#define in_chanel GPIO,GP3; вход импульсов
;--------------------------------------------------------------------------------------------
; НАСТРОЙКА МИКРОКОНТРОЛЛЕРА
;--------------------------------------------------------------------------------------------
org 0x00
goto Start
org 0x08
Start
CLRF STATUS
CLRF INTCON
clrf GPIO
bsf STATUS, RP0
CALL 0x3ff
MOVWF OSCCAL
MOVLW 0x80 ; подтягивающие сопроты выключить
movwf OPTION_REG
bcf STATUS,RP0
movlw 0x7
movwf CMCON ;отключить компаратор
bsf STATUS,RP0
movlw 8 ; ГП3 вход, остальные выходы.
movwf TRISIO
bcf STATUS,RP0
;--------------------------------------------------------------------------------------------
; ГЛАВНАЯ ПРОГРАММА
;--------------------------------------------------------------------------------------------
; ждем нуля на входе
pusk btfsc in_chanel
goto pusk
; ждем единичку на входе
pusk1 btfss in_chanel
goto pusk1
;подсчет длительности импульса
clrf schetchik
dlit btfss in_chanel ;если нолик - выйти из цикла.
goto dlit_off
call delay_100mkS
incfsz schetchik,f
goto dlit
dlit_off
do_3_ms movlw .22; счетчик длинее 2.2мС - все сбросить
subwf schetchik,w
btfss STATUS,C
goto do_1.7ms
bcf chanel1
bcf chanel2
bcf chanel2
goto pusk1
do_1.7ms movlw .17; счетчик длинее 1.7мС
subwf schetchik,w
btfss STATUS,C
goto do_1.2ms
bsf chanel1; включает первый канал
bcf chanel2
bcf chanel3
goto pusk1
do_1.2ms movlw .13; счетчик длинее 1.3мС
subwf schetchik,w
btfss STATUS,C
goto do_0.9ms
bcf chanel1
bsf chanel2; второй канал
bcf chanel3
goto pusk1
do_0.9ms movlw .9; счетчик длинее 0.9мС
subwf schetchik,w
btfss STATUS,C
goto do_0ms
bcf chanel1
bcf chanel2
bsf chanel3;третий канал
goto pusk1
do_0ms bcf chanel1; слишком короткий (помеха) выключим все от греха
bcf chanel2
bcf chanel3
goto pusk1
delay_100mkS
nop
nop
movlw .31
movwf sc1
del_1 decfsz sc1,f
goto del_1
return
END
Отредактировано pasha_zv (Апрель 28, 2013 18:53:33)
Офлайн
Отредактировано Vikto50 (Апрель 28, 2013 20:13:25)
Офлайн
Офлайн
Офлайн
Отредактировано Vikto50 (Апрель 28, 2013 22:19:26)
Офлайн
pasha_zvЕсть тут все, выбрать файл, под редактором сообщением кнопка, все загружается в лучшем виде.
ну вот парсинг и есть. могу еще ХЕКС туда-же докинуть.
ЗЫ. еще две ноги свободны, не придумаю - под что их пустить.
может сделать стробирование? чтобы модель не светила а мигала?
или ввести защиту, как на серве, типа конечной точки?
ЗЫ. опс - а тут не видать как файл пихать. на файлопомойку кидать не хочется,
народ насчет них часто плюется.
Офлайн
Офлайн
pasha_zvПросто при переключении тумблера плавно гаснет один цвет и в то же время плавно зажигается другой.Получаются при смешивании разные оттенки.Используем всего два канала.
т.е. - называем каналы RGB и щелкая тумблером гоняем цвета?
таки получится включить только один из них.
или имелось в виду что-то другое?
ЗЫ. по моему три канала занимать под светилки - это перебор.
Офлайн
Vikto50ага. кажись уяснил. должно выглядеть примерно так:
Офлайн
Отредактировано Vikto50 (Апрель 29, 2013 08:45:02)
Офлайн
Vikto50не покатит. надо хотя-бы три уровня стека, а там только два.
У меня 12С508А .
Отредактировано pasha_zv (Май 6, 2013 01:15:29)
Офлайн
Офлайн
Офлайн
Офлайн