
题目1:报警信号,高分求助!!!
题目1:报警信号用P1.0输出1KHz和500Hz的音频信号驱动扬声器,作报警信号,要求1KHz信号响100ms,500Hz信号响200ms,交替进行。P1.7接一开关进...
题目1:报警信号用P1.0输出1KHz和500Hz的音频信号驱动扬声器,作报警信号,要求1KHz信号响100ms,500Hz信号响200ms,交替进行。P1.7接一开关进行控制,当开关合上响警报信号,当开关断开警告信号停止。
我不要百度已有的,要有中断系统,
每句后面有解析的,AT89C51的
回答后额外提高悬赏 展开
我不要百度已有的,要有中断系统,
每句后面有解析的,AT89C51的
回答后额外提高悬赏 展开
展开全部
#include<reg51.h>
unsigned char freqh,freql,time;
void t0isr() interrupt 1
{
TH0=freqh; //重新装载计数初值
TL0=freql;
if(P1.7==0)P1.0=~P1.0; //如果键按下,P1.0发脉冲
}
void t1isr() interrupt 3
{
TH0=(65536-50000)/256; //50毫米定时器初值
TL0=(65536-50000)%256;
time++; //50毫秒计数加1
if(time>5)time=0; //300毫秒时计数复位
}
main()
{
TMOD=0x11; //定时器工作于16位模式
TH0=(65536-500)/256; //1K
TL0=(65536-500)%256;
TH1=(65536-50000)/256; //50ms
TL1=(65536-50000)%256;
ET0=1;
ET1=1;
TR0=1;
TR1=1;
EA=1;
while(1)
{
if(time==0) //time为0时,赋值1K频率
{
freqh=(65536-500)/256;
freql=(65536-500)&256);
}
else if(time==2) //time为2即100ms到时赋值500Hz
{
freqh=(65536-1000)/256;
freql=(65536-1000)%256;
}
}
}
unsigned char freqh,freql,time;
void t0isr() interrupt 1
{
TH0=freqh; //重新装载计数初值
TL0=freql;
if(P1.7==0)P1.0=~P1.0; //如果键按下,P1.0发脉冲
}
void t1isr() interrupt 3
{
TH0=(65536-50000)/256; //50毫米定时器初值
TL0=(65536-50000)%256;
time++; //50毫秒计数加1
if(time>5)time=0; //300毫秒时计数复位
}
main()
{
TMOD=0x11; //定时器工作于16位模式
TH0=(65536-500)/256; //1K
TL0=(65536-500)%256;
TH1=(65536-50000)/256; //50ms
TL1=(65536-50000)%256;
ET0=1;
ET1=1;
TR0=1;
TR1=1;
EA=1;
while(1)
{
if(time==0) //time为0时,赋值1K频率
{
freqh=(65536-500)/256;
freql=(65536-500)&256);
}
else if(time==2) //time为2即100ms到时赋值500Hz
{
freqh=(65536-1000)/256;
freql=(65536-1000)%256;
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
答案已发送邮箱!
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询