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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7595|回復: 1
打印 上一主題 下一主題
收起左側

stc51單片機PCA控制全流程命令

[復制鏈接]
跳轉到指定樓層
樓主
ID:26188 發表于 2015-2-18 01:10 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
定時器頻率
#define   T100Hz   (FOSC / 12 / 100)
方波脈沖頻率
#define   T100KHz   (FOSC / 4 / 100000)
struct PCA_
{//PCA_結構數據類型
    unsigned int        Cycle;            //頻率
    unsigned int        Match;            //重裝值容器
    unsigned int        Dou;              //擴展精度自加容器
    unsigned int        Doub;             //擴展精度終點容器
    unsigned char       PWM_Value;        //脈寬值
}PCA_0,PCA_1;                             //結構變量名
void PCA_isr() interrupt 7 using 1
{
    if(CCF0)
    {
        CCF0 = 0;                  //清中斷
        CCAP0L = PCA_0.Match;
        CCAP0H = PCA_0.Match >> 8;  //裝入比較值到比較捕獲寄存器
        PCA_0.Match += T100Hz;      //計算下次需要裝入的值
        if (PCA_0.Dou-- == 0)
            {//如果Dou自減1后為0
            PCA_0.Dou = PCA_0.Doub;  //擴展定時時間
            TI=1;
            Uart1_SendData('0');
        }
    }
    if(CCF1)
    {
        CCF1 = 0;                   //清中斷
        CCAP1L = PCA_1.Match1;
        CCAP1H = PCA_1.Match1 >> 8;  //裝入比較值到比較捕獲寄存器
        PCA_1.Match1 += T100Hz;      //計算下次需要裝入的值
        if (PCA_1.Dou-- == 0)
            {//如果Dou自減1后為0
            PCA_1.Dou = PCA_1.Doub;  //擴展定時時間
            TI=1;
            Uart1_SendData('1');
        }
    }

}
void PCA_Timers_Setup()
{
//清空PCA控制器、計數器
    CCON = 0;                 //清計數溢出CF,PCA時鐘停止,清模塊0、1中斷標記
    CL = 0;                   //清PCA16位計數器
    CH = 0;
//計數時鐘選擇
    CMOD&=0xF1;               //設置PCA 16位計數器工作在12T模式
    //CMOD|=0x02;               //設置PCA 16位計數器工作在2T模式
    //CMOD|=0x04;               //設置PCA 16位計數器使用定時器1溢出計數
    //CMOD|=0x06;               //設置PCA 16位計數器計數使用P1.2\P4.1輸入脈沖,最高速度2T
    //CMOD|=0x08;               //設置PCA 16位計數器計數使用系統時鐘全速
    //CMOD|=0x0A;               //設置PCA 16位計數器工作在4T模式
    //CMOD|=0x0C;               //設置PCA 16位計數器工作在6T模式
    //CMOD|=0x0E;               //設置PCA 16位計數器工作在8T模式
//計數溢出控制
    CMOD&=0xFE;               //禁止PCA計數器溢出產生中斷標志CF
    //CMOD|=0x01;               //允許PCA計數器溢出產生中斷標志CF
//模塊0定時器與高速方波模式設定裝入值
    PCA_0.Match = T100Hz;       //裝入100Hz重裝值
    CCAP0L = PCA_0.Match;
    CCAP0H = PCA_0.Match >> 8;  //裝入比較值到比較捕獲寄存器
    PCA_0.Match += T100Hz;      //重裝值累加
//模塊1定時器與高速方波模式設定裝入值
    PCA_1.Match = T100Hz;       //裝入100Hz重裝值
    CCAP1L = PCA_1.Match;
    CCAP1H = PCA_1.Match >> 8;  //裝入比較值到比較捕獲寄存器
    PCA_1.Match += T100Hz;      //重裝值累加
//模塊0PWM模式設定裝入值
    CCAP0H = CCAP0L = PCA_0.PWM_Value;   //輸出50%PWM波
    CCAP0H = CCAP0L = 0x00;
    PCAPWM0 = 0x00;               //固定輸出高
    CCAP0H = CCAP0L = 0xFF;
    PCAPWM0 = 0x03;               //固定輸出低
//模塊1PWM模式設定裝入值
    CCAP1H = CCAP1L = PCA_1.PWM_Value;   //輸出50%PWM波
    CCAP1H = CCAP1L = 0x00;
    PCAPWM1 = 0x00;               //固定輸出高
    CCAP1H = CCAP1L = 0xFF;
    PCAPWM1 = 0x03;               //固定輸出低

//模塊0捕獲模式設定
    CCAPM0 = 0x11;            //負捕獲,開匹配中斷CCFO
    //CCAPM0 = 0x21;            //正捕獲,開匹配中斷CCFO
    //CCAPM0 = 0x31;            //雙向捕獲,開匹配中斷CCFO
//模塊1捕獲模式設定
    CCAPM1 = 0x11;            //負捕獲,開匹配中斷CCFO
    //CCAPM1 = 0x21;            //正捕獲,開匹配中斷CCFO
    //CCAPM1 = 0x31;            //雙向捕獲,開匹配中斷CCFO
//模塊0定時器模式設定
    CCAPM0 = 0x49;            //開比較器,允許計數器值與比較器相同時產生中斷CCF0
//模塊1定時器模式設定
    CCAPM1 = 0x49;            //開比較器,允許計數器值與比較器相同時產生中斷CCF0
//模塊0高速方波模式
    CCAPM0 = 0x4D;            //與定時器模式相同情況下,TOG置1,在發生匹配時,P1.3\P4.2電位直接翻轉
//模塊1高速方波模式
    CCAPM1 = 0x4D;            //與定時器模式相同情況下,TOG置1,在發生匹配時,P1.4\P4.3電位直接翻轉
//模塊0PWM模式
    CCAPM0 = 0x42;            //允許比較器比較,選擇PWM開關,硬件產生PWM波,關閉比較中斷CCFO
//模塊1PWM模式
    CCAPM1 = 0x42;            //允許比較器比較,選擇PWM開關,硬件產生PWM波,關閉比較中斷CCF1
//公用
    CR = 1;                   //計數器開始計數
    EA = 1;                   //開總中斷
    PCA_0.Dou = 0;
    PCA_1.Dou = 0;             //中斷內擴展定時時間
}




分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩

相關帖子

回復

使用道具 舉報

沙發
ID:91009 發表于 2015-9-24 23:07 | 只看該作者
有問題請教
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美亚洲综合久久 | 欧美在线观看黄色 | 美国一级毛片a | 亚洲视频中文字幕 | 亚洲激情在线视频 | 国产亚洲一区二区三区在线观看 | 国产精品一区二区三区99 | 日韩欧美网| 欧美视频三区 | 久久se精品一区精品二区 | 成人做爰9片免费看网站 | 无毛av| 日韩欧美理论片 | 成人三级视频 | 日韩欧美一区二区三区四区 | 欧美一区二区三区免费在线观看 | 午夜男人免费视频 | 欧美一区永久视频免费观看 | 欧美一级黄色片在线观看 | 五月婷婷丁香婷婷 | 国产小网站 | 狠狠爱综合网 | 日韩视频二区 | 成人国产a| 日韩免费一二三区 | 黄色毛片在线播放 | 999www视频免费观看 | 欧美区在线 | 日韩久久综合网 | 五月婷婷丁香婷婷 | 狠狠的干狠狠的操 | 成人片网址 | 黄色a视频| 亚洲精品黑人 | 日韩在线免费视频 | 一区二区三区高清在线观看 | 欧美韩一区二区 | 中文字幕亚洲一区二区三区 | 毛片一区二区三区 | 龙珠z国语版在线观看 | 国产亚洲精品精品国产亚洲综合 |