CMOD = 0X00 ;PCA空閒時執行,時鐘fosc/12,遮蔽溢位中斷
CCON = 0x40 ;PCA計數器啟動,清零各個中斷請求標誌位
CCAPM0 = 0x49 ;PCA模組0設定為定時器比較捕捉功能
EPCALVD = 1 ;PCA比較中斷允許
//PCA模組中斷服務程式(輸出控制)
if(CCF0 = 1)
{
CCF0 = 0x00;//PCA模組0中斷標誌,由硬體置位,必須由清0
CCON = 0x40;//PCA計數器允許計數,清0各個中斷請求標誌位
XHOUT = !XHOUT;//自定義的輸出高低電平標誌
if (XHOUT==1)
PWMout = 1;//置位PWM輸出管腳
CCAP0L = CCAP0L + MC1L;//脈衝1低位
CCAP0H = CCAP0H + MC1H;//脈衝1高位
}
else
PWMout = 0;//復位PWM輸出管腳
CCAP0L = CCAP0L + MC0L;//脈衝0低位
CCAP0H = CCAP0H + MC0H;//脈衝0高位
你看哪個簡單。
CMOD = 0X00 ;PCA空閒時執行,時鐘fosc/12,遮蔽溢位中斷
CCON = 0x40 ;PCA計數器啟動,清零各個中斷請求標誌位
CCAPM0 = 0x49 ;PCA模組0設定為定時器比較捕捉功能
EPCALVD = 1 ;PCA比較中斷允許
//PCA模組中斷服務程式(輸出控制)
if(CCF0 = 1)
{
CCF0 = 0x00;//PCA模組0中斷標誌,由硬體置位,必須由清0
CCON = 0x40;//PCA計數器允許計數,清0各個中斷請求標誌位
XHOUT = !XHOUT;//自定義的輸出高低電平標誌
if (XHOUT==1)
{
PWMout = 1;//置位PWM輸出管腳
CCAP0L = CCAP0L + MC1L;//脈衝1低位
CCAP0H = CCAP0H + MC1H;//脈衝1高位
}
else
{
PWMout = 0;//復位PWM輸出管腳
CCAP0L = CCAP0L + MC0L;//脈衝0低位
CCAP0H = CCAP0H + MC0H;//脈衝0高位
}
}
你看哪個簡單。