background image
宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技:专业单片机 / 存储器供应商   www.MCU-Memory.com   STC12C5410AD 系列 1T 8051 单片机中文指南
89
;    假定 fosc = 20MHz 时, 要求 PCA 高速脉冲输出 125KHz 的方波:
;        CCAPnL_Value = INT( 20000000/4/125000 + 0.5)
;                     = INT( 40 + 0.5)
;                     = INT( 40.5 )
;                     = 40
;                     = 28H
;    输出脉冲的频率 f  = 20000000/4/40
;                     = 125000 (125.0KHz)
;CCAPnL_Value  EQU 25H     ;25H = 37, fosc = 18.432MHz 时, 高速脉冲输出 = 124.540KHz
;CCAPnL_Value  EQU 28H     ;28H = 40, fosc = 20MHz 时, 高速脉冲输出 = 125KHz
CCAPnL_Value   EQU 42H     ;42H = 66, fosc = 33MHz 时, 高速脉冲输出 = 125KHz
;------------------------------------------------------------
    ORG 0000H
    AJMP  main
;------------------------------------------------------------
    ORG  0033H                  ;interrupt 6
PCA_interrupt:
    PUSH  ACC                   ;4 Clock
    PUSH  PSW                   ;4 Clock
    CLR   CCF1                  ;1 Clock, 清 PCA 模块 1 中断标志
    MOV   A, #CCAPnL_Value ;2 Clock
    ADD   A, CCAP1L             ;3 Clock
    MOV   CCAP1L, A             ;3 Clock
    CLR   A                     ;1 Clock
    ADDC  A, CCAP1H             ;3 Clock
    MOV   CCAP1H, A             ;3 Clock
    POP   PSW                   ;3 Clock
    POP   ACC                   ;3 Clock
    RETI                        ;4 Clock
;此中断服务程序共用 34 Clock, 进入中断服务程序还要数个 Clock
;------------------------------------------------------------
    ORG 0060H
main:
    MOV   SP, #0E0H             ;设置堆栈指针
    ACALL PCA_init              ;调用 PCA 初始化程序
main_loop:
    NOP
    NOP
    NOP
    SJMP  main_loop
;------------------------------------------------------------