用单片机实现一个门铃控制,编写一控制程序,门铃功能(汇编控制程序或者C控制程序)。

用单片机实现一个门铃控制,编写一控制程序,门铃功能(汇编控制程序或者C控制程序)。,第1张

单片机(Microcontrollers)诞生于1971年,经历了SCM、MCU、SoC三大阶段,早期的SCM单片机都是8位或4位的。其中最成功的是INTEL的8051,此后在8051上发展出了MCS51系列MCU系统。基于这一系统的单片机系统直到现在还在广泛使用。随着工业控制领域要求的提高,开始出现了16位单片机,但因为性价比不理想并未得到很广泛的应用。90年代后随着消费电子产品大发展,单片机技术得到了巨大提高。随着INTEL i960系列特别是后来的ARM系列的广泛应用,32位单片机迅速取代16位单片机的高端地位,并且进入主流市场。

而传统的8位单片机的性能也得到了飞速提高,处理能力比起80年代提高了数百倍。高端的32位Soc单片机主频已经超过300MHz,性能直追90年代中期的专用处理器,而普通的型号出厂价格跌落至1美元,最高端的型号也只有10美元。

当代单片机系统已经不再只在裸机环境下开发和使用,大量专用的嵌入式 *** 作系统被广泛应用在全系列的单片机上。而在作为掌上电脑和手机核心处理的高端单片机甚至可以直接使用专用的Windows和Linux *** 作系统。

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

编程如下:

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

}

}

}

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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11425694.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存