|
#include<reg52.h>
#include<intrins.h>
sbit led=P1^0;
sbit led1=P1^1;
unsigned char timer,timer1;
unsigned char T0RH,T0RL,T1RH,T1RL;
void Delay1ms() //@11.0592MHz
{
unsigned char i, j;
_nop_();
i = 2;
j = 199;
do
{
while (--j);
} while (--i);
}
void confgtimer0(unsigned char ms) //定時(shí)器計(jì)算時(shí)間函數(shù)且最大值是71ms
{
unsigned long tmp;
tmp=11059200/12; //計(jì)算頻率,因?yàn)橐粋(gè)機(jī)器周期等于12個(gè)時(shí)鐘周期 所以要除以12 且單位是微妙
tmp=(tmp*ms)/1000;
tmp=65536-tmp; //設(shè)置初值
T0RH=(unsigned char)(tmp>>8);
T0RL=(unsigned char) (tmp);
// IE=0x82; //IE寄存器 相當(dāng)于EA=1,ET0=1
EA=1;
ET0=1;
TMOD=0x11;//設(shè)置特殊功能寄存器,配置好工作模式 ,設(shè)置定時(shí)器0,工作方式1
//TMOD &=0xF0;
//TMOD|=0x01;
TH0=T0RH ; //設(shè)置定時(shí)時(shí)間
TL0=T0RL;
TR0=1; //打開定時(shí)器
}
void confgtimer1(unsigned char ms) //定時(shí)器計(jì)算時(shí)間函數(shù)且最大值是71ms
{
unsigned long tmp;
tmp=11059200/12; //計(jì)算頻率,因?yàn)橐粋(gè)機(jī)器周期等于12個(gè)時(shí)鐘周期 所以要除以12 且單位是微妙
tmp=(tmp*ms)/1000;
tmp=65536-tmp; //設(shè)置初值
T1RH=(unsigned char)(tmp>>8);
T1RL=(unsigned char) (tmp);
TMOD=0x11;//設(shè)置特殊功能寄存器,配置好工作模式 ,設(shè)置定時(shí)器0,工作方式1
//TMOD &=0x0F;
// TMOD|=0x10;
PT1=1;//設(shè)置中斷優(yōu)先級(jí)1
EA=1;
ET1=1;
TH1=T1RH ; //設(shè)置定時(shí)時(shí)間
TL1=T1RL;
TR1=1; //打開定時(shí)器
}
void main()
{
confgtimer0(50);
confgtimer1(50);
while(1)
{
}
}
void Confgtimer0() interrupt 1 //Confgtimer0()這里可以隨便取 去這個(gè)名字僅僅只是他表示定時(shí)器0
{
timer++;
TH0=T0RH; //重新賦值
TL0=T0RL;
if(timer==20)
{
timer=0;
led=~led;
}
}
void Confgtimer1() interrupt 3 //Confgtimer0()這里可以隨便取 去這個(gè)名字僅僅只是他表示定時(shí)器0
{
timer1++;
TH1=T1RH; //重新賦值
TL1=T1RL;
if(timer1==20)
{
timer1=0;
led1=~led1;
}
}
|
|