单片机定时器定时c语言程序,单片机定时器控制电子门铃c语言程序

满意答案

00e27ab806e4881f8254fe7ae8741834.png

peter71718

推荐于 2017.10.10

00e27ab806e4881f8254fe7ae8741834.png

采纳率:47%    等级:9

已帮助:362人

图中那示波器的接法有什么用?应该是监测P2.0口和P2.3口吧。

编程如下:

#include //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定时器

}

}

}

操作说明:每当按下并保持,响铃一声。松开后再按,即重复上述状态。

00分享举报

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值