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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

這個公式是什么意思?看不懂啊

[復制鏈接]
跳轉到指定樓層
樓主
ID:546224 發表于 2019-9-23 16:34 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
5黑幣
((unsigned char*)&count1)[3]=CCAP0L;
((unsigned char*)&count1)[2]=CCAP0H;
((unsigned char*)&count1)[1]=cnt;
((unsigned char*)&count1)[0]=0;

最佳答案

查看完整內容

你的count1 應該是一個unsigned long型,一個unsigned long是4個字節。 ((unsigned char *)&count1)[3]=CCAP0L :這句話是把CCAP0L數據存放在(count1 )的第4個字節中, 同樣CCAP0H存放在(count1 )的第3個字節中, cnt存放在(count1 )的第2個字節中, 0存放在(count1 )的第1個字節中。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:155507 發表于 2019-9-23 16:34 | 只看該作者
你的count1 應該是一個unsigned long型,一個unsigned long是4個字節。

((unsigned char *)&count1)[3]=CCAP0L :這句話是把CCAP0L數據存放在(count1 )的第4個字節中,
同樣CCAP0H存放在(count1 )的第3個字節中,
cnt存放在(count1 )的第2個字節中,
0存放在(count1 )的第1個字節中。

  1. /*---------------------------------------------------------------------*/
  2. /* --- STC MCU Limited ------------------------------------------------*/
  3. /* --- STC15F4K60S4 系列 PCA實現16位捕獲舉例---------------------------*/
  4. /* --- Mobile: (86)13922805190 ----------------------------------------*/
  5. /* --- Fax: 86-755-82905966 -------------------------------------------*/
  6. /* --- Tel: 86-755-82948412 -------------------------------------------*/
  7. /* --- Web: www.STCMCU.com --------------------------------------------*/
  8. /* 如果要在程序中使用此代碼,請在程序中注明使用了宏晶科技的資料及程序   */
  9. /* 如果要在文章中應用此代碼,請在文章中注明使用了宏晶科技的資料及程序   */
  10. /*---------------------------------------------------------------------*/

  11. //本示例在Keil開發環境下請選擇Intel的8058芯片型號進行編譯
  12. //假定測試芯片的工作頻率為18.432MHz

  13. #include "reg51.h"
  14. #include "intrins.h"

  15. #define FOSC    18432000L

  16. typedef unsigned char BYTE;
  17. typedef unsigned int WORD;
  18. typedef unsigned long DWORD;

  19. sfr P_SW1       = 0xA2;             //外設功能切換寄存器1

  20. #define CCP_S0 0x10                 //P_SW1.4
  21. #define CCP_S1 0x20                 //P_SW1.5

  22. sfr CCON        =   0xD8;           //PCA控制寄存器
  23. sbit CCF0       =   CCON^0;         //PCA模塊0中斷標志
  24. sbit CCF1       =   CCON^1;         //PCA模塊1中斷標志
  25. sbit CR         =   CCON^6;         //PCA定時器運行控制位
  26. sbit CF         =   CCON^7;         //PCA定時器溢出標志
  27. sfr CMOD        =   0xD9;           //PCA模式寄存器
  28. sfr CL          =   0xE9;           //PCA定時器低字節
  29. sfr CH          =   0xF9;           //PCA定時器高字節
  30. sfr CCAPM0      =   0xDA;           //PCA模塊0模式寄存器
  31. sfr CCAP0L      =   0xEA;           //PCA模塊0捕獲寄存器 LOW
  32. sfr CCAP0H      =   0xFA;           //PCA模塊0捕獲寄存器 HIGH
  33. sfr CCAPM1      =   0xDB;           //PCA模塊1模式寄存器
  34. sfr CCAP1L      =   0xEB;           //PCA模塊1捕獲寄存器 LOW
  35. sfr CCAP1H      =   0xFB;           //PCA模塊1捕獲寄存器 HIGH
  36. sfr CCAPM2      =   0xDC;           //PCA模塊2模式寄存器
  37. sfr CCAP2L      =   0xEC;           //PCA模塊2捕獲寄存器 LOW
  38. sfr CCAP2H      =   0xFC;           //PCA模塊2捕獲寄存器 HIGH
  39. sfr PCA_PWM0    =   0xf2;           //PCA模塊0的PWM寄存器
  40. sfr PCA_PWM1    =   0xf3;           //PCA模塊1的PWM寄存器
  41. sfr PCA_PWM2    =   0xf4;           //PCA模塊2的PWM寄存器

  42. sbit EPCA       =   IE^6;           //PCA中斷允許位

  43. BYTE cnt;                           //存儲PCA計時溢出次數
  44. DWORD count0;                       //記錄上一次的捕獲值
  45. DWORD count1;                       //記錄本次的捕獲值
  46. DWORD length;                       //存儲信號的時間長度(count1 - count0)

  47. void main()
  48. {
  49.     ACC = P_SW1;
  50.     ACC &= ~(CCP_S0 | CCP_S1);      //CCP_S0=0 CCP_S1=0
  51.     P_SW1 = ACC;                    //(P1.2/ECI, P1.1/CCP0, P1.0/CCP1, P3.7/CCP2)
  52.    
  53. //  ACC = P_SW1;
  54. //  ACC &= ~(CCP_S0 | CCP_S1);      //CCP_S0=1 CCP_S1=0
  55. //  ACC |= CCP_S0;                  //(P3.4/ECI_2, P3.5/CCP0_2, P3.6/CCP1_2, P3.7/CCP2_2)
  56. //  P_SW1 = ACC;  
  57. //  
  58. //  ACC = P_SW1;
  59. //  ACC &= ~(CCP_S0 | CCP_S1);      //CCP_S0=0 CCP_S1=1
  60. //  ACC |= CCP_S1;                  //(P2.4/ECI_3, P2.5/CCP0_3, P2.6/CCP1_3, P2.7/CCP2_3)
  61. //  P_SW1 = ACC;  

  62.     CCON = 0;                       //初始化PCA控制寄存器
  63.                                     //PCA定時器停止
  64.                                     //清除CF標志
  65.                                     //清除模塊中斷標志
  66.     CL = 0;                         //復位PCA寄存器
  67.     CH = 0;
  68.     CCAP0L = 0;
  69.     CCAP0H = 0;
  70.     CMOD = 0x09;                    //設置PCA時鐘源為系統時鐘,且使能PCA計時溢出中斷
  71.     CCAPM0 = 0x21;                  //PCA模塊0為16位捕獲模式(上升沿捕獲,可測從高電平開始的整個周期),且產生捕獲中斷
  72. //  CCAPM0 = 0x11;                  //PCA模塊0為16位捕獲模式(下降沿捕獲,可測從低電平開始的整個周期),且產生捕獲中斷
  73. //  CCAPM0 = 0x31;                  //PCA模塊0為16位捕獲模式(上升沿/下降沿捕獲,可測高電平或者低電平寬度),且產生捕獲中斷

  74.     CR = 1;                         //PCA定時器開始工作
  75.     EPCA = 1;                       //使能PCA中斷
  76.     EA = 1;

  77.     cnt = 0;
  78.     count0 = 0;
  79.     count1 = 0;

  80.     while (1);
  81. }

  82. void PCA_isr() interrupt 7 using 1
  83. {
  84.     if (CF)
  85.     {
  86.         CF = 0;
  87.         cnt++;                      //PCA計時溢出次數+1
  88.     }
  89.     if (CCF0)
  90.     {
  91.         CCF0 = 0;
  92.         count0 = count1;            //備份上一次的捕獲值
  93.         ((BYTE *)&count1)[3] = CCAP0L;  //保存本次的捕獲值
  94.         ((BYTE *)&count1)[2] = CCAP0H;
  95.         ((BYTE *)&count1)[1] = cnt;
  96.         ((BYTE *)&count1)[0] = 0;
  97.         length = count1 - count0;   //計算兩次捕獲的差值,即得到時間長度
  98.     }
  99. }
復制代碼


回復

使用道具 舉報

板凳
ID:235200 發表于 2019-9-23 19:57 | 只看該作者
count1 是一個int型數據,占4個字節。((unsigned char *)&count1)[3]=CCAP0L :這句話是把CCAP0L數據存放在(count1 )的第4個字節中,同樣CCAP0H存放在(count1 )的第3個字節中,cnt存放在(count1 )的第2個字節中,0存放在(count1 )的第1個字節中.
回復

使用道具 舉報

地板
ID:278179 發表于 2019-9-23 22:01 | 只看該作者
這個不是公式,是單片機外部捕捉信號計時脈沖用的
回復

使用道具 舉報

5#
ID:278179 發表于 2019-9-23 22:03 | 只看該作者
完整的數據是,CCAP0L定時器計時脈沖低位,CCAP0H定時器計時脈沖高位,cnt定時器溢出中斷次數
回復

使用道具 舉報

6#
ID:546224 發表于 2019-9-24 10:44 | 只看該作者
angmall 發表于 2019-9-23 16:34
你的count1 應該是一個unsigned long型,一個unsigned long是4個字節。

((unsigned char *)&count1)[3]= ...

謝了,原來是這個意思。我是說套用運算符算不通。看來要多學習算法。我用這個算法捕獲的脈沖速度很快,不知道可行不?我用的是8A4K32S2
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美aaaa视频 | 亚洲高清视频一区二区 | 91免费观看国产 | 国产91网址 | 国产高清视频在线观看 | 国产精品1区2区3区 中文字幕一区二区三区四区 | 欧美高清视频一区 | 99精品视频免费在线观看 | 曰韩一二三区 | 国产一区二区三区四区三区四 | 国产真实精品久久二三区 | 精品国产91亚洲一区二区三区www | 美国一级毛片a | 成人av免费| 亚洲高清一区二区三区 | 亚洲国产aⅴ精品 | 日本特黄a级高清免费大片 国产精品久久性 | 国产精品无码久久久久 | 久久99这里只有精品 | 99久久精品免费看国产小宝寻花 | 综合网在线 | 久久综合亚洲 | 欧美激情欧美激情在线五月 | 欧美日韩国产一区二区三区 | 精品国产青草久久久久福利 | 玖玖精品视频 | 免费中文字幕日韩欧美 | 在线观看一区 | 中文字幕亚洲精品 | a级片在线观看 | 在线中文视频 | 激情免费视频 | 日本在线看片 | 久久精品一区二区三区四区 | 国产精品美女 | 一级美国黄色片 | 一区福利视频 | av在线播放国产 | www国产成人免费观看视频,深夜成人网 | 久久久久久亚洲精品不卡 | 在线观看欧美一区 |