;
CAPTURE_0 DATA 30H
CAPTURE_1 DATA 32H
PHASE DATA 34H
FLAG_0 BIT 20H.0
FLAG_1 BIT 20H.1
;
ORG 0000H
JMP PCA_INIT
ORG 0033H
JMP PCA_INTERRUPT
;
PCA_INIT:
;
; 1. :
;
MOV CCAPM0, #21H; 0
MOV CCAPM1, #21H; 1
;
;*******************************************************************************
;
;*******************************************************************************
; 0 1.
PCA INTERRUPT:
JB CCF0, MODULE_0; ,
JB CCF1, MODULE_1;
;
MODULE_0:
CLR CCF0;
MOV CAPTURE_0, CCAP0L; 16-
MOV CAPTURE_0+1, CCAP0H
JB FLAG_1, CALCULATE_PHASE;
; 1,
SETB FLAG_ 0; 0
RETI
MODULE_1:
CLR CCF1; 1
MOV CAPTURE_1, CCAP1L
MOV CAPTURE_1+1, CCAP1H
JB FLAG_0, CALCULATE_PHASE;
; 0,
SETB FLAG_1; 1
RETI
;
CALCULATE_PHASE:
PUSH ACC;
PUSH PSW;
CLR C;
;
JB FLAG_0, MOD0_ LEADING
JB FLAG_1, MOD1_LEADING
;
MOD0_LEADING:
MOV A, CAPTURE_1
SUBB A, CAPTURE_0
MOV PHASE, A
MOV A, CAPTURE_1+1
SUBB A, CAPTURE_0+1
MOV PHASE+1, A
CLR FLAG_0
JMP EXIT
;
MOD1_LEADING:
MOV A, CAPTURE_0
SUBB A, CAPTURE_1
MOV PHASE, A
MOV A, CAPTURE_0+1
SUBB A, CAPTURE_1+1
MOV PHASE+1, A
CLR FLAG_1
EXIT:
POP PSW
POP ACC
RETI
- .
(COMPARE MODE)
2.
, .
16- . , , .
, 16- CCAP0H, CCAP0L . , , , .
, CCAP0L , CCAP0H .
|
|
, .
, .
20 .
; = 12
; CA = 1/12 Fosc -> 1
;
; :
; 20
; ------------- = 20,000
; 1 /
;
ORG 0000H
JMP PCA_INIT
ORG 0033H
JMP PCA_INTERRUPT
;
PCA_INIT:
; , 1
;
MOV CCAPM0, #49H; 0
MOV CCAP0L, #LOW(20000);
MOV CCAP0H, #HIGH(20000)
;
SETB EC;
SETB EA
SETB CR;
;
; ***************************************************************************
;
; ***************************************************************************
;
PCA_INTERRUPT:
CLR CCF0; 0
PUSH ACC
PUSH PSW
CLR EA;
MOV A, #LOW(20000); 16-
ADD A, CCAP0L;
MOV CCAP0L, A; 20000
MOV A, #HIGH(20000)
ADDC A, CCAP0H
MOV CCAP0H, A
SETB EA
;.
;.
;
;.
;.
POP PSW
POP ACC
RETI
2b. (HSO - High Speed Output) , , .
( ), (30.5 ) 16 .
3. 0 1
l 0 1 GATE TRx INTx#.
, INTx#.
l 1 1 - :
1. 4 TMOD :
- 1 1;
- /1# = 0 FOSC/12 ;
- GATE1 = 1 INT1 .
2. 16- T1/L1 .
3. TR1 CON, IN1
4. , , INT1. , .
5. TR1, INT1.
6. TH1/TL1.
7. ,
12T OSC x ( - )
8. : F OSC = 16 12osc =750 c.
TH1=0 TL1 = 0000 1010 b, = 0, = 750 10,000 = 7,5 .
( )