a mikr kontr impulsn icon

a mikr kontr impulsn



Названиеa mikr kontr impulsn
Дата конвертации26.08.2012
Размер6.78 Kb.
ТипДокументы
1. /a_mikr_kontr_impulsn.txt
; ПРИМЕНЕНИЕ МИКРОКОНТРОЛЛЕРА В ИМПУЛЬСНОМ БЛОКЕ ПИТАНИЯ БОЛЬШОЙ МОЩНОСТИ
; Автор проекта Абрамов Сергей  Михайлович  г. Оренбург Email: radio-konst@narod.ru
; Частота КВАРЦА=4,0

	#include
 	list p=16f84    
 
   
	 __CONFIG        _XT_OSC & _PWRTE_ON & _WDT_ON & _CP_OFF

;Данные
DP1	equ     B'00001010'	; Данные выводимые в порт В
DP2	equ     B'00010100'	;
DP3	equ     B'00101010'	;
DP4	equ     B'00000100'	;
DP5	equ     B'00110100'	;
DP6	equ     B'00000010'	;
DP7	equ     B'00000110'	; Выключены все ключи 
KZ	equ	D'117'		;Константа задержки полного закрытия симистора 8,8 мс
KSU	equ	D'3'		;Константа предделителя PDSU- скоРОСТЬ НАРАСТАНИЯ НАПРЯЖЕНИЯ

;РЕГИСТРЫ
RF	equ	H'20'		; регистр Флага RF=1 в 0 разряде был переход через 0
ZC	equ	H'21'		; Задержка на включение оптотиристора
PDSU	equ	H'22'		; регистр скоРОСТИ НАРАСТАНИЯ НАПРЯЖЕНИЯ
W_COPY		equ	H'2D'		;Копия регистра W
STATUS_COPY	equ	H'2E'		;Копия регистра STATUS
;------------------------------------------------------------------------------------  	
        org 0			;Вектор сброса
        goto START
 	
;------------------------------------------------------------------------------------  	
	org 4			;Вектор прерывания
	movwf	W_COPY		;Сохранение стека- W сохранить в регистре W_COPY
	swapf	STATUS,W	;Обменять полубайты в регистре status и записать в W
	movwf	STATUS_COPY	;W сохранить в регистре STATUS_COPY
	btfsc	INTCON,RBIF	;Прерывание по изменению RB6,RB7-Авария
	goto	INT_RB67				
  	btfsc	INTCON,INTF	;Прерывание по изменению RB0-переход через0 сетев.
напр goto INT_RB0 btfsc INTCON,T0IF ;Прерывание по переполнению таймера TMR0 goto INT_TMR0 END_PRER ;восстановление стека swapf STATUS_COPY,W ;Обменять полубайты STATUS и записать в W movwf STATUS ;w-заносим в STATUS swapf W_COPY,F ;обменять полубайты в регистре W_COPY и сохранить в W_COPY swapf W_COPY,W ;обменять полубайты в регистре W_COPY и востановить регистр W без воздействия на STATUS retfie ;------------------------------------------------------------------------------------ INT_RB67 ;Прерывание по RB6,7 обработки аварии movf PORTB,0 ;читаем PORTB - для снятия несоответствия bcf INTCON,RBIF ;сбрасываем флаг по прерыванию RB6,7 и вновь разрешаем прерывание movlw DP7 ; movwf PORTB ; Выключены все ключи bcf PORTA,0 ;выключить оптотиристор bsf PORTA,3 ; Зажечь индикатор аварии AVARIY clrwdt ; btfsc PORTB,6 ;если перегрузка снята на входе PORT RB6 то nop ; goto AVARIY ;зацикливание на аварии ; btfsc PORTB,7 ;если перегрузка снята на входе PORT RB7 то nop ; goto AVARIY ;зацикливание на аварии ; bcf PORTA,3 ;Погасить индикатор аварии ; bsf INTCON,GIE ;Разрешение прерывания ; goto START ;Выход из прерывания Авария снята goto AVARIY ;зацикливание на аварии ;------------------------------------------------------------------------------------ INT_RB0 ;Прерывание по RB0 переход сетевого напряжения через 0 movf PORTB,0 ;читаем PORTB - для снятия несоответствия bcf INTCON,INTF ;сбрасываем флаг по прерыванию RB0,и вновь разрешаем прерывание bsf RF,0 ;Установка флага в 0 разряд был переход через 0 goto END_PRER ;Выход из прерывания ;------------------------------------------------------------------------------------ INT_TMR0 bcf INTCON,T0IF ;сбрасываем флаг по прерыванию таймера TMRO,и вновь разрешаем прерывание bsf PORTA,0 ;включить оптотиристор nop ;задержка 12 mkS clrwdt ;сброс WDT nop nop nop nop nop nop nop nop nop nop bcf PORTA,0 ;выключить оптотиристор goto END_PRER ;Выход из прерывания ;============================================================================================== ; Инициализация регистров процессора START bcf STATUS,RP0 ;Перекл. на банк0 clrf PORTA ;Обнуляем портA movlw DP7 ;Выключаем все ключи movwf PORTB ; bsf STATUS,RP0 ; Перекл. на банк1 movlw B'00000000' ; Порты RА0-RА4 на вывод movwf TRISA movlw B'11000001' ; Порты RB1-RB5 на вывод,RB0,RB6,RB7 на ввод movwf TRISB movlw B'10000101' ;Нагруз.рез.порта B выкл,прер RB0 по спаду ,такт генер.на вход TMR0,предд.перед TMR0,коэф.дел=64 movwf OPTION_REG bcf STATUS,RP0 ; Перекл. на банк0 movlw B'10010000' ;Прерыв. по RB0 включены movwf INTCON movlw KZ ;Загружаем Задержку на включение семистора в W; Константа=255-(Kt_мс/((4/Fosc)*Кдел))=255-(8,8мс/((4/4000 kГц)*64))=255-138=117 movwf ZC ;Задержка должна быть 8,8 мс -загружаем в ZC симистор полностью закрыт movlw KSU ;Загружаем KSU в W movwf PDSU ;W загружаем в предделитель PDSU скорости нарастания напряжения clrf RF ;обнуление Регистра флагов ;Начало програмы SIL clrwdt ;силовое напряжение плавно увеличиваем до максимума btfss RF,0 ;проверяем была 1 в 0 разряде регистра флагов goto SIL ;НЕТ-выход bcf RF,0 ;да был переход через 0 -сбросить флаг decfsz PDSU,F ;Вычитаем 1 из предделителя СКОРОСТИ НАРАСТАНИЯ НАПРЯЖЕНИЯ goto Z_TMR0 ;предделитель не достиг нуля KSU movlw KSU ;Загружаем KSU в W movwf PDSU ;W загружаем в предделитель PDSU скорости нарастания напряжения movlw D'255' ;ПРОВЕРЯЕМ subwf ZC,0 ;если ZC=255 т.е. симистр полностью открыт то более ZC не изменяем btfss STATUS,Z ;да ZC=255 проверяем флаг "результат 0 тогда перескакиваем через шаг" incf ZC,f ; ZC=ZC+1 Z_TMR0 movf ZC,0 ;Задержка на включение симистора ZC -занести в w movwf TMR0 ;w- занести в TMR0 bsf INTCON,T0IE ;Запускаем таймер-разрешаем прерывание таймера TMRO, movlw D'255' ;ПРОВЕРЯЕМ subwf ZC,0 ;если ZC=255 т.е. симистр полностью открыт то более ZC не изменяем btfss STATUS,Z ;да ZC=255 проверяем флаг "результат 0 тогда перескакиваем через шаг" goto SIL goto UKL UKL bcf STATUS,RP0 ; Перекл. на банк0 movlw B'10001000' ;Прерыв. RB6,7 включены по TMR0, RB0-прерывания запретить movwf INTCON bsf PORTA,0 ;включить оптотиристор ;Формирование импульсов управления транзисторами nop ; задержка 4мs nop CIKL movlw DP1 movwf PORTB ; Включен 1 ключ vt9 movlw DP3 ; задержка 2мs movwf PORTB ; Включен 1 и 3 ключ clrwdt ; задержка 12мs nop nop nop nop nop nop nop nop nop movlw DP1 movwf PORTB ; Выключен 3 ключ movlw DP4 ; задержка 2мs movwf PORTB ; Выключен 1 ключ nop ; задержка 4мs nop movlw DP2 movwf PORTB ; Включен 2 ключ movlw DP5 ; задержка 2мs movwf PORTB ; Включен 2 и 3 ключ nop ; задержка 12мs nop nop nop nop nop nop nop nop nop movlw DP2 movwf PORTB ; Выключен 3 ключ movlw DP6 ; задержка 2мs movwf PORTB ; Выключен 2 ключ goto CIKL end



Похожие:

a mikr kontr impulsn iconДокументы
1. /Kontr/1.Введение.doc
2. /Kontr/2.Психологические...

a mikr kontr impulsn iconKontr a8

a mikr kontr impulsn iconKontr g8

a mikr kontr impulsn iconДокументы
1. /kontr.txt
Разместите кнопку на своём сайте:
Документы


База данных защищена авторским правом ©podelise.ru 2000-2014
При копировании материала обязательно указание активной ссылки открытой для индексации.
обратиться к администрации
Документы

Разработка сайта — Веб студия Адаманов