导航:首页 > 操作系统 > 51单片机定时闹钟

51单片机定时闹钟

发布时间:2024-01-04 06:50:06

① 怎么用51单片机定时1个小时 好像是循环,具体汇编程序是怎样的

简单啊。
大致说来就是
你先开启个定时器,根据你选用的
晶振
,计算出你要用定时器定时的基准时间,
就假设是10毫秒吧。
然后给定时器的THx,TLx写入初值,开启中断,进行定时。
然后就等待中断。
在你响应中断的程序中,再次给单片机送入初值,
由于是10毫秒中断一次,因此我们设置几个“软件计数器”
比如每此中断,软甲计数器+1,
例如“软件计数器1”在中断程序中计数100次,则是10ms*100=1s
而“软件计数器2”在1的基础上继续计数100次,则是1S*100=100S
而“软件计数器3”在2的基础上继续计数36次,则是100S*36=3600S=1小时。

② 试用51单片机C51编写一电脑钟程序,定时器用方式2中断处理实现

第一问比较简单,拓展功能比较繁琐,要考虑闰年的影响,计算复杂一些。
以下是简单的时钟:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar a=0;//中断次数

uchar sec=0,min=0,hour=0;//时分秒
uchar date=1,mon=1, year=19;//年月日,年只计算后2 位,如2019,只考虑19
uchar tablemon[12]={31,28,31,30,31,30,31,31,30,31,30,31};//每月有多少天,2月按28天考虑
void main(void )//主程序
{
TMOD=0x01;// 定时器0工作方式一,方式2一次只能定时256us,中断太频繁 ,不建议使用
ET0=1;
EA=1;
TH0=(65536-50000)/256;//定时50ms
TL0=(65536-50000)%256;
TR0=1;
while(1)
{ dislpay();}//显示子程序,与硬件连接有关
}
//中断子程序
void Timer0(void) interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
a++;
if(a==20) {a=0;sec++;}//20次是1秒
if(sec==60) {sec=0;min++;}
if(min==60) {min=0;hour++;}
if(hour==24){hour=0;date++;}
if(date>tablemon[ mon-1]){date=1;mon++;}
if(mon==13){mon=1;year++;}
}

阅读全文

与51单片机定时闹钟相关的资料

热点内容
电脑与单片机无线 浏览:609
云服务器钱怎么提现 浏览:876
华为运动app怎么退出登录 浏览:794
程序员那么可爱陆漓金句 浏览:877
java如何将自己电脑设置成服务器 浏览:858
域名怎么制定服务器8080端口 浏览:665
服务器的主机如何使用 浏览:814
广讯通服务器地址怎么填 浏览:665
山东交管服务器繁忙云空间 浏览:52
51单片机热敏电阻坏了 浏览:547
远程电脑是云服务器吗 浏览:194
压缩包解压出来是音频 浏览:946
明源云erp服务器故障 浏览:158
安卓主页英文怎么写 浏览:844
2002服务器系统怎么设置分屏 浏览:72
什么情况空调压缩机电容坏 浏览:991
pagerank算法图解 浏览:318
部落决斗命令 浏览:404
单片机神经网络 浏览:323
加密的视频不小心删除怎么恢复 浏览:466