【文章內(nèi)容簡介】
F)以及各個模塊的標志( CCF3/CCF2/CCF1/CCF0)。當(dāng) PCA計數(shù)器溢出時, CF位置位,如果 CMOD寄存器的ECF位置位,就產(chǎn)生中斷。 CF位只能通過軟件清除。 CCON寄存器的位 0~ 3是 PCA各個模塊的標志,當(dāng)發(fā)生匹配或比較時由硬件置位。這些標志只能通過軟件清除。所有模塊共用一個中斷向量。可以在中斷服務(wù)程序中判斷 CCF0~CCF3,以判斷到底是哪個模塊產(chǎn)生了中斷。 1 6位 計數(shù)器F osc / 12))F osc / 2定時器 0 溢出外部輸入 E C I ( P 3 . 4 )I D L EC I D LCFCH CL至 PCA 模塊PCA 中斷CRC C F 3 C C F 2 C C F 1 C C F 0C P S 1 C P S 0 E C F— — — —— —C MO DC C O N單片機應(yīng)用技術(shù) 25/49 PCA/PWM模塊的特殊功能寄存器 ( 1) PCA工作模式寄存器( CMOD) 0XXXX000B ECF CPS0 CPS1 CIDL D9H 復(fù)位值 D0 D1 D2 D3 D4 D5 D6 D7 地址 1) CIDL: 空閑模式下是否停止 PCA計數(shù)的控制位。CIDL=0時,空閑模式下 PCA計數(shù)器繼續(xù)計數(shù)。 CIDL=1時,空閑模式下 PCA計數(shù)器停止計數(shù)。 2) CPS CPS0: PCA計數(shù)脈沖源選擇控制位。 PCA計數(shù)脈沖選擇如表 83所示 (見教材 P159)。 3) ECF: PCA計數(shù)器溢出中斷使能位。 ECF=1時,允許寄存器 CCON中 CF位的中斷。 ECF=0時,禁止寄存器 CCON中CF位的中斷。 單片機應(yīng)用技術(shù) 26/49 PCA/PWM模塊的特殊功能寄存器 ( 2) PCA控制寄存器( CCON) 00XX0000B CCF0 CCF1 CCF2 CCF3 CR CF D8H 復(fù)位值 D0 D1 D2 D3 D4 D5 D6 D7 地址 1) CF: PCA計數(shù)器溢出標志位。當(dāng) PCA計數(shù)器溢出時,CF位由硬件置位。如果 CMOD寄存器的 ECF位置位, CF標志可用來產(chǎn)生中斷。 CF位可通過硬件或軟件置位,但只能通過軟件清零。 2) CR: PCA計數(shù)器的運行控制位。通過軟件置位 CR位時,啟動 PCA計數(shù)器計數(shù);清零 CR位時,關(guān)閉 PCA計數(shù)器。 3) CCF3/CCF2/CCF1/CCF0: PCA各個模塊的標志( CCF0對應(yīng)模塊 0, CCF1對應(yīng)模塊 1, CCF2對應(yīng)模塊 2,CCF3對應(yīng)模塊 3)。當(dāng)發(fā)生匹配或比較時由硬件置位相應(yīng)的標志位。這些標志只能通過軟件清除。 單片機應(yīng)用技術(shù) 27/49 PCA/PWM模塊的特殊功能寄存器 (3) PCA比較 /捕獲工作模式寄存器 CCAPMn 1) ECOMn: 允許比較器功能控制位。 ECOMn=1時,允許比較器功能。 2) CAPPn: 正捕獲控制位。 CAPPn=1時,允許上升沿捕獲。 3) CAPNn: 負捕獲控制位。 CAPNn=1時,允許下降沿捕獲。 4) MATn: 匹配控制位。 當(dāng) MATn=1時, PCA計數(shù)值與模塊的比較 /捕獲寄存器的值匹配時,將置位CCON寄存器的中斷標志位 CCFn。 5) TOGn: 翻轉(zhuǎn)控制位。 當(dāng) TOGn=1時,工作于 PCA高速輸出模式, PCA計數(shù)器的值與模塊的比較/捕獲寄存器的值匹配時,將使 CEXn腳( CEX0/, CEX1/,CEX2/, CEX3/) 翻轉(zhuǎn)。 6) PWMn: 脈寬調(diào)制模式。當(dāng) PWMn=1時, CEXn腳用作脈寬調(diào)制輸出。 7) ECCFn: 使能 CCFn中斷。使能寄存器 CCON的比較 /捕獲標志 CCFn,用來產(chǎn)生中斷。 X0000000B ECCFn PWMn TOGn MATn CAPNn CAPPn ECOMn 復(fù)位值 D0 D1 D2 D3 D4 D5 D6 D7 單片機應(yīng)用技術(shù) 28/49 PCA/PWM模塊的特殊功能寄存器 PCA模塊的工作模式設(shè)定 8位 PWM 0 1 0 0 0 0 1 16位高速輸出 X 0 1 1 0 0 1 16位軟件定時器 X 0 0 1 0 0 1 16位捕獲模式,由 CEXn的跳變觸發(fā) X 0 0 0 1 1 X 16位捕獲模式,由 CEXn的下降沿觸發(fā) X 0 0 0 1 0 X 16位捕獲模式,由 CEXn的上升沿觸發(fā) X 0 0 0 0 1 X 無此操作 0 0 0 0 0 0 0 模塊功能 ECCFn PWMn TOGn MATn CAPNn CAPPn ECOMn 單片機應(yīng)用技術(shù) 29/49 PCA/PWM模塊的特殊功能寄存器 (4) PCA/PWM模塊寄存器 PCA_PWMn XXXXXX00B EPCnL EPCnH 復(fù)位值 D0 D1 D2 D3 D4 D5 D6 D7 1) EPCnH: 在 PWM模式下,與 CCAPnH組成 9位數(shù)。 2) EPCnL: 在 PWM模式下,與 CCAPnL組成 9位數(shù)。 ( 5) PCA的 16計數(shù)器低 8位 CL和高 8位 CH。它們用于保存 PCA的裝載值。 ( 6) PCA捕捉 /比較寄存器 CCAPnL(低位字節(jié))和 CCAPnH(高位字節(jié)) 用于保存各個模塊的捕捉計數(shù)值。 單片機應(yīng)用技術(shù) 30/49 PCA/PWM模塊的工作模式 (1) 捕獲模式 C A P P n捕捉0C E X nE C O M nCF CR C C F 3 C C F 2 C C F 1 C C F 0P W M n E C C F n—— —C C O NPCA 中斷C A P N n M A T n T O G nCH CLC C A P n LC C A P n HC C A P M n0 0 0單片機應(yīng)用技術(shù) 31/49 PCA/PWM模塊的工作模式 (2) 16位軟件定時器模式 C A P P n匹配0E C O M nCF CR C C F 3 C C F 2 C C F 1 C C F 0P W M n E C C F n—— — C C O NPCA 中斷C A P N n M A T n T O G nCH CLC C A P n LC C A P n HC C A P M n1 0 00 1先寫C C A P n L后寫C C A P n H16 位比較器0使能1單片機應(yīng)用技術(shù) 32/49 PCA/PWM模塊的工作模式 (3) 高速輸出模式 C A P P n匹配0E C O M nCF CR C C F 3 C C F 2 C C F 1 C C F 0P W M n E C C F n—— — C C O NPCA 中斷C A P N n M A T n T O G nCH CLC C A P n LC C A P n HC C A P M n1 1 00 1先寫C C A P n L后寫C C A P n H16 位比較器0使能C E X n翻轉(zhuǎn)1單片機應(yīng)用技術(shù) 33/49 PCA/PWM模塊的工作模式 (4) 脈寬調(diào)節(jié)模式 C A P P n0E C O Mn P W Mn E C C F n— C A P N n MA T n T O G n C C A P M n10 09 位比較器( 0, C L ) = ( E P C n L , C C A P n L )使能CL 溢出輸出 1)001( 0, C L ) ( E P C n L , C C A P n L )輸出 0P W MnCL0E P C nH C C A P n HE P C nL C C A P n L開漏 開漏 PWM無效 僅為輸入 /高阻 強推挽輸出 /強上拉輸出,要加輸出限流電阻 1KΩ10KΩ 強推挽輸出 /強上拉輸出 強推挽輸出 /強上拉輸出,要加輸出限流電阻 1KΩ10KΩ 弱上拉 /準雙向口 PWM輸出時的狀態(tài) PWM之前的狀態(tài) I/O口作為 PWM使用時的狀態(tài) 單片機應(yīng)用技術(shù) 34/49 PCA/PWM模塊的應(yīng)用 一般情況下, PCA/PWM模塊的初始化部分大致如下: ( 1)設(shè)置 PCA/PWM模塊的工作方式,將控制字寫入 CMOD、 CCON和CCAPMn寄存器。 ( 2)設(shè)置捕捉寄存器 CCAPnL(低位字節(jié))和 CCAPnH(高位字節(jié))初值。 ( 3)將 ECF/ECCF0/ECCF1/ECCF2/ECCF3中需置 1的位置 1。 ( 4)開 PCA 中斷和 LVD(低壓檢測 )中斷共享的總中斷控制位(使得EPCA_LVD=1)。 ( 5)開整個單片機所有中斷共享的總中斷控制位 EA(使得 EA=1)。 ( 6)啟動 PCA 計數(shù)器( CH, CL)計數(shù)(使得 CR=1)。 單片機應(yīng)用技術(shù) 35/49 【 例 85】 利用 PCA 功能擴展外部中斷。將 ( PCA模塊 0)擴展為下降沿外部中斷,將 ( PCA模塊 1)擴展為上升沿 /下降沿都可觸發(fā)的外部中斷。 解:當(dāng) PCA 模塊工作在捕獲模式時,對模塊的外部 CEXn輸入的跳變進行采樣。當(dāng)采樣到有效跳變時, PCA硬件將 PCA計數(shù)器陣列寄存器( CH和 CL)的值裝載到模塊的捕獲寄存器( CCAPnL和 CCAPnH)中。如果CCON中的 CCFn位和 CCAPMn中的 ECCFn位被置位,將產(chǎn)生中斷。由此,可以將 PCA模塊作為擴展外部中斷使用。按照要求,設(shè)置控制字時, PCA模塊 0應(yīng)設(shè)為下降沿捕獲(即 CAPN0=1), PCA模塊 1應(yīng)設(shè)為上升沿和下降沿都能捕獲的方式(即 CAPP1=1并且 CAPN1=1)。 單片機應(yīng)用技術(shù) 36/49 匯編語言程序清單如下: $include () 。包含 STC12C5410AD寄存器定義文件 ORG 0000H LJMP MAIN 。轉(zhuǎn)主程序 ORG 0033H 。PCA中斷 LJMP PCA_ISR ORG 0050H MAIN: MOV SP, 7FH 。初始化 PCA MOV CMOD,10000000B 。空閑模式下停止 PCA 計數(shù)器工作 。PCA 時鐘源為 fosc/12 。禁止 PCA 計數(shù)器溢出時中斷 MOV CCON, 00H 。清 0 PCA計數(shù)器溢出中斷請求標志位 CF 。CR = 0, 不允許 PCA計數(shù)器計數(shù) 。清 0 PCA各模塊中斷請求標志位 CCFn MOV CL, 00H 。清 0 PCA 計數(shù)器 MOV CH, 00H MOV CCAPM0, 11H 。設(shè)置 PCA模塊 0下降沿觸發(fā)捕捉功能 , ECCF0=1 MOV CCAPM1, 31H 。模塊