void main(void )//主程序
{
TMOD=0x01// 定时器1工作方式一
ET0=1
EA=1
TH0=(65536-10000)/256//定时10ms
TL0=(65536-10000)%256
TR0=0//上电先不启动
while(1)
{
{
Delay1ms(10)//延时消抖
if(key1==0)
{
while(key1==0)//等待按键抬起
TR0=!TR0//启动或停止
}
}
if(key2==0&&TR0==0)//判断按键是否按下及是否在走时
{
Delay1ms(10)//延时消抖
if(key2==0)
{
while(key2==0)//等待按键抬起
a=0second=0
}
}
display(second)
}
}
//中断子程序
void Timer0(void) interrupt 1
{
TH0=(65536-10000)/256
TL0=(65536-10000)%256
a++
if(a==100 ) second++
if(second==60) second=0
}
这是两位静态显示电路,程序如下:
#include<reg51.h>
unsigned char code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}//共阳数码管段码表
unsigned char num//计数变量
unsigned char t0n//T0中断计数
void main()
{
TMOD=0x01//用T0定时,中断方式
TH0=0x3C//晶振12M,定时50ms
TL0=0xB0
IE=0x82
TR0=1
P0=0xc0
P2=0xc0
while(1)
}
//T0中断程序
void T0_int() interrupt 1
{
TH0 =0x3C
TL0 =0xB0
t0n++
if(t0n>=10)//0.5秒到
{
t0n=0
num++//加1
if(num>99)num=0
P0=tab[num/10]
P2=tab[num%10]
}
}
仿真结果
#include<reg51.h>void delay(int a)
{
while(a--)
}
main()
{
int i
for(i=0i<3i++)
{
P1=0x16
delay(30000)
P1=0x00
delay(30000)
}
P1=0x16
P2=0x35
while(1)
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)