0009 2022 00020 call obrob_INT ;вызов подпрограммы
000A 180B 00021 btfsc INTCON,RBIF ;ожидание смены сигнала на RB7-RB4
000B 2028 00022 call obrob_RB4 ;вызов подпрограммы
000C 0E0F 00023 swapf T_STATUS,W ;востановление STATUS
000D 0083 00024 movwf STATUS
000E 080E 00025 movf T_W,0 ;востановление W
000F 178B 00026 bsf INTCON, GIE ;разрешение прерываний
0010 0009 00027 retfie ;возврат из прерывания
00028
00029
0011 201B 00030 start call init ;вызов подпрограммы
0012 3098 00031 movlw b'10011000' ;запрет ненужных и разрешение
0013 008B 00032 movwf INTCON ;нужных прерываний
0014 0806 00033 movf PORTB,0 ;чтение состаяния порта В
0015 008D 00034 movwf oldportb ;сохранение для следубщего сравнения
0016 00035 loop
0016 0000 00036 nop ;пустая команда
0017 0000 00037 nop ;пустая команда
0018 0000 00038 nop ;пустая команда
0019 0000 00039 nop ;пустая команда
001A 2816 00040 goto loop ;зацикливаем программу
00041
00042
001B 3040 00043 init movlw b'01000000' ;внешнее прерывание на RB0/INT
MPASM 02.20 Released LAB5.ASM 5-4-2004 21:24:27 PAGE 2
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
001C 0062 00044 OPTION ;осуществляется по переднему фронту
001D 30FF 00045 movlw b'11111111' ;все разряды PORTB
001E 0066 00046 TRIS PORTB ;на ввод
001F 30FD 00047 movlw b'11111101' ;все разряды PORTA кроме первого (RA1)
0020 0065 00048 TRIS PORTA ;на ввод
0021 0008 00049 return
00050
0022 00051 obrob_INT ;обработчик прерывания INT
0022 0F8C 00052 incfsz counter_l ;инкремент младшего байта счетчика
0023 2825 00053 goto m1 ;переход если нет переполнения
0024 0A90 00054 incf counter_h ;инкремент старшего байта счетчика
0025 080C 00055 m1 movf counter_l,0
0026 108B 00056 bcf INTCON,INTF ;сброс флага прерывания INT
0027 0008 00057 return
00058
0028 00059 obrob_RB4 ;обработчик прерывания от RB4
0028 0806 00060 movf PORTB,0 ;чтение состаяния порта В
0029 060D 00061 xorwf oldportb,0 ;сравнение с предыдущем значением порта В
002A 0091 00062 movwf test ;сохраняем результат сравнения
002B 1E11 00063 btfss test,4 ;проверяем изминилось ли состояние RB4
002C 2837 00064 goto notRB4 ;если нет переход на конец обработчика
00065 ;если изминилось то формируем импульс на выводе RA1 (ti=7*tц)
002D 1085 00066 bcf PORTA,1 ;сброс RA1
002E 1485 00067 bsf PORTA,1 ;установка RA1
002F 0000 00068 nop ;пустая команда
0030 0000 00069 nop ;пустая команда
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.