A. PIC單片機電平變化中斷與外部中斷有什麼區別,電平變化中斷怎麼用
區別1:外部中斷,來只有指定自的某幾個IO才能復用這個功能;
而電平變化中斷幾乎全部IO都可以復用這種功能。
區別2:外部中斷,有低電平到來的時候才會中斷,也就是從高電平變成低電平後才會觸發;
而電平變化中斷只要電平發生改變,它就會觸發。也就是當外部一直是高電平,變成低電平後它會觸發一次,然後下次再從低電平變成高電平的時候,它也會觸發一次。
電平變化中斷可以用來計數,也可以當成外部中斷來用,只是要比外部中斷多一層判斷。
B. PIC單片機輸出PWM波的C語言源程序
#ifndef __PWM__H__
#define __PWM__H__
void pwm_ccp1(unsigned char a,unsigned char b);
void pwm_ccp2(unsigned char a,unsigned char b);
#endif
void pwm_ccp1(unsigned char a,unsigned char b) //左邊PWM
//CCP1 模塊的 PWM 工作方式,周期為(b+1)*4*Tosc*(TMR2前分頻值)=b+1 us //pwm高電平=a:CCP1CON(第四五位)Tosc*(TMR2前分頻值)
//pwm高電平=a:CCP1CON(第四五位)Tosc*(TMR2前分頻值)
{ //a>b時有最高轉速
CCPR1L=a; //* 設置工作循環的高 8bit 為 a
CCP1CON=0X0C; //0000 1100 設置 CCP1 為 PWM 工作方式,且工作循環的低 bit2 為 11*/
CCP1IE=0;; //* 禁止總中斷和外圍中斷 */
PR2=b; //* 設置 PWM 周期 */
TRISC2=0; //* 設置 RC2/CCP1 為輸出 */
T2CON=0X04; //* 0000 1000前分頻比為 1:1 ,後分頻器1:2,打開 TMR2 ,同時輸出 PWM 信號 */
}
void pwm_ccp2(unsigned char a,unsigned char b) //右邊PWM
//CCP2 模塊的 PWM 工作方式,周期為(b+1)*4*Tosc*(TMR2前分頻值),
//pwm高電平=a:CCP2CON(第四五位)Tosc*(TMR2前分頻值)
{
CCPR2L=a; //* 設置工作循環的高 8bit 為 a
CCP2CON=0X0C; //* 設置 CCP2 為 PWM 工作方式,且工作循環的低 bit2 為 11*/
CCP2IE=0; //* 中斷屏蔽
PR2=b; //* 設置 PWM 周期 */
TRISC1=0; //* 設置 RC1/CCP2 為輸出 */
T2CON=0X04; //* 前分頻比為 1 ,打開 TMR2 ,同時輸出 PWM 信號 */
}
C. PIC電平變化中斷觸發後,中斷服務程序里可以讀取引發中斷的埠狀態嗎
可以判斷,但是之前要先判斷中斷源,因為很多中斷都是同一個入口 ,