PCA高速輸出
#include "STC15W4K.H" // 包含STC15W4K寄存器定義文件 void main() { //初值計(jì)算方法為:步長值=計(jì)數(shù)脈沖頻率/(2*所需頻率) // (22118400/12)/(2*10000) = 92.16 = 0x005C CCAP0L=0x5C; // 給PCA模塊0的CCAP0L置初值 10khz CCAP0H=0; // 給PCA模塊0的CCAP0H 置初值 CCAPM0=0x4D; // 設(shè)置PCA模塊0為時(shí)鐘輸出模式。 EA=1; // 開總中斷 CR=1; // 啟動(dòng)定時(shí)器 while(1); // 等待中斷 } void PCA() interrupt 7 { unsigned int temp; // 臨時(shí)變量 temp=(CCAP0H<<8)+CCAP0L+0x5C; // 運(yùn)算符“+”的優(yōu)先級(jí)大于“<<” //這里要注意類型提升,相同數(shù)據(jù)類型此處1個(gè)字節(jié)進(jìn)行運(yùn)算后,提升為2字節(jié)再運(yùn)算 CCAP0L=temp; // 取計(jì)算結(jié)果的低8位 CCAP0H=temp>>8; // 取計(jì)算結(jié)果的高8位 CCF0 = 0; // 清PCA模塊0中斷標(biāo)志 }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
以下提供移植更方便的成熟程序
#include "STC15W4K.H" // 包含STC15W4K寄存器定義文件 #define SYSclk 22118400L #define T100KHz ((SYSclk/2)/2/100000) unsigned int value; // 臨時(shí)存放比較寄存器增加的數(shù)值 sbit PCA_LED = P0^0; // PCA測(cè)試LED void port_mode() // 端口模式 { P0M1=0x00; P0M0=0x00;P1M1=0x00; P1M0=0x00;P2M1=0x00; P2M0=0x00;P3M1=0x00; P3M0=0x00; P4M1=0x00; P4M0=0x00;P5M1=0x00; P5M0=0x00;P6M1=0x00; P6M0=0x00;P7M1=0x00; P7M0=0x00; } void main() { port_mode(); // 所有IO口設(shè)為準(zhǔn)雙向弱上拉方式。 CMOD = 0x82; // CIDL=1,空閑模式下停止PCA計(jì)數(shù)器工作,PCA時(shí)鐘源為Fosc/2 // ECF=0,禁止PCA定時(shí)器溢出中斷 CCON = 0; // 清零PCA計(jì)數(shù)器溢出中斷請(qǐng)求標(biāo)志位CF // CR = 0, 不允許 PCA 計(jì)數(shù)器計(jì)數(shù),清零PCA 各模塊中斷請(qǐng)求標(biāo)志位CCFn CL = 0; // 清零PCA 計(jì)數(shù)器 CH = 0; value = T100KHz; CCAP1L=value; // 給PCA模塊1的CCAP1L置初值 CCAP1H=value >> 8; // 給PCA模塊1的CCAP1H 置初值 CCAPM1=0x4D; // PCA模塊1為時(shí)鐘輸出模式,且必須使用中斷。 // ECCF1=1允許PCA模塊1中斷 // 當(dāng)[CH,CL]=[CCAP1H,CCAP1L]時(shí),CCF1=1,產(chǎn)生中斷請(qǐng)求,重裝比較值。 EA=1; // 開整個(gè)單片機(jī)所有中斷共享的總中斷控制位 CR=1; // 啟動(dòng)PCA計(jì)數(shù)器(CH,CL)計(jì)數(shù) while(1); // 等待中斷 } void PCA() interrupt 7 { CCF1 = 0; // 清中斷標(biāo)志 value += T100KHz; CCAP1L = value; CCAP1H = value >> 8; // 更新比較值 }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
單片機(jī)
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。