PCA三路外中断

来源:互联网 发布:初中生编程培训 编辑:程序博客网 时间:2024/06/14 08:31
#include "STC15W4K.H"   // 包含STC15W4K寄存器定义文件sbit LED_PCA0=P0^1;     // PCA0对应P1.1脚sbit LED_PCA1=P0^0;     // PCA1对应P1.0脚sbit LED_PCA2=P0^2;     // PCA2对应P3.7脚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 (void){    port_mode();      // 所有IO口设为准双向弱上拉方式。    CMOD=0x80;        // 空闲模式下停止PCA 计数器工作                      // PCA 时钟源为SYSclk /12,禁止PCA 计数器溢出时中断     CCON=0;           // 清0 PCA计数器溢出中断请求标志位CF                      // CR = 0, 不允许PCA计数器计数;PCA各模块中断请求标志位CCFn清0    CL=0;             // PCA 计数器清0    CH=0;    CCAPM0=0x11;      // 设置PCA模块0下降沿触发捕捉功能    CCAPM1=0x31;      // 设置PCA模块1上升/下降沿均可触发捕捉功能    CCAPM2=0x31;      // 设置PCA模块2上升/下降沿均可触发捕捉功能    EA=1;             // 开整个单片机所有中断共享的总中断控制位    CR=1;             // 启动 PCA 计数器(CH,CL)计数     while(1);         // 等待中断}void PCA(void) interrupt 7   //PCA中断服务程序{    if(CCF0)          // PCA模块0中断服务程序    {        LED_PCA0=! LED_PCA0;   // LED_PCA0取反,表示PCA模块0发生了中断                     CCF0=0;       // 清PCA模块0中断标志    }    else if(CCF1)     // PCA模块1中断服务程序    {        LED_PCA1=!LED_PCA1;   // LED_PCA1取反, 表示PCA模块1发生了中断                     CCF1=0;       // 清PCA模块1中断标志    }    else if(CCF2)     // PCA模块2中断服务程序    {        LED_PCA2=!LED_PCA2;   // LED_PCA2取反, 表示PCA模块2发生了中断                     CCF2=0;       // 清PCA模块2中断标志    }}
原创粉丝点击