基於51單片機定時器0(或定時器1)工作方式2產生周期為1s方波的項目工程


#include <stdio.h>
#include <reg51.h>
sbit LED=P3^4;
unsigned int count=0;
  void main(void)//主函數
{
   TMOD=0x02;//定時器0工作方式2,也叫低8位初值自動重裝方式,適用於作較精確的脈沖信號發生器,定時器工作方式2與定時器其它幾種工作方式有所不同,定時器工作方式2將THx和TLx分開處理,初值存放在高8位THx中,計時或計數時只處理低8位TLx,則計時或計數最大值為2^8=256,即通過低8位TLx計時或計數達到256就溢出。當計時或計數溢出后,低8位TLx不需要重新賦初值,而是會自動將高8位THx中的初值賦給低8位TLx作為重新計時或計數初值。
   TH0=0x06;//0x06為十進制數6,作為定時器0工作方式2計時初始值,當計時溢出后,低8位TLx不需要重新賦初值,而是會自動將高8位THx中的初值賦給低8位TLx作為重新計時初值。
   TL0=0x06;//0x06為十進制數6,也就是從6開始計時。
   EA=1;//開啟定時器總中斷
   ET0=1;//開啟定時器0中斷開關
   TR0=1;//啟動定時器0
   while(1);//固定循環
  }
  void time0(void) interrupt 1//定時器0工作方式2中斷函數
{
   //以下省掉的兩行代碼就是表明了定時器工作方式2在計時或計數溢出后,低8位TLx不需要重新賦初值,而是會自動將高8位THx中的初值賦給低8位TLx作為重新計時或計數初值。
// TH0=0x06;
// TL0=0x06;
count++;
if(count==2000)//中斷次數變量為2000次,表示0.5s時間到,也表示高電平或低電平各占用周期0.5s,即一個脈沖(高低電平)周期為1s,還可以表示高低電平(即一個脈沖)頻率(計算工式:F=1/T,其中F單位為赫茲,即Hz,而T單位為秒,即s。)為1/1s=1Hz。
{
LED
=~LED;//LED點亮或熄滅

count=0;
}
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM