Проблемы начались с малого, уже этот код не компилируется, причем MPASM и MPLAB выдают совершенно разные ошибки.
Код: Выделить всё
LIST P=16F84A
;----------
PORTA EQU 5
PORTB EQU 6
TRISB EQU 86H
TRISA EQU 85H
OPTREG EQU 81H
STATUS EQU 3
CARRY EQU 0
RP0 EQU 5
PCL EQU 2
INTCON EQU 0BH
TMR0 EQU 01H
FSR EQU 04H
FSR_B EQU 0FH
;----------
SEC EQU 0CH
MIN EQU 0DH
HOUR EQU 0EH
;----------
D_CH1 EQU 10H
D_CH2 EQU 11H
D_CH3 EQU 12H
D_CH4 EQU 13H
D_CH5 EQU 14H
;----------
CLRF PORTA
CLRF PORTB
;----------
BSF STATUS,5
CLRF TRISA
CLRF TRISB
BCF STATUS,5
;----------
BCF OPTREG,5
BSF INTCON,5
BSF INTCON,7
CLRF TMR0
;----------
;----------
ORG 0
GOTO MAIN
;----------
ORG 4
GOTO INT
;----------
INT MOVF FSR,0
MOVWF FSR_B
CLRF TMR0
INCF SEC,1
MOVF FSR_B,0
MOVWF FSR
RETFIE
;----------
MAIN CALL MOD
MOVLW B'00000001'
MOVWF PORTA
MOVLW D_CH1
MOVWF PORTB
MOVLW B'00000010'
MOVWF PORTA
MOVLW D_CH2
MOVWF PORTB
MOVLW B'00000100'
MOVWF PORTA
MOVLW D_CH3
MOVWF PORTB
MOVLW B'00001000'
MOVWF PORTA
MOVLW D_CH4
MOVWF PORTB
MOVLW B'00010000'
MOVWF PORTA
MOVLW D_CH5
MOVWF PORTB
GOTO MAIN
;----------
MOD MOVF SEC,0
MOVWF D_CH1
RETURN
;----------
END
Процедура MAIN будет переделываться и особо обращать на неё внимание не нужно, мне интересно почему код не компилируется и как с моим кварцем отсчитать точно 1сек?
Прочитал даташит по контролеру, самоучитель Корабельникова, несколько исходников часов и таймеров, но запутался ещё больше, нигде не нашёл как таймером отмерять 1 сек.