1、先打开我们熟悉的单片机c51编程软件——keil,先把主方法写好。
2、然后,我们要定义两个变量。
3、接着,设定好定时器的工作方式。
4、设置中断发生的机制。
5、最后,我们要加进这几行代码进行初值的重装。
6、最后,把if语句补充完毕就可以了。
#include<reg51.h>#include<INTRINS.h>
#define u16 unsigned int
#define u8 unsigned char
/*********************************************************/
u8 ds[3] //数码管显示缓存
//共阳
code u8 w[]={0x01,0x02,0x04,0x08} //位码
code u8 d[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,}//断码
void dispaly(){//显示函数
static u8 a
if(++a>=3)a=0
P0=0xff
P2=w[a]
P0=d[ds[a]]
}
/****************************************/
void init() //初始化函数
{ TMOD=0x01
TH0=(65536-1000)/256
TL0=(65536-1000)%256
EA=1
ET0=1
}
u16 count=0 //计数
u16 V=0//速度
u16 js//计时
u8 mc=P1^1//脉冲引脚
u8 tt=0xff
void smmc(){
tt<<=1
if(mc)tt|=0x01
if((tt&0x03)==0x02){//下降沿脉冲
if(count<65535)count++
}
}
/***********************************/
void main()//主函数
{
init()//系统初始化
TR0=1 //定时器开始计时
while(1){
ds[0]=V/100%10 //计数送到数码管显示缓存中
ds[1]=V/10%10
ds[2]=V%10
smmc()
if(js>=10000){//10s
js=0
V=4*count/10+2//计算速度
count=0
}
}
}
/****************************/
void timer0() interrupt 1//1ms定时器
{
TH0=(65536-1000)/256//重载初值
TL0=(65536-1000)%256
dispaly()//显示
js++
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)