標題: 單片機P1.0產生周期2ms方波程序 [打印本頁]

作者: Trepverter51Hei    時間: 2022-10-4 20:14
標題: 單片機P1.0產生周期2ms方波程序
假設系統(tǒng)時鐘為12MHz,設計電路并編寫程序實現(xiàn)從P1.0引腳上輸出一個周期為2ms的方波。

要在P1.0上產生周期為2ms的方波,定時器應產生1ms的定時中斷,定時時間到則在中斷服務程序中對P1.0求反。使用定時器T0,方式1定時中斷,GATE不起作用。

其中在P1.0引腳接有虛擬示波器,用來觀察產生的周期2ms的方波。

下面來計算T0初值X :
設T0的初值為X,有
      (216−X )×1×10−6=1×10−3
即    65 536−X=1 000
   得X=64 536,化為16進制數(shù)就是0xfc18。將高8位0xfc裝入TH0,低8位0x18裝入TL0。

參考單片機程序如下:
  1. #include <reg51.h>                  //頭文件reg51.h
  2. sbit P1_0=P1^0;                        //定義特殊功能寄存器P1的位變量P1_0

  3. void main(void)                        //主程序
  4. {
  5.         TMOD=0x01;                //設置T0為方式1
  6.         TR0=1;                        //接通T0
  7.         while(1)                //無限循環(huán)
  8.         {
  9.         TH0=0xfc;                //置T0高8位初值
  10.         TL0=0x18;                //置T0低8位初值
  11.         do{}while(!TF0);        //TF0為0原地循環(huán),為1則T0溢出,往下執(zhí)行
  12.         P1_0=!P1_0;                // P1.0狀態(tài)求反
  13.         TF0=0;                        //TF0標志清零
  14.         }
  15. }
復制代碼

Keil代碼與Proteus8.13仿真下載(注意只能用Proteus8.13打開): P1.0產生周期2ms方波.zip (49.17 KB, 下載次數(shù): 14)





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