標(biāo)題: 單片機(jī)定時器怎樣生成21-23khz的頻率 [打印本頁]

作者: lebronda    時間: 2017-12-8 19:34
標(biāo)題: 單片機(jī)定時器怎樣生成21-23khz的頻率
單片機(jī)定時器怎樣生成21-23khz的頻率,可以簡單寫一下代碼嗎

作者: angmall    時間: 2017-12-9 22:03
  1. /*-----------------------------------------------
  2.   名稱:定時器0
  3.   內(nèi)容:通過定時產(chǎn)生21-23khz的頻率方波
  4. ------------------------------------------------*/
  5. #include<reg52.h> //包含頭文件,一般情況不需要改動,頭文件包含特殊功能寄存器的定義

  6. sbit OUT=P1^2;    //定義OUT輸出端口

  7. /*------------------------------------------------
  8.                     定時器初始化子程序
  9. ------------------------------------------------*/
  10. void Init_Timer0(void)
  11. {
  12. TMOD |= 0x01;          //使用模式1,16位定時器,使用"|"符號可以在使用多個定時器時不受影響                     
  13. //TH0=0x00;              //給定初值,這里使用定時器最大值從0開始計(jì)數(shù)一直到65535溢出
  14. //TL0=0x00;
  15. EA=1;            //總中斷打開
  16. ET0=1;           //定時器中斷打開
  17. TR0=1;           //定時器開關(guān)打開
  18. }
  19. /*------------------------------------------------
  20.                     主程序
  21. ------------------------------------------------*/
  22. main()
  23. {
  24. Init_Timer0();
  25. while(1);
  26. }

  27. /*------------------------------------------------
  28.                  定時器中斷子程序
  29. ------------------------------------------------*/
  30. void Timer0_isr(void) interrupt 1 using 1
  31. {
  32. TH0=(65536-21)/256;                  //重新賦值 12M晶振計(jì)算,指令周期1uS,
  33.                               //23khz方波半個周期21uS,由于定時器
  34.                               //最大值65536 即65.536ms 所以
  35. TL0=(65536-21)%256;       //直接定時器夠用
  36.                               
  37.    OUT=~OUT;        //用示波器可看到方波輸出

  38. }

復(fù)制代碼





歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1