找回密碼 或 安全提問
 註冊
|註冊|登錄

伊莉討論區

搜索
發表文章前請先閱讀相關版規儲值後自動升級用戶組安全提問(回答) 和 永久尊貴會員 事宜
mega無碼神奇寶貝強姦ntr中字高中
王都アダ甘願沈淪訊連創世秩序蓮実クレ馬娘太太皇池

休閒聊天興趣交流學術文化旅遊交流飲食交流家庭事務PC GAMETV GAME
熱門線上其他線上感情感性寵物交流家族門派動漫交流貼圖分享BL/GL
音樂世界影視娛樂女性頻道潮流資訊BT下載區GB下載區下載分享短片
電腦資訊數碼產品手機交流交易廣場網站事務長篇小說體育運動時事經濟
上班一族博彩娛樂

[繁]轉生貴族憑鑑定技

[繁]怪物轉生 Re:Mons

(4月新番)[繁]神明渴

[繁]怪異與少女與神隱

(4月新番)[繁]搖曳露

[繁]怪獸八號02-
C & C++ 語言C# 語言Visual Basic 語言PHP 語言JAVA 語言
查看: 2168|回復: 1
打印上一主題下一主題

[問題]8051輸出方波 頻率變化[複製鏈接]

Rank: 3Rank: 3Rank: 3

帖子
742
積分
1175 點
潛水值
36218 米
跳轉到指定樓層
樓主
發表於 2015-3-24 01:29 PM|只看該作者|倒序瀏覽
分享使你變得更實在,可以使其他人感到快樂,分享是我們的動力。今天就來分享你的資訊、圖片或檔案吧。
本帖最後由 clvn 於 2015-3-24 01:53 PM 編輯
  1. void Timer0(void)
  2. {
  3.      IE=0x8a;
  4.      TMOD=0x01;
  5.      temp=65536-dutyTime;
  6.      TH0=temp/256;
  7.      TL0=temp%256;
  8.      TH1=256-100;
  9. }
  10. /*********************************************************************/
  11. void t0isr(void) interrupt 1
  12. {
  13.      if(workTime==0)
  14.      {
  15.           TR0=0;
  16.           temp=65536-dutyTime;
  17.           TH0=temp/256;
  18.           TL0=temp%256;
  19.           workTime=1;
  20.           pOut1=1;
  21.           TR0=1;
  22.      }
  23.      else if(workTime==1)
  24.      {
  25.           TR0=0;         
  26.           temp=65536-dutyTime;
  27.           TH0=temp/256;
  28.           TL0=temp%256;
  29.           workTime=0;
  30.           pOut1=0;
  31.           TR0=1;
  32.      }
  33. }
  34. /*********************************************************************/

  35. void DetectKeyPad(void)
  36. {
  37.         z1=0;
  38.         out1=0;
  39.         KEY_MODE = 0;

  40.         if ( KEY_MODE==1 )
  41.                    {
  42.                           z1++;
  43.                                   if(z1==1)
  44.                                   {
  45.                                        if(out1<4)out1++;
  46.                                            z1=0;
  47.                                   }
  48.                                   MODE();
  49.                    }
  50.         else
  51.         {
  52.                 z1++;
  53.                         if(z1==1)
  54.                         {
  55.                            z1=0;
  56.                         }
  57.                 MODE();        
  58.         }                        
  59. }
  60. /**********************************************************************/
  61. void MODE(void)
  62. {
  63.         dutyTime=0;
  64.          timeTemp=0;
  65.          workTime=0;
  66.          out1Tmp=out1;
  67.          pOut1=0;
  68.          pOut2=0;
  69.          pOut3=0;

  70.          while(1)
  71.      {                     
  72.                   if(out1!=out1Tmp)
  73.                   {
  74.                         if(out1==0)
  75.                                 {
  76.                      TR0=0;
  77.                              TR1=0;
  78.                                          pOut1=0;
  79.                                 }
  80.                                 else if(out1==1)
  81.                                 {
  82.                                      dutyTime=7500;
  83.                                          timeTemp=1;
  84.                                          //pOut1=1;
  85.                                 }
  86.                                 else if(out1==2)
  87.                                 {
  88.                                      dutyTime=15000;
  89.                                          //pOut1=0;
  90.                                          //pOut2=1;
  91.                                 }
  92.                                 else if(out1==3)
  93.                                 {
  94.                                      dutyTime=16000;
  95.                                          //pOut2=0;
  96.                                          //pOut3=1;
  97.                                 }
  98.                                 else if (out1==4)
  99.                                 {
  100.                                          return;
  101.                                 }

  102.                                 out1Tmp=out1;


  103.                                 if(timeTemp==0)
  104.                                 {
  105.                                          Timer0();
  106.                                          TR0=1;
  107.                                          TR1=1;
  108.                                          timeTemp=0;
  109.                                 }
  110.               }
  111.          }
  112. }
複製代碼

這是8051設定每按下按鍵 會+1 然後輸出不同頻率的方波的副程式 +到第4後 會跳回去變1
請問各位這樣語法是否有錯誤
另外我想請問 我想設定輸出一段方波後 延遲一段時間 在輸出一段方波 例如 輸出50HZ的方波 延遲1秒 然後輸出 重複這段動作  要設定在哪裡
不同的頻率延遲的時間會不同 例如 60HZ 延遲4秒


輸出1.5HZ的方波 我程式裡的dutyTime 要設定多少 因為我算過1HZ的週期會是666ms(1/f) 半波週期是333ms 為333000 這樣會比65536還大耶 這樣減掉 會負數 是對的嗎


問題有點多 請見諒  還請各位回答 感謝.......
瀏覽完整內容,請先 註冊登入會員
分享分享0收藏收藏0支持支持0

使用道具檢舉

Rank: 1

帖子
190
積分
38 點
潛水值
5620 米
頭香
發表於 2015-4-7 02:59 PM|只看該作者
如果你忘記伊莉的密碼,請在登入時按右邊出現的 '找回密碼'。輸入相關資料後送出,系統就會把密碼寄到你的E-Mail。
延遲的部分可以放在isr裡面, 加入delay time判斷, 在計算輸出duty的count, 要先確定你的isr的頻率, 這樣才能繼續計算.
若有安裝色情守門員,可用無界、自由門等軟件瀏覽伊莉。或使用以下網址瀏覽伊莉: http://www.eyny.com:81/index.php

使用道具檢舉

您需要登錄後才可以回帖 登錄 | 註冊

Powered by Discuz!

© Comsenz Inc.

重要聲明:本討論區是以即時上載留言的方式運作,對所有留言的真實性、完整性及立場等,不負任何法律責任。而一切留言之言論只代表留言者個人意見,並非本網站之立場,用戶不應信賴內容,並應自行判斷內容之真實性。於有關情形下,用戶應尋求專業意見(如涉及醫療、法律或投資等問題)。 由於本討論區受到「即時上載留言」運作方式所規限,故不能完全監察所有留言,若讀者發現有留言出現問題,請聯絡我們。有權刪除任何留言及拒絕任何人士上載留言,同時亦有不刪除留言的權利。切勿上傳和撰寫 侵犯版權(未經授權)、粗言穢語、誹謗、渲染色情暴力或人身攻擊的言論,敬請自律。本網站保留一切法律權利。
回頂部