求编程高手指点
时间:10-02
整理:3721RD
点击:
门铃(利用外部中断和定时中断)可以发出8种声音的程序,
给你一个作参考
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit Key=P1^7;
sbit DoorBell=P3^0;
uint p=0;
//主程序
void main()
{
DoorBell=0;
TMOD=0x00; //T0 方式0
TH0=(8192-700)/32; //700us 定时
TL0=(8192-700)%32;
IE=0x82;
while(1)
{
if(Key==0) //按下按键启动定时器
{
TR0=1;
while(Key==0);
}
}
}
//T0 中断控制点阵屏显示
void Timer0() interrupt 1
{
DoorBell=~DoorBell;
p++;
if(p<400) //若需要拖长声音,可以调整400 和800
{
TH0=(8192-700)/32; //700us 定时
TL0=(8192-700)%32;
}
else if(p<800)
{
TH0=(8192-1000)/32; //1ms 定时
TL0=(8192-1000)%32;
}
else
{
TR0=0;
p=0;
}
}