Click here to load reader

第七章 定时计数器 与可编程计数器阵列 本章学习目标 掌握定时计数器的应用 掌握可编程时钟输出模块的应用 掌握可编程计数器阵列模块的应用

  • Upload
    ataret

  • View
    327

  • Download
    18

Embed Size (px)

DESCRIPTION

第七章 定时计数器 与可编程计数器阵列 本章学习目标 掌握定时计数器的应用 掌握可编程时钟输出模块的应用 掌握可编程计数器阵列模块的应用. STC15F2K60S2 单片机内部集成了以下与定时 功能有关的模块: 1 ) 三个 16 位的定时 / 计数器 ,不仅可以方便地用于定时控制,而且还可以用作分频器和事件记录; 2 ) 可编程时钟输出功能 ,可给外部器件提供时钟; - PowerPoint PPT Presentation

Citation preview

  • sd

  • STC15F2K60S2 116/

    2

    3Programmable Counter ArrayPCAPulse Width Modulation PWM

    sd

  • 7.1// /117-1 /x=01

    sd

  • 1101

    sd

  • C/T1TMODTCONAUXRT0x12T1x1212

    sd

  • 11TCONTF0TF11/

    sd

  • CPUTMODTCONAUXRT0T1

    1618THX8TLX8X=01TMOD4

    sd

  • STC15F2K60S2/T0T116T2T2T216T27-3 T2

    sd

  • /

    TMODTCONAUXR/TMOD/01TCONT0T1AUXRT2

    sd

  • 1TMOD

    TMOD89H00H

    D7D6D5D4D3D2D1D010GATEC/M1M0GATEC/M1M0

    sd

  • 1M1M0

    7-1 /

    sd

  • 2C/ 1T0T1 0

    sd

  • 3GATEGATE 1INTXTRX 0TRX

    TMOD

    sd

  • 2TCON

    TCON88H00H

    sd

  • 1TF1T1 T1TF11CPUCPU0TF10 2TF0/0 TF1

    sd

  • 3TR1T10 GATETMOD.7=0TR1=1T1TR1=0T1 GATETMOD.7=1TR1=1INTXT1 4TR0T0 TR1

    sd

  • //TMODTHXTLXTCONTRX1THXTLXTCONT0T1

    sd

  • 3AUXRAUXR02UARTSTC15F2K60S21T 80518051018051121T AUXR121T

    sd

  • AUXR8EH01H1T0x120 00805112 10805112

    sd

  • 2T1x12D61 012 1 UARTT1T1x12UART12T 1T3T2RD42 02 12

    sd

  • 4T2_C/ D32 0 1P3.1/T25T2x12D22 0 12T212 1T21

    sd

  • UART_M0x6UARTS1S21 EXTRAM1024RAM

    D7D6D5D4D3D2D1D0T0x12T1x12UART_M0x6T2RT2_C/T2x12EXTRAMS1S2

    sd

  • 4T2H/RL_TH22 0D6H00H5T2L/RL_TL22 0D7H00H

    D7D6D5D4D3D2D1D0

    sd

  • / TMODM1M0/4 0: 16 1: 16/ 2: 8 3:

    sd

  • 1/01016

    7-4 010

    sd

  • STC15F2K60S212T1211T1T0T1AUXRT0x12T1x12 T0x12=0T012T T0x12=1T01T T1x12=0T112T T1x12=1T11T

    sd

  • 16012RL_THxRL_TLxRL_THxTHxRL_TLxTLxTRx=0/TLxTHxRL_TLxRL_THxTRx=1/TLx THxRL_TLx RL_THx

    sd

  • 0[TLxTHx]TFx[RL_TLx,RL_THx][TLx,THx]T0CLKO=1T1/P3.50CLKOUT0T1CLKO=1T0/P3.41CLKOUT1

    sd

  • 2/01116/

    7-5 011

    sd

  • 16TLx8THx8TLx8THxTHxTCONTFx 0THx

    sd

  • 3/0128

    7-6 /2

    sd

  • 28/TL0/TL1TF0/TF1TH0/TH1TL0/TL1TL0/TL1TH0/TH1TH0/TH1T0CLKO=1T1/P3.50CLKOUT0T1CLKO=1T0/P3.41CLKOUT1

    sd

  • 01602010

    sd

  • / /

    sd

  • 1/12126MHz12 Tu= = s=2s TC=XTuTuTCX

    sd

  • STC15F2K60S2/1THXTLX28216THXTLX/

    n=816

    sd

  • Tu2sTC1ms 01216500=65036=FE0CH THXFEHTLX0CH6MHz128T28 02s512s16T216 02s131072s131.072ms

    sd

  • 2 1

    sd

  • 1s10ms10ms1001s

    sd

  • 2

    sd

  • / /

    sd

  • /TMODT0T1AUXRT2TMODAUXR1280518051/TLXTHXT0T1T2LT2HT2ETXEA/TRXT0T1T2RT2/

    sd

  • 7-1 6MHzT01sP2.0 1s6MHz1216131.072ms1s50ms20P2.01s

    sd

  • T01601H6MHz122sT0

    sd

  • $INCLUDE (STC12.INC) ;STC12C5A60S2 ORG0000H LJMP MAIN ; ORG 000BH;T0 LJMPT0_ISR ORG 0100HMAIN: MOV SP,#7FH ; MOV TMOD,#01H ;T0 MOV TL0,#58H MOV TH0,#9EH MOV A,#20 ;A20 SETB ET0 ;T0 SETB EA;CPU SETB TR0 ;T0 SJMP $ ;

    sd

  • T0_ISR:MOV TL0,#58H MOV TH0,#9EH; DEC A ; A1 JNZEXIT CPL P2.0 MOV A,#20 ;A20EXIT:RETI END

    $SJMP $HERE: LJMP HERE

    sd

  • #include stc12.h//STC12C5A60S2sbit P20=P2^0;//P2.0unsigned char i; //CACCvoid main (void){ //SP=0x60; //C TMOD=0x01; TL0=0x58; TH0=0x9E; i=20;//ET0=1;//T0 EA = 1;//TR0=1;//T0 while(1); //}

    sd

  • void T0_ISR (void) interrupt 1 //T0{TL0=0x58;// TH0=0x9E; i--;//1if(i==0) {//0P2.0P20 = !P20; //P2.0i = 20;// }}

    sd

  • 0TMOD0 MOV TL0,#58H MOV TH0,#9EH;C TL0=0x58; TH0=0x9E; //1T 11.0592MHz

    sd

  • 7-218.432MHz2P0.038.4KHZ $INCLUDE (STC15.INC) ; ;38.4KHz (65536-18432000/12/38400/2) T38_4KHz EQU 0FFECH TEST_PIN BIT P0.0 ; ORG0000H LJMPMAIN ORG0063H ;2 LJMPT2_ISR

    sd

  • MAIN: MOV SP,#70H; ORLAUXR,#04H;T21T MOV T2H,#HIGH T38_4KHz;2 MOV T2L,#LOW T38_4KHz;2 ORLAUXR,#10 H;2 ORLIE2,#04H;2 SETBEA;CPU SJMP$;2T2_ISR: CPLTEST_PIN RETI END

    sd

  • C#include stc15.h//STC15F2K60S2typedef unsigned char BYTE;typedef unsigned int WORD;#define FOSC 18432000L#define T38_4KHz (65536-18432000/12/38400/2) //38.4KHz sbit TEST_PIN = P0^0; //void main(void){ AUXR|= 0x04;//T21T T2H = T38_4KHz>>8; //T2 T2L = T38_4KHz; //T2 AUXR |= 0x10; //2 IE2 |= 0x04; //2 EA = 1; //CPU while (1); //}//2void t2_isr(void) interrupt 12{ TEST_PIN = ~TEST_PIN;}

    sd

  • 7-3 GATE=1TRX=1TXT07-7

    sd

  • T0CMOVTMOD,#09H ; T016GATE1MOVTL0,#00HMOVTH0,#00HCLREX0 ;JNBP3.2,$ ;SETBTR0JBP3.2,$ ;CLRTR0 ;T0MOVA,TL0 ;T08B8AMOVB,TH0 ;

    sd

  • 12/TH0TL0TL0TH0/TL0TH0TH0TH0TH0TL0

    sd

  • 7.2 STC12C5A60S24 MCLKO/P5.4 CLKOUT0/P3.5CLKOUT1/P3.4 T2CLKO/P3.0 R/C12MHzMCLKO/P5.4

    sd

  • 1 R/CMCLKO/P5.4CLK_DIVMCKO_S1MCKO_S0 MCKO_S1MCKO_S0MCLKO/P5.4

    sd

  • CLK_DIVPCON297H0000 x000B

    D7D6D5D4D3D2D1D0MCKO_S1MCKO_S0 ADRJ TX_RX -CLKS2 CLKS1 CLKS0

    sd

  • MCKO_S1MCKO_S07-2 MCLKIO13.5MHz

    MCKO_S1MCKO_S0R/C00 01= MCLK/110= MCLK/211= MCLK/4

    sd

  • 2T2CLKO/P3.0T1CLKOU/P3.4T0CLKOU/P3.5T2CLKO/P3.0T1CLKOU/P3.4T0CLKOU/P3.5INT_CLKO (AUXR2)T2CLKOT1CLKOT0CLKOCLKOUT00CLKOUT11T2CLKO201628CPU

    sd

  • INT_CLKO8FHX0000000B

    D7D6D5D4D3D2D1D0-EX4EX3EX2-T2CLKOT1CLKOT0CLKO

    sd

  • 1T2CLKOP3.02T2T2CLKO T2CLKO=1 P3.0T2 =T2/2 T2_C/T=0/T2T21T=(SYSclk) / (65536-[RL_TH2, RL_TL2])/2T212T= (SYSclk) /12/ (65536-[RL_TH2, RL_TL2])/2 T2_C/T=1/T2(P3.1/T2)= (T2_Pin_CLK) / (65536-[RL_TH2, RL_TL2])/2T2CLKO=0 P3.0T2

    sd

  • 2T1CLKOP3.41T1T1CLKOT2T1CLKO=1P3.4/T01T1CLKO = T1/2 /T1016C/T=0/T1T11T=(SYSclk) / (65536-[RL_TH1, RL_TL1])/2T112T= (SYSclk) /12/ (65536-[RL_TH1, RL_TL1])/2C/T =1/T1(P3.5/T1) = (T1_Pin_CLK) / (65536-[RL_TH1, RL_TL1])/2 /T128 C/T=0/T1 T11T = (SYSclk) / (256-TH1)/2 T112T= (SYSclk)/12/(256-TH1)/2C/T=1/T1(P3.5/T1) = (T1_Pin_CLK) / (256-TH1) / 2T1CLKO=0P3.4/T01

    sd

  • 3T0CLKOP3.50T0T0CLKO T0CLKO=1P3.5/T10T0CLKO=T0/2 /T0016C/T =0/T0T01T= (SYSclk)/(65536-[RL_TH0, RL_TL0])/2T012T= (SYSclk) /12/ (65536-[RL_TH0, RL_TL0])/2 C/T=1/T0(P3.4/T0) = (T0_Pin_CLK) / (65536-[RL_TH0, RL_TL0])/2 /T028C/T=0 T01T= (SYSclk) / (256-TH0) / 2 T012T= (SYSclk) / 12 / (256-TH0) / 2C/T=1/T0P3.4/T0 = (T0_Pin_CLK) / (256-TH0) / 2T0CLKO=0P3.5/T10

    sd

  • 1P5.4SYSclk

    MOV CLK_DIV,#40H ; CLK_DIV = 0x40; //C

    sd

  • 2T0CLKO/P3.5002TMOD402168TL0TH00TR01INT_CLKOT0CLKO10P3.5

    sd

  • 3T1CLKO/P3.4102TMOD402168TL1TH11TR11INT_CLKOT1CLKO11P3.4

    sd

  • 4T2CLKO/P3.016T2HT2LAUXRT2R1T2_C/2INT_CLKOT2CLKO12P3.0

    sd

  • STC15F2K60S2

    7-4 SYSclk=18.432MHzT0P3.4125KHzT1P3.538.4KHz

    sd

  • STC15F2K60S2CT0T11T

    sd

  • #include "stc15.h" //STC15F2K60S2void main(void){ TMOD = 0x22; //T0T128 AUXR = AUXR | 0x80; //T01T AUXR = AUXR | 0x40; //T11T //T08=18432000/2/74125KHz TH0 = (256-74); TL0 = (256-74); //T1818432000/2/240 = 38400Hz TH1 = (256-240); TL1 = (256-240); TR0 = 1; //T0 TR1 = 1; //T1 INT_CLKO =INT_CLKO|0x03; // // while(1);}

    sd

  • 7-518.432MHz2P3.038.4KHZ $INCLUDE (STC15.INC) ;STC15F2K60S2 ; T38_4KHz EQU 0FFECH ;38.4KHz (65536-18432000/12/38400/2) ;12T T2CLKO BIT P3.0; ORG0000H LJMPMAINMAIN:MOVSP,#70H MOVT2H,#HIGH T38_4KHz;T2 MOVT2L,#LOW T38_4KHz;T2 MOVAUXR,#10H;T2 ORLINT_CLKO,#04H;T2 SJMP$ END

    sd

  • C#include "stc15.h" //STC15F2K60S2//#define FOSC 18432000L#define T38_4KHz (65536-18432000/12/38400/2) //38.4KHz sbit T2CLKO = P3^0; //void main(void){ T2H= T38_4KHz>>8; //T2 T2L = T38_4KHz;//T2 AUXR = 0x10;//T2 INT_CLKO |= 0x04;//T2 while (1); //}

    sd

  • 7.3 STC15F2K60S2PCAPWM

    sd

  • PCA PCA16316/

    7-8 PCA

    sd

  • 0P1.1/CCP01P1.0/CCP12P3.7/CCP2CCPAUXR1CCP_S0P_SW2CCP_S13-94/

    sd

  • 16PCA/37-9 PCA/

    sd

    &

    16

    SYSclk/12

    &

    SYSclk

    0

    ECI(P1.2)

    IDLE

    CIDL

    CF

    CH

    CL

    PCA

    PCA

    CR

    CCF1

    CCF0

    CPS1

    CPS0

    ECF

    CPS2

    CMOD

    CCON

    SYSclk/2

    SYSclk/4

    SYSclk/8

    SYSclk/6

    CCF2

  • PCA/CHCL16PCAPCA1/121/81/61/41/20ECIP1.2CMODCPS2CPS1CPS0

    sd

  • PCA/CMODCIDLPCACMODECFPCAPCAPCACFCCONCRPCACR=1PCACR=0PCA

    sd

  • PCA/CCONPCACFCCF1/CCF0PCACFCMODECFCFCCONCCF0PCA0CCF11CCF0CCF1

    sd

  • PCAPCAPCACMODPCACCONPCA/CCAPMnPCAPWMPCA_PWMnPCA16--8CL8CHPCA/

    sd

  • 1PCACMODCMODD9H0XXX0000B

    D7D6D5D4D3D2D1D0CIDL---CPS2CPS1CPS0ECF

    sd

  • 1CIDLPCACIDL=0PCACIDL=1PCA

    2CPS2CPS1CPS0PCA

    D7D6D5D4D3D2D1D0CIDL---CPS2CPS1CPS0ECF

    sd

  • 2CPS2CPS1CPS0PCAPCA7-3 PCA

    sd

  • CPS2/CPS1/CPS0=(100)2PCA/PWMSYSclkSYSclk/3PCA T01T3T01256

    sd

  • 3ECFPCA ECF=1CCONCFECF=0CCONCF

    D7D6D5D4D3D2D1D0CIDL---CPS2CPS1CPS0ECF

    sd

  • 2PCACCONCCOND8H00XXXX00B1CFPCA PCACFCMODECFCFCF0

    sd

  • 2CRPCA CRPCA CRPCA3CCF2/CCF1/CCF0PCACCF00CCF11 ,CCF22

    D7D6D5D4D3D2D1D0CFCR---CCF2CCF1CCF0

    sd

  • 3PCACCAPMnn=012DAHDBHDCHx000 0000B1ECOMn ECOMn=12CAPPn CAPPn=1

    sd

  • 3CAPNn CAPNn=1CAPPn=1CAPNn=14MATn MATn=1PCA/CCONCCFn

    D7D6D5D4D3D2D1D0-ECOMnCAPPnCAPNnMATnTOGnPWMnECCFn

    sd

  • 5TOGn TOGn=1PCAPCA/CEXn6PWMn PWMn=1CEXn7ECCFnCCFn CCON/CCFn

    D7D6D5D4D3D2D1D0-ECOMnCAPPnCAPNnMATnTOGnPWMnECCFn

    sd

  • 4PCAPWMPCA_PWMnn=0,1,2F2HF3HF4Hxxxx xx00B1EBSn_1 , EBSn_0PCAnPWM 00: PCAn8PWM 01: PCAn7PWM 10PCAn6PWM 11PCAn8PWM

    D7D6D5D4D3D2D1D0EBSn_1EBSn_0----EPCnHEPCnL

    sd

  • 2EPCnHPWMCCAPnH93EPCnLPWMCCAPnL9

    PCA7-4

    D7D6D5D4D3D2D1D0------EPCnHEPCnL

    sd

  • 5PCA16--8CL8CH

    E9HF9H00HPCA

    sd

  • 6PCA/CCAPnLCCAPnH PCA16PCAPWMn=01201200HCCAP0LEAHCCAP0HFAH0/CCAP1LEBHCCAP1HFBH1/CCAP2LECHCCAP2HFCH2/

    sd

  • PCA

    16

    sd

  • 1PCA7-107-10 PCA

    sd

  • PCA CCAPMnCAPNnCAPPn1PCACCPnPCAPCACHCLCCAPnHCCAPnLCCONCCFnCCAPMnECCFn0

    sd

  • 216167-117-11 PCA16/PCA

    sd

  • CCAPMnECOMnMATnPCAPCACCFnECCFn[CH,CL]1FOSC/1212[CH,CL]1[CH,CL][CCAPnH,CCAPnL]CCFn=1PCA[CCAPnH,CCAPnL]TPCA

    sd

  • SYSclk = 18.432MHzSYSclk/12T5msPCA T/((1/SYSclk)12 )= 0.005/ ( (1/18432000)12 ) = 7680 = 1E00H PCA 1E00H5ms[CCAPnH,CCAPnL]

    sd

  • 37-127-12 PCA

    sd

  • PCAPCACEXnCCAPMnTOGnMATnECOMnCCAPnLPCAnPCASYSclk/2f f = SYSclk / (4CCAPnL) SYSclkCCAPnL CCAPnL = SYSclk / (4f)

    sd

  • CCAPnL =INT(SYSclk / (4f) + 0.5)INT

    SYSclk=20MHzPCA125KHzCCAPnL CCAPnL = INT( 20000000/4/125000 + 0.5) = INT( 40 + 0.5) = 40= 28H

    sd

  • 4 Pulse Width ModulationPWMD/A

    sd

  • STC15F2K60S2PCAPCA_PWMnn=0,1,2.EBSn_1EBSn_08PWM7PWM6PWMPCAPWMPCAPCA

    sd

  • I/O PWM7-57-5 I/OPWM

    sd

  • 18PWM[EBSn_1,EBSn_0]=[0,0][1,1]PCAn8PWM{0,CL[7:0]}[EPCnL,CCAPnL[7:0]]

    sd

  • 8PWM7-137-13 PCA8PWM

    sd

    CAPPn

    0

    ECOMn

    PWMn

    ECCFn

    CAPNn

    MATn

    TOGn

    CCAPMn

    1

    0

    0

    9

    (0,CL)>=(EPCnL,CCAPnL)

    CL

    1

    0

    0

    1

    (0,CL)

  • PCA8PWM{EPCnL,CCAPnL[7:0]}{0,CL[7:0]}{EPCnL,CCAPnL[7:0]}{0,CL[7:0]}{EPCnL,CCAPnL[7:0]}CLFF00{EPCnH,CCAPnH[7:0]}{EPCnL,CCAPnL[7:0]}PWMPWMCCAPMnPWMnECOMnPWM8

    PCA8SYSclk/12SYSclk /8SYSclk /6SYSclk /4SYSclk /2SYSclk0ECI/P1.2

    sd

  • PWM38KHzSYSclkPCASYSclk SYSclk =38000256=9728000PWM0ECIPCAEPCnL=0ECCAPnL=00HPWMEPCnL=1CCAPnL=0FFH PWM

    sd

  • PWMD/AR1C1R2C2PWMD/A7-14 PWMD/A

    sd

  • 27PWM[EBSn_1,EBSn_0]=[0,1]PCAn7PWM{0,CL[6:0]}{EPCnL,CCAPnL[6:0]}CLCL.71

    sd

  • 7PWM7-15 PCA7PWM

    sd

    &

    CAPPn

    0

    ECOMn

    PWMn

    ECCFn

    CAPNn

    MATn

    TOGn

    CCAPMn

    1

    0

    0

    8

    (0,CL)>=(EPCnL,CCAPnL)

    CL

    1

    0

    0

    1

    (0,CL)

  • PCA7PWM{EPCnL,CCAPnL[6:0]} 8PWMPWM7

    PCA8SYSclk/12SYSclk /8SYSclk /6SYSclk /4SYSclk /2SYSclk0ECI/P1.2

    sd

  • PCA PCA0

    sd

  • PCA PCACMODCCONCCAPMnCCAPnLCCAPnHPCAECF/ECCF0/ECCF111EA1PCA CHCLCR=1

    sd

  • 7-6PCAP1.1PCA0P1.0PCA1/P1.1 P1.5 P1.0P1.6P1.5P1.6LED

    sd

  • PCACEXnPCAPCACHCLCCAPnHCCAPnLCCONCCFnCCAPMnECCFnPCAPCA0CAPP0=0CAPN0=1PCA1CAPP1=1CAPN1=1

    sd

  • $INCLUDE (STC15.INC) ;STC15F2K60S2 LED_PCA0 EQU P1.5 LED_PCA1 EQU P1.6ORG 0000H LJMP MAIN ; ORG 003BH ;PCA LJMP PCA_ISR ORG 0050H MAIN:MOV SP, #70H ; PCA MOV CMOD,#10000000B ;PCA ;PCASYSclk /12PCA MOV CCON, #00H ;0 PCACF ;CR = 0, PCA;0 PCACCFn MOV CL, #00H ;0PCA MOV CH, #00H MOV CCAPM0, #11H ;PCA0, ECCF0=1 MOV CCAPM1, #31H ;1/, ECCF1=1 SETB EA ; SETB CR ;PCA(CH,CL) SJMP $ ;

    sd

  • ;-------------- PCA-------------------------PCA_ISR:JNB CCF0, Not_PCA0 ;CCF01PCA0 ;PCA1;PCA0 CPL LED_PCA0 ;LED_PCA0,PCA0CLR CCF0 ;PCA0Not_PCA0: JNB CCF1, PCA_Exit ;CCF11PCA1 ;PCA1CPL LED_PCA1 ;LED_PCA1, PCA1CLR CCF1 ;PCA1PCA_Exit:RETI END

    sd

  • #include stc15.h //STC15F2K60S2sbit LED_PCA0=P1^5;sbit LED_PCA1=P1^6;void main (void){ CMOD=0x80; //PCA //PCA SYSclk /12PCA CCON=0; //0 PCACF //CR = 0, PCA;PCACCFn0 CL=0; //PCA 0 CH=0; CCAPM0=0x11; //PCA0 CCAPM1=0x31; //PCA1/ EA=1; // CR=1; // PCA (CH,CL) while(1); //}

    sd

  • void PCA_ISR(void) interrupt 7 //PCA{ if(CCF0) //PCA0 { LED_PCA0=! LED_PCA0; // LED_PCA0,PCA0 CCF0=0; //PCA0 } else if(CCF1) //PCA1 { LED_PCA1=!LED_PCA1; // LED_PCA1, PCA1 CCF1=0; //PCA1 }}

    sd

  • 7-7PCA PCAP1.61sSYSclk = 18.432MHzPCA0CCAPM0ECOMMATPCA0PCA

    sd

  • SYSclk=18.432MHzPCASYSclk/12T5ms5ms2001sPCA1E00H[CCAP0H,CCAP0L]

    $INCLUDE (STC15.inc) ;STC15F2K60S2COUNTER EQU 30H ;LED_1s EQU P1.6 ORG 0000H LJMP MAIN ;ORG 003BH ;PCALJMP PCA_ISRORG 0050HMAIN:MOV SP, #70H MOV COUNTER, #200 ;COUNTER

    sd

  • ;PCAMOV CMOD, #10000000B ;PCA ;PCAfOSC/12PCAMOV CCON, #00H ;0 PCACF ;CR = 0, PCA ;0PCACCFnMOV CL, #00H ;0 PCA MOV CH, #00HMOV CCAP0L, #00H ;PCA0CCAP0LMOV CCAP0H, #1EH ;PCA0CCAP0H MOV CCAPM0, #49H ;PCA016;ECCF0=1PCA0;[CH,CL]=[CCAP0H,CCAP0L],CCF0=1SETB EA ;SETB CR ;PCA(CH,CL)SJMP $ ;

    sd

  • PCA_ISR: ;PCAPUSH ACC ;PUSH PSW;5mSMOV A, #00H ;[CCAP0HCCAP0L]ADD A, CCAP0LMOV CCAP0L, A MOV A, #1EHADDC A, CCAP0HMOV CCAP0H, ACLR CCF0 ; PCA 0 DJNZ COUNTER,PCA_EXIT;0MOVCOUNTER,#200;CPL LED_1s ;LED_1S1PCA_EXIT:POP PSW ;POP ACC RETI END

    sd

  • #include stc15.h //sbit LED_1s=P1^6;unsigned char cnt; //void main (void){cnt=200; //COUNTER CMOD=0x80; //#10000000B PCA //PCASYSclk /12PCA CCON=0; //0PCACF //CR = 0, PCA PCA CCFn CL=0; //0PCA CH=0; CCAP0L=0; //PCA0CCAP0L CCAP0H=0x1e; //PCA0CCAP0H CCAPM0=0x49; //PCA016 //ECCF0=1PCA0 //[CHCL]=[CCAP0HCCAP0L]CCF0=1 EA=1; // CR=1; //PCA(CH,CL)while(1); //}

    sd

  • void PCA_ISR(void) interrupt 7 //PCA{union{ //,16 unsigned int num; struct{ // unsigned char Hi,Lo; }Result; }temp;//5ms temp.num=(unsigned int)(CCAP0H
  • 7-8PCAPWMPWMP1.1SYSclk= 18.432MHz PWMPCAPWM = ( pulse_width/256 ) * 100%7-16 PWM

    sd

  • $INCLUDE (STC15.INC) ;STC15F2K60S2 ; ;pulse_width_MAX = pulse_width_MIN , pulse_width_MAX EQU 0F0H ;PWM , = 93.75% pulse_width_MIN EQU 10H ;PWM , = 6.25% step EQU 38H ;PWM ; pulse_width EQU 30H ORG 0000H LJMP MAIN ORG 0050HMAIN: MOV SP, #70H MOV CMOD, #80H ;PCA PCA ;PCA FOSC/12 PCA MOV CCON, #00H ;PCA, MOV CL, #00H ;0 MOV CH, #00H

    sd

  • ;08PWM,P1.3 MOV CCAPM0, #42H MOV PCA_PWM0, #00H; MOV PCA_PWM0, #03H ;, PWM 0, SETB CR ;PCA MAIN_LOOP: LCALL PWMOUT LJMP MAIN_LOOPPWMOUT: ;P1.3 ;P1.3LEDP1.3LED

    sd

  • MOV A, #pulse_width_MIN ; MOV pulse_width, A ;pulse_widthLEDPWM_LOOP1: MOV A, pulse_width ; CLR C SUBB A, #pulse_width_MAX JNC PWM_A ; MOV A, pulse_width;LED MOV CCAP0H, A ; MOV CCAP1H, A ; MOV A, pulse_width ; ADD A, #step MOV pulse_width, A LCALL DELAY ; LJMP PWM_LOOP1PWM_A:

    sd

  • ;P1.3LEDP1.3LED MOV A, #pulse_width_MAX ; MOV pulse_width, A ;pulse_width LEDPWM_LOOP2: MOV A, pulse_width ; CLR C SUBB A, #pulse_width_MIN JC PWM_B ; JZ PWM_B ; MOV A, pulse_width ;LED MOV CCAP0H, A ; MOV CCAP1H, A ; MOV A, pulse_width ; CLR C SUBB A, #step MOV pulse_width, A LCALL DELAY ; LJMP PWM_LOOP2PWM_B: RET

    sd

  • DELAY: ; CLR A MOV R1, A MOV R2, A MOV R3, #80H DELAY_LOOP: NOP NOP NOP DJNZ R1, DELAY_LOOP DJNZ R2, DELAY_LOOP DJNZ R3, DELAY_LOOP RET END

    sd

  • 7-9PCA1SYSclk =20MHz P1.0125.0KHz PCA CCAPM1TOGMATECOMCCAP1L42H

    sd

  • $INCLUDE (STC15.INC) ;STC15F2K60S2CCAPnL_Value EQU 28H ; SYSclk=20MHz,= 125KHzORG 0000H LJMP MAINORG 003BH ;PCALJMP PCA_ISRORG 0060H MAIN:MOV SP, #70H ;

    sd

  • ;PCAMOV CMOD, #00000010B ;CIDL = 0,PCA ;PCA FOSC/2;ECF = 0,PCAMOV CCON, #00H ;PCACF ;PCA, CR=0; , CCFn=0MOV CH, #00H ; PCA 8MOV CL, #00H ;PCA 8;1, P1.0MOV CCAPM1, #01001101B ;PCA1,MOV CCAP1L, #CCAPnL_Value ; 1 MOV CCAP1H, #0 ; 1, ;1;PCA, MOV IP, #10000000B ;PCA SETB EA ; SETB CR ;PCA SJMP $ ;

    sd

  • PCA_ISR: ;PCAPUSH ACC ;4 Clock PUSH PSW ;4 Clock CLR CCF1 ;1 Clock, PCA1MOV 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 END

    sd

  • 7-100PCA SYSclk=18.432MHzSTC15F2K60S20PCAPCA0PWMPWMP1.1PCA116P1.65msP1.51

    sd

  • PCA0CMODCPS2CPS1CPS0(010)2

    sd

  • PCAPCA0PCA(CH,CL)01210101120PCA[CH,CL]1[CH,CL][CCAP1HCCAP1L]CCF1=1PCA1PCA1[CCAP1HCCAP1L]T

    sd

  • SYSclk =18.432MHzPCA5msPCA

    =T/((1/ SYSclk)120)= 0.005/((1/18432000) 120)= 768 = 300H [CCAP1H,CCAP1L]() 300H

    sd

  • $INCLUDE (STC15.INC) ;STC15F2K60S2CH1_5MS_H EQU 03H ;PCA1 5ms CH1_5MS_L EQU 00H ;PCA1 5msT0_1 EQU 0F6H ;T01 T0_2 EQU 0ECH ;T02PWM_WIDTH EQU 0FFH ; PWM_PULSE_WIDTH EQU 0FFH ;()COUNTER EQU 30H ; LED_5MS EQU P1.6 ;5LED_1S EQU P1.5 ;1

    sd

  • ORG 0000HLJMP MAINORG 003BH ;PCALJMP PCA_ISRORG 0060H MAIN:MOV SP, #70H ;MOV COUNTER, #100 ;COUNTER

    sd

  • ;PCAMOV CMOD, #10000100B ;PCA PCA ;PCA0PCAMOV CCON, #00H ;0PCACFCR = 0, PCA 0PCACCFnMOV CL, #00H ; 0PCA MOV CH, #00H ;0 8 PWM , PWMP1.1;MOV CCAPM0, #42H ;08PWM MOV PCA_PWM0, #00H ;0PWM 9MOV CCAP0H, #PWM_PULSE_WIDTH ;

    sd

  • ; PCA 1MOV CCAP1L, #CH1_5mS_L ;PCA1CCAP1LMOV CCAP1H, #CH1_5mS_H ;PCA1CCAP1HMOV CCAPM1, #49H ;PCA116;ECCF1=1, PCA1;[CHCL]=[CCAP1HCCAP1L]CCF1=1;SETB EA ;SETB CR ;PCA[CH,CL];T0, PCA(CH,CL) MOV TMOD, #02H ;0 MOV TH0, #T0_1MOV TL0, #T0_1SETB TR0 ;0

    sd

  • MAIN_LOOP:MOV TH0, #T0_1 ;T0MOV TL0, #T0_1MOV A, #PWM_WIDTH ; MOV CCAP0H, ALCALL DELAY;T0LED, PWMLEDMOV TH0, #T0_2 ;T0MOV TL0, #T0_2LCALL DELAY;P1.1LEDMOV TH0, #T0_1 ;T0 MOV TL0, #T0_1MOV A, #PWM_WIDTHLCALL RR_A ; PWM LCALL RR_AMOV CCAP0H, A ;PWMP1.1LEDLCALL DELAY

    sd

  • ;T0LED, PWMLEDMOV TH0, #T0_2 ;T0MOV TL0, #T0_2LCALL DELAYMOV CCAP0H, A ;PWMP3.5LEDLCALL DELAY;P1.1LEDMOV TH0, #T0_1 ;T0 MOV TL0, #T0_1MOV A, #PWM_WIDTHLCALL RR_A ; PWM LCALL RR_ALCALL RR_ALCALL RR_A;T0LED, PWMLEDMOV TH0, #T0_2 ;T0 MOV TL0, #T0_2LCALL DELAYLJMP MAIN_LOOP ; RR_A: ;CLR CRRC ARET

    sd

  • PCA_ISR: ;PCAPUSH ACCPUSH PSWCPL LED_5MS ;PCA15ms,MOV A, #CH1_5MS_L ;[CCAP1HCCAP1L] ADD A, CCAP1LMOV CCAP1L, AMOV A, #CH1_5MS_HADDC A, CCAP1HMOV CCAP1H, ACLR CCF1 ;PCA1DJNZ COUNTER,PCA_EXIT ;100 0.5MOV COUNTER,#100CPL LED_1S ;LED_1S 0.5 PCA_EXIT:POP PSW POP ACC RETI

    sd

  • DELAY: ;CLR A MOV R1, A MOV R2, A MOV R3, #80HDELAY_LOOP: NOP NOP NOP DJNZ R1, DELAY_LOOPDJNZ R2, DELAY_LOOPDJNZ R3, DELAY_LOOPRET

    END

    sd