没有合适的资源?快使用搜索试试~ 我知道了~
数字时钟程序,带原理图,protues仿真
5星 · 超过95%的资源 需积分: 14 49 下载量 40 浏览量
2010-04-25
09:03:37
上传
评论 6
收藏 122KB DOC 举报
温馨提示
试读
18页
数字时钟,c51protues仿真程序,请多多指教
资源详情
资源评论
资源推荐
#include <AT89X52.H>
#include <intrins.h>
#define REST P3_4
#define SCLK P3_7
#define DATA P3_6
unsigned char code displayCode[]={0xc0,0xf9,0xa4,0xb0,0x99,
0x92,0x82,0xf8,0x80,0x90};
unsigned char code controladdress[]={0x80,0x82,0x84,0x86,0x88,
0x8a,0x8c,0x8e,0x90,0xbe};
unsigned char hour,minute,second;
unsigned char day,month,week,year;
unsigned char clockhour,clockminute;
unsigned int num;
unsigned char select,oneminute;
bit bdata modeselect;
void delay();
void writetime();
void display(unsigned char temp,unsigned char mode);
void sound()
{
while(num<2000)
{
P3_0=0;
}
P3_0=1;
}
void initial()
{
P0=0;
TMOD=0x22;
IE=0xCF;
IT0=1;
IT1=1;
T2CON=0;
RCAP2L=0xf0;
RCAP2H=0x1f;
TH2=0x1c;
TL2=0xf0;
IP=0X06;
TH0=0x48;
TL0=0x48;
TH1=0X48;
TR0=1;
PCON=0x01;
hour=12;
minute=0;
second=0;
num=0;
select=0;
clockhour=12;
clockminute=0;
modeselect=0;
day=16;
month=8;
week=7;
year=9;
}
void interrupt0()interrupt 0 using 3
{
TR1=1;
select++;
if(select==8)
{
select=0;
}
if(select==1)
ET2=1;
oneminute=second-1;
}
void timer0()interrupt 1 using 3
{
num++;
if(num==5000)
{
num=0;
second++;
}
if(second>=60)
{
minute++;
second=0;
}
if(minute>=60)
{
hour++;
minute=0;
}
if(hour>=24)
hour=0;
}
void interrupt1()interrupt 2 using 3
{
oneminute=second-1;
switch(select)
{
case 4:{
hour++;
if(hour>=24)
hour=0;
break;
}
case 5:{
minute++;
if(minute>=60)
minute=0;
break;
}
case 6:{
second++;
if(second>=60)
second=0;
break;
}
case 2:{
clockhour++;
if(clockhour>=24)
clockhour=0;
break;
}
case 3:{
clockminute++;
if(clockminute>=60)
clockminute=0;
break;
}
default:{
modeselect=0;
ET2=!ET2;
break;
}
}
}
void timer1()interrupt 3 using 3
{
if(select)
{
if(second==oneminute)
{
select=0;
TR1=0;
}
}
}
void timer2()interrupt 5 using 3
{
sound();
TF2=0;
if(minute!=clockminute||hour!=clockhour)
TR2=0;
}
void delay()
{
unsigned char i=255;
while(--i)
{
;
}
}
void display(unsigned char temp,unsigned char mode)
{
if(temp==4||temp==2)
P0=0;
else
剩余17页未读,继续阅读
woshic8951
- 粉丝: 0
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论3