2.
: " MCS-51 ( ) i851FX".
1. PCA () , , , .
[ 51fx.doc] .
2. , , .
[ 51fx.doc] .
3. 0 1
, .
CMOD: |
CCON (Counter Control Register): |
CCAPMn (Compare/Capture Mode Register): / |
IE (Interrupt Enable Register): - 0A8h c - 0000 0000b |
IP(Interrupt Priority Register): - 0B8h c - X000 0000b |
CH/CL ( F9h E9h) 16- -.
8- / (CCAPnH, CCAPnL) . , , .
Programmable Counter Array
( -Capture Mode).
1.
, , .
, , , , .
(Capture2) - (Capture 1) = 4. |
1 . (, , 4.)
.
PCA .
, , 216 PCA , PCA .
1.
;
CAPTURE DATA 30H
PULSE_WIDTH DATA 32H
FLAG BIT 20H.0
;
ORG 0000H
JMP PCA_INIT
ORG 0033H
JMP PCA_INTERRUPT
;
PCA_INIT:;
|
|
MOV CMOD, #00H; = 1/12 X Fosc
MOV CH, #00H
MOV CL, #00H
;
; 0
MOV CCAPM0, #21H;
;
;
SETB EC;
SETB EA
SETB CR;
CLR FLAG;
;
;*******************************************************************************
;
;*******************************************************************************
; , 0
; . ,
; ,
;
PCA_INTERRUPT:
CLR CCF0;
JB FLAG, SECOND_CAPTURE; ,
;
FIRST_CAPTURE:
MOV CAPTURE, CCAP0L; 16-
MOV CAPTURE+1, CCAP0H;
MOV CCAPM0, #11H;
;
SETB FLAG;
RETI;
SECOND CAPTURE:
PUSH ACC
PUSH PSW
CLR C
MOV A, CCAP0L; 16-
SUBB A, CAPTURE
MOV PULSE_WIDTH, A; 16-
MOV A, CCAP0H; 8-
SUBB A, CAPTURE+1
MOV PULSE WIDTH+1, A;
MOV CCAPM0, #21H; ,
CLR FLAG;
;
POP PSW
POP ACC
RETI