编程如下:
#include <reg52.h> //52系列头文件
#define uchar unsigned char //变量类型宏定义
#define uint unsigned int
sbit Key = P2^0 //按键位声明
sbit Bell = P2^3 //门铃位声明
uint p //中断次数变量
void main() //主程序
{
TMOD = 0x00 //设置T0工作于饥芦方式0
TH0 = (8192-700)/租肢桐32 //T0计数器装入定时700us初值
TL0 = (8192-700)%32
IE = 0x82 //开总中断,开T0中断
if(Key==0) //如果键被按下
{
TR0 = 1 //启动T0定时器计时
}
while(Key==0) //等待按键松开
}
void Timer0() interrupt 1 //T0中断服务子程序
{
Bell = ~Bell //每次中断发生时,门铃弊坦状态取反
p++ //中断计次值加1
if(p<=400) //如果中断<=400次,
{
TH0 = (8192-700)/32 //重装700us定时初值
TL0 = (8192-700)%32
}
if(p>400) //如果中断次数>400
{
TH0 = (8192-1000)/32 //则重装定时 1ms 初值
TL0 = (8192-1000)%32
if(p==1000) //如果中断次数 =800次
{
P = 0 //中断计数值归0
TR0 = 0 //关闭T0定时器
}
}
}
*** 作说明:每当按下并保持,响铃一声。松开后再按,即重复上述状态。
#include <搭运基知谨reg51.h>悄辩
void main()
{
if(P3^2 ==1)
{
P1^4 =1
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)