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

作者&投稿:淫兔 (若有异议请与网页底部的电邮联系)
51单片机采用定时器1的方式2实现周期为1S的程序!初值设为多少?我怎么求都不对!实现不了啊?求~

定时器1的方式2是8位定时器,最大只能实现256US的定时(晶振12mhz)
定时250us的话,需4000次才够1S
定时250us初值为 256-250=6
TMOD=0X20;
TH1=6;
TL1=6;
TR1=1;//也可以到用时才启动
ET1=1;
EA=1;
设一全局变量a,中断程序里只需a++即可,主程序里判断
a是否为4000即可知定时时间是否到

楼主:
1,你首先要知道:T0,采用工作方式2最大延迟时间为256us.
2,你可以通过计算公式:初值=256-t*F/12。t为定时时间,F就是你选用的晶体频率。
3,因此,你先编写一个50us的T0中断函数,350US通过设置一个全局的变量,让定时器T0产生7次中断后清0,这样你的两个延时都兼顾了。
4,你在MAIN函数初始化时,要将工作方式为你设置的方式。
如有其它问题,你go on...........

第一问比较简单,拓展功能比较繁琐,要考虑闰年的影响,计算复杂一些。
以下是简单的时钟:
#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++;}
}


如何用c51编写51单片机控制步进电机转动程序
(52h)=50h;因为ret指令返回时,出栈的结果是高地址=(52h)=50h;而低地址=(51h)=30h;故最终结果pc值是5030h;

51单片机全称
51单片机全称MCS-51单片机。C51单片机,也称为8051单片机,是一种经典的8位嵌入式微控制器,最早由英特尔(Intel)在上世纪80年代初开发。它具有许多特性和功能,使其在各种嵌入式应用中得到广泛应用。C51单片机的架构是一种典型的8位哈佛结构架构,这意味着它具有分开的程序存储器(CodeMemory)和数据存储...

如何用keil c51建立C51工程并配置设置
如何用keil c51建立C51工程并配置设置,完整的C51工程的建立。打开keil软件,选择菜单栏中的project,New一个新的project,如图操作。然后为自己的工程命名,并选择工程的保存路径。点击保存。如图:弹出如图所示界面,选择自己的芯片型号;我们选择51单片机的。弹出如图界面,选择确定。然后新建一个文件,输入...

c51单片机的发展历史(详细一点)
二者同指MCS-51系列单片机)的单片机品种。近年来C51获得了飞速的发展,C51的发源公司INTEL由于忙于开发PC及高端微处理器而无精力继续发展自己的单片机,而由其它厂商将其发展,最典型的是PHILIPS和ATML公司,PHILIPS公司主要是改善其性能,在原来的基础上发展了高速I\/O口,A\/D转换器,PWM(脉宽调制)、WDT等...

Keil怎么连接C51仿真器啊?
5.现在就已经打开运行模式。6.单击全速运行,运行软件仿真。7.程序正在全速运行。8.仿真完成以后单击调试图标,就可以退出调试模式。keil Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil...

试用51单片机C51编写一电脑钟程序,定时器用方式2中断处理实现?
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...

单片机C51与51汇编特点概述
C语言有点,只要会C语言即可,编程简单,不需要了解太多的单片机内部结构。如果C语言编写得当,基本上可以达到汇编的编程效率。对于初学者而言,C51是很不错的选择。(3)长远发展角度社会上用C语言开发单片机的非常多,远远超过使用汇编。C语言开发51单片机的技巧和技术,同样可以使用在其他类型单片机上。

C51里面怎么对位进行操作?
51单片机有位寻址能力。SFR中,有一些位地址。C51里面,可以直接对SFR中的位地址,进行操作,如:REN = 1;TR0 = 1;EA = 1;……片内RAM中,20H~2FH,共16个单元,其中含有128个位地址。对这些位地址操作之前,先要进行变量定义,然后即可操作。

跪求单片机c51用汇编语言写的程序,功能为:8只发光二极管依次点亮,从...
单片机计算器程序代码 51单片机DA转换 Nios ii 单片机 汇编语言指令大全 汇编语言是一种 汇编语言 $ c51汇编语言题 其他类似问题2012-07-10 跪求单片机c51用汇编语言写的程序,功能为:8只发光二极管依... 4 2013-03-30 单片机汇编语言写八个灯从左至右点亮,再从右到左点亮程序。谢谢 4 2014-10-...

给51单片机编程用的C51与C语言有什么区别?
其实区别不是太多。C语言中的所有运算符,在C51中都可以用。但是C51也有特有运算符,如sbit,还有特殊的寄存器名等可以直接写。C语言中没有相关的内容。

沾化县18615545152: 用51单片机编程:电子时钟(设计电子时钟,用51单片机编程) -
卓养辰泽: 如果有问题欢迎到我空间相关文章下留言 乐于回答~~ 程序如下: ; 定义管脚 S_SET BIT P1.0 ;数字钟秒控制位 M_SET BIT P1.1 ;分钟控制位 H_SET BIT P1.2 ;小时控制位 SECOND EQU 30H MINUTE EQU 31H HOUR EQU 32H ORG 00H ...

沾化县18615545152: 用C语言编写AT89C51单片机程序,设计一个智能数字钟. -
卓养辰泽: 基本要求:1.C语言程序要求是模块化设计.2.该闹钟基于AT89C51单片机及相关外围电路进行设计.3.该闹钟有6个数码管(共阳极),可分别显示时间(时、分、秒)、及定时时间(分、秒).4.该闹钟有4个按钮,S1是切换显示按键,该键按下时可分别实现切换正常走时显示、设定走时显示、设置定时时间,启动定时,回到正常状态等功能.S2是设定键,即该键按下,将分别选中需要设定的选项.S3键是加键,即按下去表示相应选项加1.S4键是减键,即按下去表示相应的选项减1.5.该闹钟可以定时时间到,LED将发出提示闪光,且持续30s.发挥要求:1.定时时间可被打断,即打断后恢复时继续计时.2.设置闹钟报警功能;3.能切换显示年月日等信息.

沾化县18615545152: C51单片机计时器50ms程序编写 -
卓养辰泽: 12MHz晶振,经典51核是12分频,因此时钟周期为1μs. 50ms = 50000μs,因此定时器累加至溢出需要50000个周期. 因此65536 - 50000 = 15536 = 0x3CB0 因此TH0 = 0x3C,TL0 = 0xB0. 0x4C00这个初值对应的不是12MHz晶振,*而是11.0592MHz晶振.你抄错了.

沾化县18615545152: 用51单片机做一个电子时钟,请问源程序怎么写,用C++. -
卓养辰泽: #include <windows.h>#include <time.h>#include <stdlib.h>#include <iostream>#include <string> using namespace std; class SystemTime { private:int year,month,day,hour,minute,second; public:const int T;SystemTime(int t); ~SystemTime(); ...

沾化县18615545152: 用51单片机实现时钟功能程序??? -
卓养辰泽: #define uchar unsigned char //定义一下方便使用 #define uint unsigned int #define ulong unsigned long #include <reg52.h> //包括一个52标准内核的头文件uchar code zixing[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; uchar code ...

沾化县18615545152: 80c51单片机电脑钟程序设计
卓养辰泽: 以前的程序,你参考一下 /* 1、按键可以调整当时时间 2、按键可以调节定时时间 3、定时时间到继电器吸合 *8位数码管显示 时间格式格式 12-08-00 标示12点08分00秒 S1 用于小时 加1操作 S2 用于小时减1操作 S3 用于分钟 加1操作 S4 用于...

沾化县18615545152: 急需一个51单片机C语言编的时钟程序
卓养辰泽: 下面的程序我写的时候把电路图弄丢了,你自己看程序可以知道电路图的 其实不同的电路图他的程序肯定不一样.你可以依据自己的电路图修改一下程序 希望可以帮到你 #include<reg52.h>unsigned char t=0;unsigned char second=0;unsigned ...

沾化县18615545152: 单片机C51电子钟的程序怎么写 -
卓养辰泽: 我的空间里有示例程序,带Proteus仿真.

沾化县18615545152: 51单片机设计一个电子钟,如何实现闹钟功能? -
卓养辰泽: 简单啊,你肯定是用定时中断来做实时时钟的吧,每次中断计数到了秒之后,判断一下当前的时间是否等于闹钟时间,相等的话就驱动蜂鸣器响一定时间就可以了,不相等的话什么都不做

沾化县18615545152: 51单片机秒表 c语言编程 -
卓养辰泽: 使用12M得晶振,使用定时器计数,10mS中断一次,10次就是0.1秒,100次就是1秒.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网