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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3585|回復(fù): 5
收起左側(cè)

這個(gè)公式是什么意思?看不懂啊

[復(fù)制鏈接]
ID:546224 發(fā)表于 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;

最佳答案

查看完整內(nèi)容

你的count1 應(yīng)該是一個(gè)unsigned long型,一個(gè)unsigned long是4個(gè)字節(jié)。 ((unsigned char *)&count1)[3]=CCAP0L :這句話是把CCAP0L數(shù)據(jù)存放在(count1 )的第4個(gè)字節(jié)中, 同樣CCAP0H存放在(count1 )的第3個(gè)字節(jié)中, cnt存放在(count1 )的第2個(gè)字節(jié)中, 0存放在(count1 )的第1個(gè)字節(jié)中。
回復(fù)

使用道具 舉報(bào)

ID:155507 發(fā)表于 2019-9-23 16:34 | 顯示全部樓層
你的count1 應(yīng)該是一個(gè)unsigned long型,一個(gè)unsigned long是4個(gè)字節(jié)。

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

  1. /*---------------------------------------------------------------------*/
  2. /* --- STC MCU Limited ------------------------------------------------*/
  3. /* --- STC15F4K60S4 系列 PCA實(shí)現(xiàn)16位捕獲舉例---------------------------*/
  4. /* --- Mobile: (86)13922805190 ----------------------------------------*/
  5. /* --- Fax: 86-755-82905966 -------------------------------------------*/
  6. /* --- Tel: 86-755-82948412 -------------------------------------------*/
  7. /* --- Web: www.STCMCU.com --------------------------------------------*/
  8. /* 如果要在程序中使用此代碼,請?jiān)诔绦蛑凶⒚魇褂昧撕昃Э萍嫉馁Y料及程序   */
  9. /* 如果要在文章中應(yīng)用此代碼,請?jiān)谖恼轮凶⒚魇褂昧撕昃Э萍嫉馁Y料及程序   */
  10. /*---------------------------------------------------------------------*/

  11. //本示例在Keil開發(fā)環(huán)境下請選擇Intel的8058芯片型號進(jìn)行編譯
  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;             //外設(shè)功能切換寄存器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中斷標(biāo)志
  24. sbit CCF1       =   CCON^1;         //PCA模塊1中斷標(biāo)志
  25. sbit CR         =   CCON^6;         //PCA定時(shí)器運(yùn)行控制位
  26. sbit CF         =   CCON^7;         //PCA定時(shí)器溢出標(biāo)志
  27. sfr CMOD        =   0xD9;           //PCA模式寄存器
  28. sfr CL          =   0xE9;           //PCA定時(shí)器低字節(jié)
  29. sfr CH          =   0xF9;           //PCA定時(shí)器高字節(jié)
  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計(jì)時(shí)溢出次數(shù)
  44. DWORD count0;                       //記錄上一次的捕獲值
  45. DWORD count1;                       //記錄本次的捕獲值
  46. DWORD length;                       //存儲信號的時(shí)間長度(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定時(shí)器停止
  64.                                     //清除CF標(biāo)志
  65.                                     //清除模塊中斷標(biāo)志
  66.     CL = 0;                         //復(fù)位PCA寄存器
  67.     CH = 0;
  68.     CCAP0L = 0;
  69.     CCAP0H = 0;
  70.     CMOD = 0x09;                    //設(shè)置PCA時(shí)鐘源為系統(tǒng)時(shí)鐘,且使能PCA計(jì)時(shí)溢出中斷
  71.     CCAPM0 = 0x21;                  //PCA模塊0為16位捕獲模式(上升沿捕獲,可測從高電平開始的整個(gè)周期),且產(chǎn)生捕獲中斷
  72. //  CCAPM0 = 0x11;                  //PCA模塊0為16位捕獲模式(下降沿捕獲,可測從低電平開始的整個(gè)周期),且產(chǎn)生捕獲中斷
  73. //  CCAPM0 = 0x31;                  //PCA模塊0為16位捕獲模式(上升沿/下降沿捕獲,可測高電平或者低電平寬度),且產(chǎn)生捕獲中斷

  74.     CR = 1;                         //PCA定時(shí)器開始工作
  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計(jì)時(shí)溢出次數(shù)+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;   //計(jì)算兩次捕獲的差值,即得到時(shí)間長度
  98.     }
  99. }
復(fù)制代碼


回復(fù)

使用道具 舉報(bào)

ID:235200 發(fā)表于 2019-9-23 19:57 | 顯示全部樓層
count1 是一個(gè)int型數(shù)據(jù),占4個(gè)字節(jié)。((unsigned char *)&count1)[3]=CCAP0L :這句話是把CCAP0L數(shù)據(jù)存放在(count1 )的第4個(gè)字節(jié)中,同樣CCAP0H存放在(count1 )的第3個(gè)字節(jié)中,cnt存放在(count1 )的第2個(gè)字節(jié)中,0存放在(count1 )的第1個(gè)字節(jié)中.
回復(fù)

使用道具 舉報(bào)

ID:278179 發(fā)表于 2019-9-23 22:01 | 顯示全部樓層
這個(gè)不是公式,是單片機(jī)外部捕捉信號計(jì)時(shí)脈沖用的
回復(fù)

使用道具 舉報(bào)

ID:278179 發(fā)表于 2019-9-23 22:03 | 顯示全部樓層
完整的數(shù)據(jù)是,CCAP0L定時(shí)器計(jì)時(shí)脈沖低位,CCAP0H定時(shí)器計(jì)時(shí)脈沖高位,cnt定時(shí)器溢出中斷次數(shù)
回復(fù)

使用道具 舉報(bào)

ID:546224 發(fā)表于 2019-9-24 10:44 | 顯示全部樓層
angmall 發(fā)表于 2019-9-23 16:34
你的count1 應(yīng)該是一個(gè)unsigned long型,一個(gè)unsigned long是4個(gè)字節(jié)。

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

謝了,原來是這個(gè)意思。我是說套用運(yùn)算符算不通。看來要多學(xué)習(xí)算法。我用這個(gè)算法捕獲的脈沖速度很快,不知道可行不?我用的是8A4K32S2
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日韩欧美精品在线 | 激情欧美一区二区三区中文字幕 | 国产视频线观看永久免费 | 日本久久网 | 成人国产在线观看 | 视频二区在线观看 | 岛国av一区二区三区 | 国产欧美一区二区三区免费 | 亚洲精品综合 | 亚洲精品在线国产 | 久久狠狠 | 欧美三区在线观看 | 亚洲视频中文字幕 | 成人不卡一区二区 | 国产一区二区在线视频 | 高清黄色毛片 | 在线永久看片免费的视频 | 777777777亚洲妇女 | 国产一二区免费视频 | 欧美一级三级在线观看 | 日本电影韩国电影免费观看 | 久久精品视频网站 | 色婷婷精品久久二区二区蜜臂av | 久久精品a | 国产午夜精品久久久 | 久草在线影 | 一区二区三区小视频 | 国产在线拍偷自揄拍视频 | 亚洲男女视频在线观看 | 在线看片国产 | 国产一区二区三区色淫影院 | 一区二区三区av | 日本三级在线网站 | 久久久国产一区二区 | 精品免费av | 国产精品色哟哟网站 | 欧美日韩在线一区二区三区 | 国产免费一区二区三区 | 欧美久久久电影 | 亚洲福利一区 | 日日夜夜91 |