#include<reg52.h>
sbit beep=P1^0 // 定义蜂鸣器
long int code table[]= // 定义发轿册罩出不同频率的各个时间长度table表,因为定义
//晶振为12MHZ,所以一个周期也正好为1US。
{
2000,4000
}
long int num1,num2
char num
void main()
{
TMOD=0x11 //定义定时器0,1工作方式1
EA=1ET0=1ET1=1
TH0=(65535-50000)/256 //装载定时器0初值,50ms为一次中断
TL0=(65535-50000)%256
TH1=(65535-1)/256 //装载定时器1初值,1us为一次中断
TL1=(65535-1)%256
TR0=1 //打开闭闹定时器0
while(1)
{
if(num1==2) //判断定时器0中断了2次,也就是100ms
{
TR0=0 //关闭定时器0
TR1=1 //打开定时器1
beep=0 //蜂鸣器报警
num1=0//让num1清零,以备再次计数
}
if(num2==table[num]) //判断当时间达到第num个秒数
{
TR1=0 //关闭姿裂定时器1
TR0=1 //打开定时器0
num2=0 //让num2清零,以备再次计数
beep=1 //关闭蜂鸣器
num++ //让num循环计数
}
if(num==2)
{
num=0
}
}
}
void T0_time()interrupt 1
{
TH0=(65535-50000)/256
TL0=(65535-50000)%256
num1++
}
void T1_time()interrupt 3
{
TH1=(65535-1000)/256
TL1=(65535-1000)%256
num2++
}
sleep()是以毫秒计算的,延时5秒是sleep(5*1000),延时5分是sleep(5*1000*60)包含的头文件看你用的什么编辑软件。我用的vc++是用包含在#include<windows.h>头文件猛州中。#include<stdio.h>
#include<windows.h>
//sleep(知斗)的头文件
main()
{
int
i
int
n=10
for(i=1i<=ni++)
{printf("%d",i)
sleep(5*1000*60)}
//这里修改延时时间
}
有些人说是用#include<dos.h>做头文件你自己试下把枝猛蔽
还用sleep的s是大写的,不是小写的。
#include <AT89X51.H>//头文件unsigned int t02s//无符号整数变量t02s
unsigned char t05ms//无符号字正闹符变量t05ms
bit flag//定义一个位
void main(void)//主函数
{
TMOD=0x01//定义定时器0的工作模式
TH0=(65536-250)/256//定时器0赋初值
TL0=(65536-250)%256
TR0=1//定时器0开始运行
ET0=1//使能定时器0中断
EA=1//打开所有中断
while(1)//程举悉罩序在这里中止,等待定时器0中断
}
void t0(void) interrupt 1 using 0//定时器0中断程序
{
TH0=(65536-250)/256//定时器0赋陆散初值
TL0=(65536-250)%256//定时器0赋初值
t02s++//t02s自加1
if(t02s==800)//如果t02s增加到了800
{
t02s=0//t02s清零
flag=~flag//定义的位取反
}
if(flag==0)//如果定义的位为零,执行下面的语句
{
P1_0=~P1_0//P1.0端口输出取反
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)