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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2308|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

飛思卡爾單片機(jī)初始化程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
飛思卡爾單片機(jī)AD采集初始化函數(shù),各頻率PWM輸出設(shè)置,延時(shí)函數(shù)。


  1. void SecondDelay(unsigned int x)   //define delay time program about xs
  2. {
  3. unsigned char i,j,k,m;
  4. while(x--)
  5. {
  6. for(i=0;i<10;i++)
  7. for(j=0;j<12;j++)
  8. for(k=0;k<100;k++)
  9. for(m=0;m<100;m++)
  10. {;}
  11. }
  12. }

  13. void mSecondDelay(unsigned int x)   //define delay time program about xs
  14. {
  15. unsigned char i,j,k,m;
  16. while(x--)
  17. {
  18. for(i=0;i<10;i++)
  19. for(j=0;j<12;j++)
  20. for(k=0;k<10;k++)
  21. for(m=0;m<1;m++)
  22. {;}
  23. }
  24. }



  25. void ATD0Initial(void)
  26. {

  27. ATD0CTL0=0x00; /*多通道轉(zhuǎn)換時(shí),確定ANO轉(zhuǎn)換完成后的下一個(gè)要轉(zhuǎn)換的通道號*/
  28.                 /*ATD Control Register 0
  29.                               *  0b00000000
  30.                  *    ||||||||__ WRAP0
  31.                  *    |||||||___ WRAP1
  32.                  *    ||||||____ WRAP2
  33.                  *    |||||_____ 保留
  34.                  */
  35. ATD0CTL1=0x87; /*設(shè)不使用外部觸發(fā)*/
  36.                 /* ATD Control Register 1
  37.                  *  
  38.                  *  0b10000111
  39.                  *    ||||||||__ ETRIGCH2
  40.                  *    |||||||___ ETRIGCH2
  41.                  *    ||||||____ ETRIGCH2
  42.                  *    |||||_____|
  43.                  *    ||||______|
  44.                  *    |||_______|保留
  45.                  *    ||________|
  46.                  *    |_________ ETRIGSEL(0-開放;1-禁止)
  47.                  */
  48. ATD0CTL2=0x80; /*設(shè)8通道ATD0模塊為正常工作模式,使能A/D,正常清除標(biāo)志,不使用外部觸發(fā),禁止中斷*/
  49.                 /* ATD Control Register 2
  50.                  *  
  51.                  *  0b10000000
  52.                  *    ||||||||__ ATD Sequence Complete Interrupt Flag
  53.                  *    |||||||___ ATD Sequence Complete Interrupt Enable
  54.                  *    ||||||____ External Trigger Mode Enable
  55.                  *    |||||_____ External Trigger Polarity
  56.                  *    ||||______ External Trigger Level/Edge Control
  57.                  *    |||_______ ATD Power Down inWait Mode
  58.                  *    ||________ ATD Fast Flag Clear All(0 ATD flag clearing operates normally)
  59.                  *    |_________ ATD Power Up(0 Power down ATD;1 Normal ATD functionality)
  60.                  */
  61. ATD0CTL3=0x08; /*隊(duì)列長度為1,即只轉(zhuǎn)換1個(gè)通道*/
  62.                                  /* ATD Control Register 3
  63.                  *  
  64.                  *  0b00001000
  65.                  *    ||||||||__ FRZ0
  66.                  *    |||||||___ FRZ1
  67.                  *    ||||||____ FIFO
  68.                  *    |||||_____ S1C
  69.                  *    ||||______ S2C
  70.                  *    |||_______ S4C
  71.                  *    ||________ S8C
  72.                  *    |_________ 保留
  73.                  */

  74. ATD0CTL4=0x21; /*10位精度,A/D轉(zhuǎn)換的第二階段為4個(gè)A/D轉(zhuǎn)換周期,4分頻*/
  75.                              /* ATD Control Register 4
  76.                  *  
  77.                  *  0b00100000
  78.                  *    ||||||||__ PRS0
  79.                  *    |||||||___ PRS1
  80.                  *    ||||||____ PRS2
  81.                  *    |||||_____ PRS3
  82.                  *    ||||______ PRS4
  83.                  *    |||_______ SMP0
  84.                  *    ||________ SMP1
  85.                  *    |_________ SRES8(0-10位精度;1-8位精度)
  86.                  */

  87. ATD0CTL5=0x80; /*右對齊,無符號,單通道轉(zhuǎn)換模式,選擇模擬通道0*/
  88.                                  /* ATD Control Register 5
  89.                  *  
  90.                  *  0b10000000
  91.                  *    ||||||||__ CA采樣通道0
  92.                  *    |||||||___ CB
  93.                  *    ||||||____ CC
  94.                  *    |||||_____ 保留
  95.                  *    ||||______ MULT(0-單通道采樣;1-多通道采樣)
  96.                  *    |||_______ SCAN(0-單次轉(zhuǎn)換隊(duì)列;1-連續(xù)轉(zhuǎn)換隊(duì)列)
  97.                  *    ||________ DSGN(0-無符號;1-有符號)
  98.                  *    |_________ DJM(0-左對齊;1-右對齊)
  99.                  */
  100. ATD0DIEN=0x00;         /*數(shù)字輸入允許寄存器,禁止數(shù)字輸入*/

  101. }

  102. void ATD1Initial(void)
  103. {
  104. /*AD轉(zhuǎn)換器2的設(shè)置*/

  105. ATD1CTL0=0x00; /*多通道轉(zhuǎn)換時(shí),確定ANO轉(zhuǎn)換完成后的下一個(gè)要轉(zhuǎn)換的通道號*/
  106.                 /*ATD Control Register 0
  107.                               *  0b00000000
  108.                  *    ||||||||__ WRAP0
  109.                  *    |||||||___ WRAP1
  110.                  *    ||||||____ WRAP2
  111.                  *    |||||_____ WRAP3         
  112.                  *    ||||______ 保留
  113.                  */
  114. ATD1CTL1=0x87; /*外部觸發(fā)源設(shè)置寄存器,在此設(shè)不使用外部觸發(fā)*/
  115.                 /* ATD Control Register 1
  116.                  *  
  117.                  *  0b10000111
  118.                  *    ||||||||__ ETRIGCH2
  119.                  *    |||||||___ ETRIGCH2
  120.                  *    ||||||____ ETRIGCH2
  121.                  *    |||||_____|
  122.                  *    ||||______|
  123.                  *    |||_______|保留
  124.                  *    ||________|
  125.                  *    |_________ ETRIGSEL(0-開放外部觸發(fā);1-禁止)
  126.                  */
  127.                  
  128. ATD1CTL2=0x80; /*設(shè)16通道ATD1模塊為使能A/D,正常清除標(biāo)志,不使用外部觸發(fā)*/
  129.                 /* ATD Control Register 2
  130.                  *  
  131.                  *  0b10000000
  132.                  *    ||||||||__ ATD Sequence Complete Interrupt Flag(1-有序列轉(zhuǎn)換完成中斷發(fā)生,0-無)
  133.                  *    |||||||___ ATD Sequence Complete Interrupt Enable(1-使能序列轉(zhuǎn)換完成中斷)
  134.                  *    ||||||____ External Trigger Mode Enable(0-禁止外部觸發(fā);1-使能外部觸發(fā))
  135.                  *    |||||_____ External Trigger Polarity
  136.                  *    ||||______ ETRIGLE(External Trigger Level/Edge Control)外部觸發(fā)邊沿控制
  137.                  *    |||_______ AWAI(ATD Power Down inWait Mode)0-在等待模式正常運(yùn)行,1-省電模式
  138.                  *    ||________ AFFC(ATD Fast Flag Clear All)(0 ATD flag clearing operates normally)
  139.                  *    |_________ ADPU(ATD Power Up)(0 Power down ATD;1 Normal ATD functionality)
  140.                  */
  141. ATD1CTL3=0x08; /*探制轉(zhuǎn)換序列的長度,此處設(shè)隊(duì)列長度為1,即只轉(zhuǎn)換一個(gè)通道,最大長度為16*/
  142.                 /* ATD Control Register 3
  143.                  *  
  144.                  *  0b00001000
  145.                  *    ||||||||__ FRZ0
  146.                  *    |||||||___ FRZ1
  147.                  *    ||||||____ FIFO
  148.                  *    |||||_____ S1C|1
  149.                  *    ||||______ S2C|0
  150.                  *    |||_______ S4C|0
  151.                  *    ||________ S8C|0長度為1
  152.                  *    |_________ 保留
  153.                  */
  154. ATD1CTL4=0x21; /*設(shè)置轉(zhuǎn)換精度,采樣 時(shí)間,ATD時(shí)鐘分頻,在此設(shè)10位精度,A/D轉(zhuǎn)換的第二階段為4個(gè)A/D轉(zhuǎn)換周期,4分頻*/
  155.                 /* ATD Control Register 4
  156.                  *  
  157.                  *  0b00100000
  158.                  *    ||||||||__ PRS0
  159.                  *    |||||||___ PRS1
  160.                  *    ||||||____ PRS2
  161.                  *    |||||_____ PRS3
  162.                  *    ||||______ PRS4 00000即2分頻
  163.                  *    |||_______ SMP0=1
  164.                  *    ||________ SMP1=0 4個(gè)ATD時(shí)鐘周期
  165.                  *    |_________ SRES8(0-10位精度;1-8位精度)
  166.                  */
  167. ATD1CTL5=0x80; /*設(shè)置數(shù)據(jù)格式,掃瞄方式,采樣方式,采樣通道,在此設(shè)右對齊,無符號,單次轉(zhuǎn)換隊(duì)列模式,單通道采樣,選擇模擬通道0*/
  168.                 /* ATD Control Register 5
  169.                  *  
  170.                  *  0b10000000
  171.                  *    ||||||||__ CA=0
  172.                  *    |||||||___ CB=0
  173.                  *    ||||||____ CC=0
  174.                  *    |||||_____ CD=0  采樣通道0
  175.                  *    ||||______ MULT(0-單通道采樣;1-多通道采樣)
  176.                  *    |||_______ SCAN(0-單次轉(zhuǎn)換隊(duì)列;1-連續(xù)轉(zhuǎn)換隊(duì)列)
  177.                  *    ||________ DSGN(0-無符號;1-有符號)
  178.                  *    |_________ DJM(0-左對齊;1-右對齊)
  179.                  */
  180. ATD1DIEN0=0x00;         /*數(shù)字輸入允許寄存器,禁止數(shù)字輸入*/
  181. ATD1DIEN1=0x00;         /*數(shù)字輸入允許寄存器,禁止數(shù)字輸入*/

  182. }



  183. unsigned int ATD0Sample(unsigned char ADChannel)
  184. {                           
  185.   ATD0CTL5=0x80;
  186.   ATD0CTL5+=ADChannel;                 /*ADChannel可設(shè)為0-7,則可選擇0-7中的任一通道*/
  187.   while(ATD0STAT0_SCF==0){};     /*等待當(dāng)前隊(duì)列轉(zhuǎn)換完成,當(dāng)轉(zhuǎn)換正在進(jìn)行SCF=0,則為真,一直空循環(huán)*/
  188.   ATD0STAT0_SCF=1;               /*當(dāng)置SCF為1時(shí),將使該標(biāo)志位清零*/
  189.   return ATD0DR0;
  190. }

  191. unsigned int ATD1Sample(unsigned char ADChannel)
  192. {
  193.   ATD1CTL5=0x80;
  194.   ATD1CTL5+=ADChannel;
  195.   while(ATD1STAT0_SCF==0){}; /*等待當(dāng)前隊(duì)列轉(zhuǎn)換完成,!邏輯非,當(dāng)轉(zhuǎn)換正在進(jìn)行SCF=0,則為真,一直循環(huán)*/
  196.   ATD1STAT0_SCF=1;           /*當(dāng)置SCF為1時(shí),將使該標(biāo)志位清零*/
  197.   return ATD1DR0;
  198.   
  199. }


  200. /*平均值濾波函數(shù)*/
  201. float ResultsMeanAverageFilter(unsigned char SelectATDConverter,unsigned char i)
  202. {
  203.     unsigned char count,j,k;
  204.     unsigned int valueBuf[N];
  205.     unsigned int temp;
  206.     unsigned int sum=0;
  207.    
  208.    if(SelectATDConverter==0)           /*當(dāng)使用轉(zhuǎn)換器0進(jìn)行采樣時(shí)的處理函數(shù)*/
  209.    
  210.    {
  211.    
  212.     for (count=0;count<N;count++)
  213.    {
  214.      valueBuf[count]=ATD0Sample(i);
  215.     }

  216.      for (count=1;count<N-1;count++)
  217.     {
  218.       sum+=valueBuf[count];
  219.      }
  220.       return ((float)sum/(N-2));
  221.       
  222.    }
  223.    
  224.       if(SelectATDConverter==1)           /*當(dāng)使用轉(zhuǎn)換器1進(jìn)行采樣時(shí)的處理函數(shù)*/
  225.    
  226.    {
  227.    
  228.     for (count=0;count<N;count++)
  229.    {
  230.      valueBuf[count]=ATD1Sample(i);
  231.     }

  232.      for (count=1;count<N-1;count++)
  233.     {
  234.       sum+=valueBuf[count];
  235.      }
  236.       return ((float)sum/(N-2));   
  237.    }
  238.    
  239. }
  240.         
  241. /*限幅濾波函數(shù)*/
  242. unsigned int ResultsLimiteFilter(unsigned char SelectATDConverter,unsigned char i,unsigned char A)  
  243. {

  244.     unsigned int a[2];
  245.     if(SelectATDConverter==0)           /*當(dāng)使用轉(zhuǎn)換器0進(jìn)行采樣時(shí)的處理函數(shù)*/
  246.    {         
  247.     a[0]=ATD0Sample(i);
  248.     a[1]=ATD0Sample(i);
  249.     if ((a[1]-a[0]>A)||(a[0]-a[1]>A))      
  250.     {return a[0];}
  251.     else
  252.     {return a[1];}
  253.    }
  254.    
  255.     if(SelectATDConverter==1)     /*當(dāng)使用轉(zhuǎn)換器1進(jìn)行采樣時(shí)的處理函數(shù)*/
  256.    {         
  257.     a[0]=ATD1Sample(i);
  258.     a[1]=ATD1Sample(i);
  259.     if ((a[1]-a[0]>A)||(a[0]-a[1]>A))      
  260.     {return a[0];}
  261.     else
  262.     {return a[1];}
  263.    }
  264.    
  265. }


  266. void PWM_Initial(void)
  267. {
  268.   PWMPOL=0x00;    /*PWM脈寬極性選擇,初始輸出為低電平*/
  269.   PWMCLK=0xff;    /*選擇SA,SB時(shí)鐘*/
  270.   PWMPRCLK=0x22;  /*A,B時(shí)鐘預(yù)分頻為4總線時(shí)鐘頻率*/
  271.   PWMCAE=0x00;    /*PWM波形采用左對齊模式*/
  272.   PWMCTL=0x00;    /*設(shè)置通道為獨(dú)立工作模式*/
  273.   PWMSCLA=60;     /*A的時(shí)間常數(shù)為60*/
  274.   PWMSCLB=60;
  275.   PWMPER0=100;   /*0-7通道250hz*/
  276.   PWMPER1=0x63;   /*0x63對應(yīng)數(shù)值為99*/
  277.   PWMPER2=0x63;
  278.   PWMPER3=0x63;
  279.   PWMPER4=0x63;
  280.   PWMPER5=0x63;
  281.   PWMPER6=0x63;
  282.   PWMPER7=0x63;
  283.   PWME=0xff;      /*PWM使能寄存器,使能8路PWM控制*/
  284.   PWMDTY0=100;      /*各通道占空比初始化為0*/
  285.   PWMDTY1=100;
  286.   PWMDTY2=100;
  287.   PWMDTY3=100;
  288.   PWMDTY4=100;
  289.   PWMDTY5=100;
  290.   PWMDTY6=100;
  291.   PWMDTY7=100;
  292. }

  293. void PWM_Initial0_5khz(void)
  294. {
  295.   PWMPOL=0x00;    /*PWM脈寬極性選擇,初始輸出為低電平*/
  296.   PWMCLK=0xff;    /*選擇SA,SB時(shí)鐘*/
  297.   PWMPRCLK=0x00;  /*A,B時(shí)鐘預(yù)分頻為0總線時(shí)鐘頻率*/
  298.   PWMCAE=0x00;    /*PWM波形采用左對齊模式*/
  299.   PWMCTL=0x00;    /*設(shè)置通道為獨(dú)立工作模式*/
  300.   PWMSCLA=60;     /*A的時(shí)間常數(shù)為60*/
  301.   PWMSCLB=60;
  302.   PWMPER0=100;   /*0-7通道1khz*/
  303.   PWMPER1=100;   /*0x63對應(yīng)數(shù)值為99*/
  304.   PWMPER2=100;
  305.   PWMPER3=100;
  306.   PWMPER4=100;
  307.   PWMPER5=100;
  308.   PWMPER6=100;
  309.   PWMPER7=100;
  310.   PWME=0xff;      /*PWM使能寄存器,使能8路PWM控制*/
  311.   PWMDTY0=100;      /*各通道占空比初始化為0*/
  312.   PWMDTY1=100;
  313.   PWMDTY2=100;
  314.   PWMDTY3=100;
  315.   PWMDTY4=100;
  316.   PWMDTY5=100;
  317.   PWMDTY6=100;
  318.   PWMDTY7=100;
  319. }


  320. void PWM_Initial2khz(void)
  321. {
  322.   PWMPOL=0x00;    /*PWM脈寬極性選擇,初始輸出為低電平*/
  323.   PWMCLK=0xff;    /*選擇SA,SB時(shí)鐘*/
  324.   PWMPRCLK=0x00;  /*A,B時(shí)鐘預(yù)分頻為0總線時(shí)鐘頻率*/
  325.   PWMCAE=0x00;    /*PWM波形采用左對齊模式*/
  326.   PWMCTL=0x00;    /*設(shè)置通道為獨(dú)立工作模式*/
  327.   PWMSCLA=30;     /*A的時(shí)間常數(shù)為30*/
  328.   PWMSCLB=30;
  329.   PWMPER0=100;   /*0-7通道1khz*/
  330.   PWMPER1=100;   /*0x63對應(yīng)數(shù)值為99*/
  331.   PWMPER2=100;
  332.   PWMPER3=100;
  333.   PWMPER4=100;
  334.   PWMPER5=100;
  335.   PWMPER6=100;
  336.   PWMPER7=100;
  337.   PWME=0xff;      /*PWM使能寄存器,使能8路PWM控制*/
  338.   PWMDTY0=100;      /*各通道占空比初始化為0*/
  339.   PWMDTY1=100;
  340.   PWMDTY2=100;
  341.   PWMDTY3=100;
  342.   PWMDTY4=100;
  343.   PWMDTY5=100;
  344.   PWMDTY6=100;
  345.   PWMDTY7=100;
  346. }

  347. void PWM_Initial3khz(void)
  348. {
  349.   PWMPOL=0x00;    /*PWM脈寬極性選擇,初始輸出為低電平*/
  350.   PWMCLK=0xff;    /*選擇SA,SB時(shí)鐘*/
  351.   PWMPRCLK=0x00;  /*A,B時(shí)鐘預(yù)分頻為0總線時(shí)鐘頻率*/
  352.   PWMCAE=0x00;    /*PWM波形采用左對齊模式*/
  353.   PWMCTL=0x00;    /*設(shè)置通道為獨(dú)立工作模式*/
  354.   PWMSCLA=20;     /*A的時(shí)間常數(shù)為60*/
  355.   PWMSCLB=20;
  356.   PWMPER0=100;   /*0-7通道1khz*/
  357.   PWMPER1=100;   /*0x63對應(yīng)數(shù)值為99*/
  358.   PWMPER2=100;
  359.   PWMPER3=100;
  360.   PWMPER4=100;
  361.   PWMPER5=100;
  362.   PWMPER6=100;
  363.   PWMPER7=100;
  364.   PWME=0xff;      /*PWM使能寄存器,使能8路PWM控制*/
  365.   PWMDTY0=100;      /*各通道占空比初始化為0*/
  366.   PWMDTY1=100;
  367.   PWMDTY2=100;
  368.   PWMDTY3=100;
  369.   PWMDTY4=100;
  370.   PWMDTY5=100;
  371.   PWMDTY6=100;
  372.   PWMDTY7=100;
  373. }

  374. void PWM_Initial4khz(void)
  375. {
  376.   PWMPOL=0x00;    /*PWM脈寬極性選擇,初始輸出為低電平*/
  377.   PWMCLK=0xff;    /*選擇SA,SB時(shí)鐘*/
  378.   PWMPRCLK=0x00;  /*A,B時(shí)鐘預(yù)分頻為0總線時(shí)鐘頻率*/
  379.   PWMCAE=0x00;    /*PWM波形采用左對齊模式*/
  380.   PWMCTL=0x00;    /*設(shè)置通道為獨(dú)立工作模式*/
  381.   PWMSCLA=15;     /*A的時(shí)間常數(shù)為60*/
  382.   PWMSCLB=15;
  383.   PWMPER0=100;   /*0-7通道1khz*/
  384.   PWMPER1=100;   /*0x63對應(yīng)數(shù)值為99*/
  385.   PWMPER2=100;
  386.   PWMPER3=100;
  387.   PWMPER4=100;
  388.   PWMPER5=100;
  389.   PWMPER6=100;
  390.   PWMPER7=100;
  391.   PWME=0xff;      /*PWM使能寄存器,使能8路PWM控制*/
  392.   PWMDTY0=100;      /*各通道占空比初始化為0*/
  393.   PWMDTY1=100;
  394.   PWMDTY2=100;
  395.   PWMDTY3=100;
  396.   PWMDTY4=100;
  397.   PWMDTY5=100;
  398.   PWMDTY6=100;
  399.   PWMDTY7=100;
  400. }

復(fù)制代碼



頭文件51hei下載地址:
SubFunctions.7z (2.88 KB, 下載次數(shù): 2)
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产精品高潮呻吟久久aⅴ码 | 青娱乐自拍 | 日韩一区二区黄色片 | 国产一区二区小视频 | 欧美国产精品 | 一区二区免费 | avhd101在线成人播放 | 欧美精品一区二区三区在线 | 亚欧精品| 久久久久一区二区 | 黄色毛片免费 | 国产一区二区三区精品久久久 | 国产精品久久国产精品 | 精品国产91乱码一区二区三区 | 欧美精品久久久 | 久久久www成人免费无遮挡大片 | 精品国产一区二区国模嫣然 | 欧美午夜精品久久久久久浪潮 | 在线播放国产一区二区三区 | 亚洲男人天堂 | 久草资源| 一级片av| 东方伊人免费在线观看 | 国产精品久久久久久久久久久久冷 | 免费视频二区 | 久久99网| 波多野结衣先锋影音 | 免费看淫片 | 91看片免费 | 久久精品免费一区二区 | 欧美在线一区二区视频 | 欧美精品福利视频 | 在线精品亚洲欧美日韩国产 | 国产成人精品在线播放 | 一级在线观看 | 亚洲iv一区二区三区 | 国产成人精品免费视频大全最热 | 国产91精品久久久久久久网曝门 | 精品国产18久久久久久二百 | 91视视频在线观看入口直接观看 | 日韩欧美一区二区三区四区 |