采用定时器T0对外部脉冲进行计数,每计数100个脉冲后,T0转为定时工作方式,定时1ms后 又转为
采用定时器T0对外部脉冲进行计数,每计数100个脉冲后,T0转为定时工作方式,定时1ms后又转为计数方式,如此循环不止。51单片机晶振为6MHZ,计数使用方式2实现,定时...
采用定时器T0对外部脉冲进行计数,每计数100个脉冲后,T0转为定时工作方式,定时1ms后 又转为计数方式,如此循环不止。51单片机晶振为6MHZ,计数使用方式2实现,定时使用方式1实现,编程
展开
展开全部
#include <reg51.h>
sbit key = P3^2;
unsigned char count = 0;
void Init();
void delay(unsigned int ms);
void main()
{
while(1)
{
void Init();
if(count == 100)
{
TMOD = 0x01;// 0110 计数,方式2; dingshi:0001 定时,方式1
TH0 = 0xFE;
TL0 = 0x0C; //jishu 1ms
TR0 = 1;//打开T0
ET0 = 1;
EA = 1;
count = 0;
}
}
}
void Init()
{
TMOD = 0x06;// 0110 计数,方式2; dingshi:0001 定时,方式1
IT0 = 1;//下降沿触发
EX0 = 1;
EA = 1;
}
void Interr0() interrupt 0
{
delay(1);
if(key == 0)
count ++;
}
void delay(unsigned int ms) //延时50us误差 0us
{
unsigned char a,b;
for(;ms>0;ms--)
{
for(b=1;b>0;b--)
for(a=22;a>0;a--);
}
}
目前也接触到这方面的内容,还望指正!
sbit key = P3^2;
unsigned char count = 0;
void Init();
void delay(unsigned int ms);
void main()
{
while(1)
{
void Init();
if(count == 100)
{
TMOD = 0x01;// 0110 计数,方式2; dingshi:0001 定时,方式1
TH0 = 0xFE;
TL0 = 0x0C; //jishu 1ms
TR0 = 1;//打开T0
ET0 = 1;
EA = 1;
count = 0;
}
}
}
void Init()
{
TMOD = 0x06;// 0110 计数,方式2; dingshi:0001 定时,方式1
IT0 = 1;//下降沿触发
EX0 = 1;
EA = 1;
}
void Interr0() interrupt 0
{
delay(1);
if(key == 0)
count ++;
}
void delay(unsigned int ms) //延时50us误差 0us
{
unsigned char a,b;
for(;ms>0;ms--)
{
for(b=1;b>0;b--)
for(a=22;a>0;a--);
}
}
目前也接触到这方面的内容,还望指正!
追问
我们学的是汇编语言
追答
高大上,不懂。。。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询