找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

利用單片機(jī)定時(shí)器定時(shí)頻率自增

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:254747 發(fā)表于 2021-10-23 10:28 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
我想寫一個頻率自增的程序 一開始我是這樣寫的 如下
void  PIN_LV_ZI_JIA()
{
      unsigned int i;
      for(i=500;i<=1000;i++)      // 頻率從500HZ自加到1KHZ
       {
         PIN_LV_UPDETE(i);        //頻率改變函數(shù)
         delayms(100;               //延時(shí)函數(shù)  每加一次所用的時(shí)間;

       }
}
按照上面寫的這樣不方便調(diào)節(jié)時(shí)間于是我就改成定時(shí)器來寫 可是我寫了很多次都不行 寫法如下

  1. void  PIN_LV_ZI_JIA()
  2. {
  3.       unsigned int i;
  4.       for(i=500;i<=1000;i++)               // 頻率從500HZ自加到1KHZ
  5.        {
  6.            if(COUNT>=50)                  //count是來自定時(shí)器的值 50次就是50ms
  7.               {
  8.                    COUNT = 0;                   //count清零
  9.                    PIN_LV_UPDETE[i];      //頻率改變函數(shù)

  10.                }
  11.        }
  12. }
復(fù)制代碼

這樣無法工作  請教大家一下  該怎么改啊     
要求就是要用定時(shí)器方便 控制時(shí)間  
頻率變化還是用 PIN_LV_UPDETE(i);  這個函數(shù)
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:401564 發(fā)表于 2021-10-23 11:51 | 只看該作者
TH1=(65535-COUNT)/256;        
TL1=(65535-COUNT)%256;
COUNT為全局變量,改變COUNT就可以改變頻率,占空比只能是50%
回復(fù)

使用道具 舉報(bào)

板凳
ID:254747 發(fā)表于 2021-10-23 13:31 | 只看該作者
Y_G_G 發(fā)表于 2021-10-23 11:51
TH1=(65535-COUNT)/256;        
TL1=(65535-COUNT)%256;
COUNT為全局變量,改變COUNT就可以改變頻率,占空比只能 ...

不不 你可能沒有明白我的意思  我的頻率直接調(diào)用 PIN_LV_MODE()就可以改變    我的頻率是通過PCA產(chǎn)生的 我是封裝好了的    我的意思非常簡單 就是通過定時(shí)器設(shè)置間隔時(shí)間讓這個 PIN_LV_MODE()傳遞的變量“i”每次加一這樣就可以輸出頻率了  
回復(fù)

使用道具 舉報(bào)

地板
ID:94031 發(fā)表于 2021-10-23 13:45 | 只看該作者
改成定時(shí)器來寫 ,但沒顯示定時(shí)器里怎么寫的,還是應(yīng)該把程序全發(fā)出來。
回復(fù)

使用道具 舉報(bào)

5#
ID:624769 發(fā)表于 2021-10-23 17:03 來自手機(jī) | 只看該作者
不將就123 發(fā)表于 2021-10-23 13:31
不不 你可能沒有明白我的意思  我的頻率直接調(diào)用 PIN_LV_MODE()就可以改變    我的頻率是通過PCA產(chǎn)生的  ...

估計(jì),沒人能明白你的意思。

就說你改好的程序吧:
你for循環(huán)里判斷 count是否大于50,這個過程很快,所以for從500到1000,這個循環(huán)過程,count根本到不了50,也就是說一次作用都起不了。
回復(fù)

使用道具 舉報(bào)

6#
ID:972853 發(fā)表于 2021-10-23 17:21 | 只看該作者
如果要求快速變化就直接在定時(shí)中斷里改下個周期時(shí)間,如果需要慢速變化就用自動重裝載定時(shí)器用于輸出,另一定時(shí)器(或其它周期中斷)去定時(shí)改變輸出定時(shí)器的重載值
回復(fù)

使用道具 舉報(bào)

7#
ID:401564 發(fā)表于 2021-10-23 23:52 | 只看該作者
不將就123 發(fā)表于 2021-10-23 13:31
不不 你可能沒有明白我的意思  我的頻率直接調(diào)用 PIN_LV_MODE()就可以改變    我的頻率是通過PCA產(chǎn)生的  ...

PCA就是PCA,你又說定時(shí)器
每隔一段時(shí)間改一下PCA的初值不就行了
回復(fù)

使用道具 舉報(bào)

8#
ID:161164 發(fā)表于 2021-10-24 00:07 | 只看該作者
你弄錯了嵌套次序了
而且不要用For
  1. void  PIN_LV_ZI_JIA()
  2. {
  3.         static unsigned int i = 500;// 頻率從500HZ自加到1KHZ
  4.         if(COUNT>=50)                  //count是來自定時(shí)器的值 50次就是50ms
  5.         {
  6.                 COUNT = 0;                   //count清零
  7.                 PIN_LV_UPDETE(i);      //頻率改變函數(shù)
  8.                 i++;
  9.                 if(i>1000)i=500;
  10.         }
  11. }
復(fù)制代碼
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表