Вс май 27, 2018 15:01:29
Вс май 27, 2018 15:16:56
Вс май 27, 2018 15:25:04
;
;Светофор
;
#include <p16f84.inc> ;подключаем файл определений мк
...
org 0 ;начальный адрес программы
clrf INTCON ;запрет всех прерываний
goto START ;переход на начало
org 04h ;вектор прерываний
goto interrupt ;переход на подпрограмму обработки прерываний
;
START
bsf STATUS, RP0 ;включаем BANK1
movlw b'11111000' ;RA0,RA1,RA2 - выходы
movwf TRISA ;запись в TRISA
movlw b'00000011' ;RB7..RB2 - выходы
movwf TRISB ;запись в TRISB
movlw b'00000100' ;определение прескалера для таймера 1:32
movwf OPTION_REG ;запись в OPTION_REG
bcf STATUS,RP0 ;включаем BANK0
clrw ;обнуляем рабочий регистр
movwf PORTA ;устанавливаем на выходах порта А нули(гасим лампы)
movwf PORTB ;устанавливаем на выходах порта B нули(гасим лампы)
movlw 0x3D ;начальное состояние счетчика
movwf counter ;в переменную
movlw .31 ;начальное количество тактов
movwf takt ;в переменную
movlw b'10100000' ;взводим биты нужных прерываний
movwf INTCON ;разрешаем прерывание от таймера и общее разрешение
loop
goto loop ;зацикливаемся на метке loop
;************************
;
;************************
interrupt
btfss INTCON,T0IF ;проверяем флаг прерывания от таймера
retfie ;если не таймер, то выходим из п/п
...
m1
bcf INTCON,T0IF ;сбрасываем флаг прерывания от таймера
retfie ;выход из п/п обработки прерывания
;
;Подпрограмма возвращает данные для ламп
;Такты перебираются от 31-го до 1-го и далее, по кругу.
;
; b'D7 D6 D5 D4 D3 D2 D1 D0'
;
;D0 - красный светофора_1 и светофора_3
;D1 - желтый светофора_1 и светофора_3
...
end ;конец программы
Вс май 27, 2018 15:47:20
Дело в том, что "просто так" попасть в обработку прерываний вы не можете, а если уж попали - проверяйте по какому условию и сбрасывайте соответствующий флаг прерывания.interrupt
btfss INTCON,T0IF ;проверяем флаг прерывания от таймера
retfie ;если не таймер, то выходим из п/п
...
m1
bcf INTCON,T0IF ;сбрасываем флаг прерывания от таймера
retfie ;выход из п/п обработки прерывания
Вс май 27, 2018 16:14:36
Вс май 27, 2018 16:37:17
Вс май 27, 2018 16:42:41
Пн май 28, 2018 08:51:00
Вт май 29, 2018 13:16:05
Вт май 29, 2018 13:22:21
Вт май 29, 2018 13:37:43
Что за хрень?Олег88135 писал(а):Решил проблему-просто вставил #include <p16f84.inc> и всё. Работает как задумано.
Те, которые знаешь лучше, чем пальцы на руке и которые более подходят под разрабатываемое изделие.Олег88135 писал(а):какие МК лучше-PIC или AVR?