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电平变化中断触发后,中断服务程序里可以读取引发中断的端口状态吗
可以判断,但是之前要先判断中断源,因为很多中断都是同一个入口 ,