久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6502|回復: 2
收起左側

stc單片機PCA擴展外部中斷程序

[復制鏈接]
ID:26188 發表于 2015-2-18 01:13 | 顯示全部樓層 |閱讀模式
10.4.用PCA功能擴展外部中斷的示例程序(C程序和匯編程序)
1.  C程序:
/*------------------------------------------------------------------------------------*/
/* --- STC MCU Limited ---------------- ---------------------------------------*/
/* --- 演示 STC 1T 系列單片機 用PCA功能擴展外部中斷 -----------*/
/* --- Mobile: (86)13922809991 -----------------------------------------------*/
/* --- Fax: 86-755-82905966 ---------------------------------------------------*/
/* --- Tel: 86-755-82948412 ----------------------------------------------------*/
/* --- Web:-----------------------------------------------*/
/* 如果要在程序中使用或在文章中引用該程序, -------------------- ---*/
/* 請在程序中或文章中注明使用了STC的資料及程序 -----------*/
/*-------------------------------------------------------------------------------------*/
#include "reg51.h"
#include "intrins.h"
typedef unsigned char BYTE;
typedef unsigned int WORD;
/*Declare SFR associated with the PCA */
sfr    CCON     =   0xD8;     //PCA control register
sbit   CCF0     =   CCON^0;   //PCA module-0 interrupt flag
sbit   CCF1     =   CCON^1;   //PCA module-1 interrupt flag
sbit   CR       =   CCON^6;   //PCA timer run control bit
sbit   CF       =   CCON^7;   //PCA timer overflow flag
sfr    CMOD     =   0xD9;     //PCA mode register
sfr    CL       =   0xE9;     //PCA base timer LOW
sfr    CH       =   0xF9;     //PCA base timer HIGH
sfr    CCAPM0   =   0xDA;     //PCA module-0 mode register
sfr    CCAP0L   =   0xEA;     //PCA module-0 capture register LOW
sfr    CCAP0H   =   0xFA;     //PCA module-0 capture register HIGH
sfr    CCAPM1   =   0xDB;     //PCA module-1 mode register
sfr    CCAP1L   =   0xEB;     //PCA module-1 capture register LOW
sfr    CCAP1H   =   0xFB;     //PCA module-1 capture register HIGH
sfr    PCAPWM0  =   0xf2;
sfr    PCAPWM1  =   0xf3;
sbit   PCA_LED  =   P1^0;     //PCA test LED
void PCA_isr() interrupt 7 using 1
{
      CCF0 = 0;                         //Clear interrupt flag
      PCA_LED = !PCA_LED;               //toggle the test pin while CEX0(P1.3) have a falling edge
}
void main()
{
      CCON = 0;                         //Initial PCA control register
                                        //PCA timer stop running
                                        //Clear CF flag
                                        //Clear all module interrupt flag
      CL = 0;                           //Reset PCA base timer
      CH = 0;
      CMOD = 0x00;                      //Set PCA timer clock source as Fosc/12
                                        //Disable PCA timer overflow interrupt
      CCAPM0 = 0x11;                    //PCA module-0 capture by a negative tigger on CEX0(P1.3)   
                                        //and enable PCA interrupt
      //CCAPM0 = 0x21;                    //PCA module-0 capture by a rising edge on CEX0(P1.3)      
                                          //and enable PCA interrupt
      //CCAPM0 = 0x31;                    //PCA module-0 capture by a transition (falling/rising edge)   
                                          //on CEX0(P1.3) and enable PCA interrupt
      CR = 1;                           //PCA timer start run
      EA = 1;
      while (1);
}


10.5.用PCA功能實現定時器的示例程序(C程序和匯編程序)
1.  C程序:
/*------------------------------------------------------------------------------------*/
/* --- STC MCU Limited ---------------- ---------------------------------------*/
/* --- 演示 STC 1T 系列單片機 用PCA功能實現16位定時器 --------*/
/* --- Mobile: (86)13922809991 -----------------------------------------------*/
/* --- Fax: 86-755-82905966 ---------------------------------------------------*/
/* --- Tel: 86-755-82948412 ----------------------------------------------------*/
/* --- Web:-----------------------------------------------*/
/* 如果要在程序中使用或在文章中引用該程序, -------------------- ---*/
/* 請在程序中或文章中注明使用了STC的資料及程序 -----------*/
/*-------------------------------------------------------------------------------------*/
#include "reg51.h"
#include "intrins.h"
#define   FOSC     18432000L
#define   T100Hz   (FOSC / 12 / 100)
typedef   unsigned  char   BYTE;
typedef   unsigned  int   WORD;
/*Declare SFR associated with the PCA */
sfr   CCON          =   0xD8;                 //PCA control register
sbit   CCF0         =   CCON^0;              //PCA module-0 interrupt flag
sbit   CCF1         =   CCON^1;              //PCA module-1 interrupt flag
sbit   CR            =   CCON^6;              //PCA timer run control bit
sbit   CF             =   CCON^7;              //PCA timer overflow flag
sfr   CMOD          =   0xD9;                 //PCA mode register
sfr   CL             =   0xE9;                 //PCA base timer LOW
sfr   CH             =   0xF9;                 //PCA base timer HIGH
sfr   CCAPM0        =   0xDA;                 //PCA module-0 mode register
sfr   CCAP0L        =   0xEA;                 //PCA module-0 capture register LOW
sfr   CCAP0H       =   0xFA;                 //PCA module-0 capture register HIGH
sfr   CCAPM1        =   0xDB;                 //PCA module-1 mode register
sfr   CCAP1L        =   0xEB;                 //PCA module-1 capture register LOW
sfr   CCAP1H        =   0xFB;                 //PCA module-1 capture register HIGH
sfr   PCAPWM0       =   0xf2;
sfr   PCAPWM1       =   0xf3;
sbit   PCA_LED      =   P1^0;                 //PCA test LED
BYTE   cnt;
WORD   value;
void PCA_isr() interrupt 7 using 1
{
      CCF0 = 0;                             //Clear interrupt flag
      CCAP0L = value;
  CCAP0H = value >> 8;                //Update compare value
      value += T100Hz;
      if (cnt-- == 0)
      {
            cnt = 100;                      //Count 100 times
            PCA_LED = !PCA_LED;           //Flash once per second
      }
}
void main()
{
      CCON = 0;                             //Initial PCA control register
                                            //PCA timer stop running
                                            //Clear CF flag
                                            //Clear all module interrupt flag
      CL = 0;                               //Reset PCA base timer
      CH = 0;
      CMOD = 0x00;                          //Set PCA timer clock source as Fosc/12
                                            //Disable PCA timer overflow interrupt
      value = T100Hz;
      CCAP0L = value;
  CCAP0H = value >> 8;                //Initial PCA module-0
      value += T100Hz;
      CCAPM0 = 0x49;                       //PCA module-0 work in 16-bit timer mode
            //and enable PCA interrupt
      CR = 1;                               //PCA timer start run
      EA = 1;
      cnt = 0;
      while (1);
}


10.6.PCA輸出高速脈沖的示例程序(C程序和匯編程序)
1.  C程序:
/*------------------------------------------------------------------------------------*/
/* --- STC MCU Limited ---------------- ---------------------------------------*/
/* --- 演示 STC 1T 系列單片機 PCA輸出高速脈沖 --------------------*/
/* --- Mobile: (86)13922809991 -----------------------------------------------*/
/* --- Fax: 86-755-82905966 ---------------------------------------------------*/
/* --- Tel: 86-755-82948412 ----------------------------------------------------*/
/* --- Web:-----------------------------------------------*/
/* 如果要在程序中使用或在文章中引用該程序, -------------------- ---*/
/* 請在程序中或文章中注明使用了STC的資料及程序 -----------*/
/*-------------------------------------------------------------------------------------*/
#include "reg51.h"
#include "intrins.h"
#define   FOSC     18432000L
#define   T100KHz (FOSC / 4 / 100000)
typedef   unsigned  char   BYTE;
typedef   unsigned  int   WORD;
/*Declare SFR associated with the PCA */
sfr   CCON          =   0xD8;                 //PCA control register
sbit   CCF0         =   CCON^0;              //PCA module-0 interrupt flag
sbit   CCF1         =   CCON^1;              //PCA module-1 interrupt flag
sbit   CR            =   CCON^6;              //PCA timer run control bit
sbit   CF             =   CCON^7;              //PCA timer overflow flag
sfr   CMOD          =   0xD9;                 //PCA mode register
sfr   CL             =   0xE9;                 //PCA base timer LOW
sfr   CH             =   0xF9;                 //PCA base timer HIGH
sfr   CCAPM0        =   0xDA;                 //PCA module-0 mode register
sfr   CCAP0L        =   0xEA;                 //PCA module-0 capture register LOW
sfr   CCAP0H       =   0xFA;                 //PCA module-0 capture register HIGH
sfr   CCAPM1        =   0xDB;                 //PCA module-1 mode register
sfr   CCAP1L        =   0xEB;                 //PCA module-1 capture register LOW
sfr   CCAP1H        =   0xFB;                 //PCA module-1 capture register HIGH
sfr   PCAPWM0       =   0xf2;
sfr   PCAPWM1       =   0xf3;
sbit   PCA_LED      =   P1^0;                 //PCA test LED
BYTE   cnt;
WORD   value;
void PCA_isr( ) interrupt 7 using 1
{
      CCF0 = 0;                           //Clear interrupt flag
      CCAP0L = value;
  CCAP0H = value >> 8;    //Update compare value
      value += T100KHz;
}
void main()
{
      CCON = 0;                           //Initial PCA control register
                                          //PCA timer stop running
                                          //Clear CF flag
                                          //Clear all module interrupt flag
      CL = 0;                             //Reset PCA base timer
      CH = 0;
      CMOD = 0x02;                        //Set PCA timer clock source as Fosc/2
                                          //Disable PCA timer overflow interrupt
      value = T100KHz;
      CCAP0L = value;                     //P1.3 output 100KHz square wave
  CCAP0H = value >> 8;              //Initial PCA module-0
      value += T100KHz;
      CCAPM0 = 0x4d;                     //PCA module-0 work in 16-bit timer mode
          //and enable PCA interrupt, toggle the output pin CCP0(P1.3)
      CR = 1;                             //PCA timer start run
      EA = 1;
      cnt = 0;
      while (1);
}

10.7.PCA輸出PWM的示例程序(C程序和匯編程序)
1.  C程序:
/*------------------------------------------------------------------------------------*/
/* --- STC MCU Limited ---------------- ---------------------------------------*/
/* --- 演示 STC 1T 系列單片機 PCA輸出PWM -------------------------*/
/* --- Mobile: (86)13922809991 -----------------------------------------------*/
/* --- Fax: 86-755-82905966 ---------------------------------------------------*/
/* --- Tel: 86-755-82948412 ----------------------------------------------------*/
/* --- Web: www.STCMCU.com -----------------------------------------------*/
/* 如果要在程序中使用或在文章中引用該程序, -------------------- ---*/
/* 請在程序中或文章中注明使用了STC的資料及程序 -----------*/
/*-------------------------------------------------------------------------------------*/
#include "reg51.h"
#include "intrins.h"
#define   FOSC     18432000L
typedef   unsigned  char   BYTE;
typedef   unsigned  int   WORD;
/*Declare SFR associated with the PCA */
sfr   CCON          =   0xD8;                 //PCA control register
sbit   CCF0         =   CCON^0;              //PCA module-0 interrupt flag
sbit   CCF1         =   CCON^1;              //PCA module-1 interrupt flag
sbit   CR            =   CCON^6;              //PCA timer run control bit
sbit   CF             =   CCON^7;              //PCA timer overflow flag
sfr   CMOD          =   0xD9;                 //PCA mode register
sfr   CL             =   0xE9;                 //PCA base timer LOW
sfr   CH             =   0xF9;                 //PCA base timer HIGH
sfr   CCAPM0        =   0xDA;                 //PCA module-0 mode register
sfr   CCAP0L        =   0xEA;                 //PCA module-0 capture register LOW
sfr   CCAP0H       =   0xFA;                 //PCA module-0 capture register HIGH
sfr   CCAPM1        =   0xDB;                 //PCA module-1 mode register
sfr   CCAP1L        =   0xEB;                 //PCA module-1 capture register LOW
sfr   CCAP1H        =   0xFB;                 //PCA module-1 capture register HIGH
sfr   PCAPWM0       =   0xf2;
sfr   PCAPWM1       =   0xf3;
void main()
{
      CCON = 0;                           //Initial PCA control register
                                          //PCA timer stop running
                                          //Clear CF flag
                                          //Clear all module interrupt flag
      CL = 0;                             //Reset PCA base timer
      CH = 0;
      CMOD = 0x02;                        //Set PCA timer clock source as Fosc/2
                                          //Disable PCA timer overflow interrupt
      CCAP0H = CCAP0L = 0x80;           //PWM0 port output 50% duty cycle square wave
      CCAPM0 = 0x42;                     //PCA module-0 work in 8-bit PWM mode
          //and no PCA interrupt
      CCAP1H = CCAP1L = 0xff;           //PWM1 port output 0% duty cycle square wave
      PCAPWM1 = 0x03;
      CCAPM1 = 0x42;                     //PCA module-1 work in 8-bit PWM mode
          //and no PCA interrupt
      CR = 1;                             //PCA timer start run
    while (1);
}





回復

使用道具 舉報

ID:376438 發表于 2019-3-23 15:56 | 顯示全部樓層
謝謝!學習了
回復

使用道具 舉報

ID:748788 發表于 2021-1-19 17:01 | 顯示全部樓層
逐一測試了4個程序,前三個沒有任何反應,最后一個P1.3輸出窄脈沖、P1.4輸出寬脈沖
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 黄色毛片在线看 | 婷婷综合五月天 | 欧美日韩久久 | 手机看片1 | 超碰最新在线 | 欧美激情综合色综合啪啪五月 | 97久久久久久久久 | 欧美 日韩 中文 | 亚洲成人高清 | 国产一区二区在线播放 | 成人国产精品久久久 | 干出白浆视频 | 秋霞国产| 欧美一级片在线观看 | 97视频久久 | 国产精品久久久久久久久久免费看 | 在线视频日韩精品 | 国产免费看 | 亚洲一区av在线 | 久久伊人精品一区二区三区 | 在线久草| 一a一片一级一片啪啪 | 日日噜噜噜夜夜爽爽狠狠视频97 | 国产欧美日韩一区 | 夏同学福利网 | 成人超碰| 男女视频在线看 | 欧美精品国产精品 | 久久里面有精品 | 嫩草伊人| 精品一区二区三区在线观看 | 羞羞视频网站免费观看 | 久久精品国产久精国产 | 欧美成人在线网站 | 四虎影院在线播放 | 荷兰欧美一级毛片 | 99久视频 | 在线色网 | 日本二区 | 谁有毛片| 在线日韩 |