基于89C52单片机的时钟程序设计~~硬件下面有图,要软件编程

作者&投稿:农肺 (若有异议请与网页底部的电邮联系)
我正在写一篇基于AT89C52单片机的数字时钟设计。下面是我的论文后面的程序图。~

思路有点问题,以上所列的这些功能不需要使用中断来处理。
中断不是不能用,但如果没有必要,能不能还是不要用,中断属于非线性的处理方式,不可控的因素太多,比如,中断嵌套,重入。如果处理不好,会极大的降低系统的可靠性。
你所列的这些功能,并不需要精确的延时。举个例子,你秒讯闪烁时,应该是亮0.5秒,灭0.5秒,要如果你亮0.45秒,灭0.55秒,再亮0.52秒,灭0.47秒,有什么关系吗?正常使用时根本不会感觉到任何差别。
比较合理的做法是 以判断定时闹钟为例,在主程序中控制主循环的总时间,比如,确保每500ms主程序循环一次。这个循环的时间不需要很准确,500ms循环一次,或者400ms循环一次,甚至再短一些也没关系,只要控制最大不超过500ms就可以。每0.5秒检查一下闹钟,然后给出提示,用户不会感到有什么不舒服的。
具体是多少时间需要综合考虑,比如你要处理定时闹钟,每1秒钟处理一次即可,如果要处理按键,这个时间可以提高到100ms,这样按键时不会有明显的迟顿。综合考虑会一般取最短的一个延时,控制主循环的延时就可以。

以我的经验,你的系统只需要开一个比较短的定时中断进行显示扫描,并在定时中断处理过程中顺便维护一个计时器用于主程序同步就足够。像这样,
static unsigned iCounter;
_isr_t0 ( void )
{
// 每5ms中断一次
iCounter+=5;
// 显示扫描
}

main( void )
{
while( 1 )
{
如果iCounter 增加了500ms,则: 读1302, 检查闹钟

}
}

你好!
你的功能没有描述清楚,是这样的效果吗,私。信。说。明。一。下。

#include "reg52.H"
#include "string.h"
#include "intrins.h"
#define uint unsigned int
#define uchar unsigned char
//模拟量测量::ADC0809
#define ADC P0
sbit ALE = P2^7;
sbit ENABLE = P2^5;
sbit START = P2^4;
sbit EOC = P3^7;
sbit CLK = P3^4;
uchar ADC0809(void)//模拟量采集
{
uchar adc=0;
ALE=1;_nop_();ALE=0;//地址锁存
START=1;_nop_();START=0;//启动转换
wait:if(EOC==0)goto wait;//等待转换结束
_nop_();ENABLE=1;_nop_();//读数据
adc=ADC;_nop_();ENABLE=0;
return adc;//返回转换值
}
void Time0(void) interrupt 1 using 0//ADC0809时钟信号
{
CLK=~CLK;
}
void Timer0Init(void)//定时器T0初始化
{
TMOD = 0x02;
TH0 = 0xce;
TL0 = 0xce;
ET0 = 1;
TR0 = 1;
}
定时器采用模式2,8位自动重装初值方式。
初值计算方法:
时钟频率设计为500kHz,则定时时间t=1/f=1/500k=50us
采用12M晶振,机器周期为1us
根据公式:定时时间t=(2^8-x)*1us
计算初值x=2^8-50/1=256-50=206=0xce
改程序是已经实现过的,希望可以帮助你。

电路连接图有没?


stc89c52与89c52区别?
STC89C52RC与普通89C52的主要区别在于STC89C52RC是一款增强型8051单片机,而普通89C52是标准的8051单片机。首先,在硬件特性上,STC89C52RC相较于普通89C52具有更高的集成度和更多的功能。STC89C52RC内置了更丰富的外设接口,如更多的I\/O端口、串口通信、定时器等,使得在开发过程中可以更加灵活地满足各种需求。...

89C52与89S52单片机在用法和功能上有哪些区别?
89C52与89S52单片机区别在于:1、89C56不支持在系统编程,89S52支持。2、89C52具有一个数据指针DPTR,而89S52具有两个数据指针DPTR0和DPTR1。3、89S52含有一个看门狗定时器,具有断电标志POF;而89C852无。单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随...

急求89C52单片机的原理及引脚功能
VCC:供电电压。GND:接地。P0口:P0口为一个8位漏级开路双向I\/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时, 被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据\/地址的第八位。 在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0...

stc89c52是什么类型的单片机芯片
STC89C52RC比普通89C52多了后缀“RC”,虽然它们都是单片机芯片,但是带有“RC”字样的单片机自带RC时钟振荡电路(有的频率可调有的频率不可调),可以在不接外部晶振就能使用,没有带“RC”这个字样的芯片一般必须安装外部晶振电路。STC89C52RC是宏晶公司的增强型MCS-51单片机,与Atmel公司的AT89C52相比,有...

stc89c52属于51单片机吗
STC89C52属于51单片机系列。STC89C52是STC公司推出的一款基于MCS-51内核的单片机,它是89C51的升级版本。STC89C52与89C51兼容,但89C51不能兼容89C52。STC89C52的P1.0和P1.1引脚具有第二功能,可以作为定时器T2的外部引脚使用。

单片机89C52有什么功能
89s52是在89C52基础上增加了在线下载程序的接口,前增加了看门狗.52比51增加了一倍的RAM和程序空间,还增加了一个定时\/计数器和中断

单片机89c51与89c52的区别
单片机的两种型号。主要区别是容量不同。at89c51最多支持4KB的程序,at89c52则最多支持8KB的程序。AT89C51简介:AT89C51是一种带4K字节FLASH存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读...

89c52单片机与89s52单片机的区别是什么
两者的区别就在于烧录程序上。AT89S52需要电脑的并口下载线,这是早期的电脑才有并口的,现在电脑连串口都没有了。所以,要烧录程序要买一条USB转ISP线,可是网上能买的USB转ISP线又是给AVR单片机烧录程序的,就没有给AT89S52烧录程序的。其次,还要用配烧录软件。就这两点,对于一般的初学者简直太难找...

单片机89c51与89c52的区别是什么?
第一,ROM89c51是4K,但89c52是8K。第二,RAM89c51是128字节,但89c52256字节\\x0d\\x0a\\x0d\\x0a就编程来说区别不大,主要是硬件资源的区别。\\x0d\\x0a区别如下:\\x0d\\x0a1、RAM空间增大:AT89C51有128字节的内部RAM,AT89C52的内部RAM扩展为256字节;\\x0d\\x0a2、内部FLASH变大:AT89C51有...

89C52单片机的电源原理是什么
89C52单片机没有电源供电,也没有电源模块。89C52内置8位中央处理单元、512字节内部数据存储器RAM、8k片内程序存储器(ROM)32个双向输入\/输出(I\/O)口、3个16位定时\/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡电路。此外,89C52还可工作于低功耗模式,可通过两种软件选择空闲和掉...

南乐县13598654304: 用C语言编写程序使89C52单片机实现数字时钟功能,急求! -
霍映医痫: /*---------------------------------------------------------------*/ /* 文件名称:SZ01.c */ /* 程序功能:带定时闹铃时钟 */ /*---------------------------------------------------------------*/ #include <AT89X51.H> /*包含器件配置文件*/ #define uchar unsigned char #define uint ...

南乐县13598654304: 求89c52单片机实现数字钟的汇编语言程序 -
霍映医痫: S_SET BIT P3.2 ;数字钟秒控制位 M_SET BIT P3.3 ;分钟控制位 H_SET BIT P3.4 ;小时控制位 SECOND EQU 30H MINUTE EQU 31H HOUR EQU 32H TCNT EQU 34H ORG 0000H SJMP START ORG 000BH LJMP INT_T0 START:MOV ...

南乐县13598654304: 基于89C52单片机电子时钟的设计,硬件图在下面~~
霍映医痫:单片机时钟c程序 89c52 1602电子时钟c程序 让单片机的数码管显示的数从0开始递增一直到255,然后重新置0,再递增,如此循环. 还是用到了将要显示的数进行百位,十位,个位的分离.#include <reg52.h> #define uint unsigned int #define ...

南乐县13598654304: 求一个基于89C52的60秒倒计时C语言程序 -
霍映医痫: 使用KeilC unsigned int iTimer=0;//将timer0或者timer1设计成100ms中断程序 {.if(iTimer)iTimer--;.}//在主程序里加入如下 {.iTimer = 600; //600x100ms = 60s while(iTimer); //等待60秒倒计时结束.}

南乐县13598654304: 单片机电子时钟编程 -
霍映医痫: SDA BIT P0.0 SCL BIT P0.1 LED0 EQU 40H LED1 EQU 41H LED2 EQU 42H LED3 EQU 43H LED4 EQU 44H LED5 EQU 45H second equ 50h minute equ 51h hour equ 52hMOV DPTR, #TABLEMOV LED0,#0MOV LED1,#5MOV LED2,#9 ...

南乐县13598654304: 89c52单片机用C语言,写三个IO分别输入信号,用计时器记录信号1到2跟2到3的两个时间!帮解释下下面程序 -
霍映医痫: 看你的程序应该是信号1,2,3依次百到来,而且只来一次吧,如果多了,程序就不对了.解释一下程序吧,1,a点检测到信号后 if(a==1) //A点检测到信号 { i=i+1; } i=1; 如果b点信号未到 则执行 if(i==1){t1++; //t1 计时 } 也就是t1开始自加,其值做...

南乐县13598654304: 利用单片机设计59秒计时器 -
霍映医痫: 我写的STC89C52的利用定时器1在六位数码管前三位显示秒表.精确到0.01秒,你可以参考下,改下IO口.不知道你的硬件设计只能给予程序参考. #include #define uint unsigned int #define uchar unsigned char sbit dula=P2^6; sbit wela=P2^7;...

南乐县13598654304: 求89c52单片机 C语言实现数字时钟程序 -
霍映医痫: result equ 40h one equ 41h ten equ 42h ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; org 0000h jmp main org 001bh jmp change org 0040h main: MOV IE,#88H ;;;;;;;;;;;;;;T1 中断 允许 mov r2,#10h ;;;;;;;;;;;;;;设置 X 秒中断一次 mov result,#...

南乐县13598654304: 单片机用89c52和时钟芯片ds1302做的时钟.c语言编程. -
霍映医痫: 这个是典型的单片机应用,你搜几个单片机教程,就能找到实例了!用1302和计数器的区别,只是增加了和1302的通信和读写功能替换掉原来对计数器的操作而已.看下1302的数据手册,再找几个教程上的实例看看就可以了.

南乐县13598654304: 我要用 89c52单片机做 一个 时钟程序 起始时间是0:00,但是 发现 定时器1的中断程序一直都不执行? -
霍映医痫: 节省一点资源,只用一个定时器就够了 而且采用自装入方式定时,可以减少计时误差 试试: #include <reg51.h> sbit wei=P2^7; sbit duan=P2^6; unsigned char times=0,times1=0,s=0,m=0,h=0,shua=0;unsigned char i_x=0; unsigned char time[4]=...

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