專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

51單片機(jī)定時(shí)器模式1使用

作者:佚名   來源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2013年01月15日   【字體:


特殊功能寄存器如下

 
使用TCON和TMOD
TF:溢出標(biāo)志  為1時(shí)表示溢出 需要手工置0
TR:開始計(jì)時(shí)  為1開始  為0停止
M1,M0  :工作模式   01為模式1 //16位 65536
GATE門暫不使用  置0
C/T:定時(shí)/計(jì)數(shù)
 


 
TH0,TL0:定時(shí)器0初始值
 
方法:
1、設(shè)定TMOD
2、設(shè)定初始值TH TL
3、設(shè)定TCON 開始計(jì)時(shí)
 
實(shí)例:共陽七段數(shù)碼管0-F循環(huán)顯示延時(shí)1s
七段共陽數(shù)碼管真值表
const uint8 ledcode[]={
 0xC0,  // 0
 0xF9,  // 1
 0xA4,  // 2
 0xB0,  // 3
 0x99,  // 4
 0x92,  // 5
 0x82,  // 6
 0xF8,  // 7
 0x80,  // 8
 0x90,  // 9
 0x88,  // A
 0x83,  // B
 0xC6,  // C
 0xA1,  // D
 0x86,  // E
 0x8E  // F
};
 
延時(shí)1s計(jì)算
溢出20次 每次50ms
TH0 TL0計(jì)算:
 65536-((0.05x11059200)/12)=0x4c00   TH0=0x4c  TL0=0x00
 

#include<reg52.h>

typedef unsigned char uint8;
typedef unsigned int uint16;
sbit en=P1^7;
const uint8 ledcode[]={
 0xC0,  // 0
 0xF9,  // 1
 0xA4,  // 2
 0xB0,  // 3
 0x99,  // 4
 0x92,  // 5
 0x82,  // 6
 0xF8,  // 7
 0x80,  // 8
 0x90,  // 9
 0x88,  // A
 0x83,  // B
 0xC6,  // C
 0xA1,  // D
 0x86,  // E
 0x8E  // F
};
uint8 i,j;

main()
{
 i=0;
 j=0;
 TMOD=0x01;
 TH0=0x4c;
 TL0=0x00;
 TR0=1;
 en=0;
 while(1)
 {
  if (TF0==1)  //如果溢出
  {
   TH0=0x4c;
   TL0=0x00;
   TF0=0;       //重新設(shè)定初始值 恢復(fù)狀態(tài)
   i++;
  }
  if(i==20)
  {
   i=0;
   P2=ledcode[j]&0x7f;
   j++;
  }
  if(j==16)
  {
   j=0;
  } 
 }
 
}
 

仿真:
 


 

關(guān)閉窗口

相關(guān)文章