找回密码
 注册会员
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

主程序延迟时间比中断时间长,程序不好运行怎么办?

[复制链接]
admin 发表于 2012-9-2 14:03:51 | 显示全部楼层 |阅读模式

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有账号?注册会员

×
#include<reg52.h>
sbit lcden=P2^7;
sbit rs=P2^6;
sbit rw=P2^5;
int num;
int a,b,c,d,e,f;
unsigned char code table[]="0123456789";
unsigned char code table1[]=":";
unsigned char code table2[]=" ";

void delay(int x)
{
int i,j;
for(i=110;i>0;i--)
for(j=x;j>0;j--);
}

void write_com(int com)
{
rs=0;
P0=com;
delay(10);
lcden=1;
delay(10);
lcden=0;
}

void write_data(unsigned char date)
{
rs=1;
P0=date;
delay(5);
lcden=1;
delay(5);
lcden=0;

}

void init()
{
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
}

void T1_time()interrupt 3
{
TH1=(65536-45872)/256;
TL1=(65536-45872)%256;
num++;
if(num==20)
{
num=0;

if(a==9) /*此处执行时钟的进位功能*/
{
a=-1;
b++;
}
if(b==6)
{
b=0 ;
c++;
}
if(c==10)
{
c=0;
d++;
}
if(d==6)
{
d=0;
e++;
}
if(e==10)
{
e=0;
f++;
}
if((f==2)&&(e==4))
{
f=0;
e=0;
}
a++;
}
}

void main()
{
rw=0;
init();
TMOD=0x10;
TH1=(65536-45872)/256;
TL1=(65536-45872)%256;
EA=1;
ET1=1;
TR1=1;
while(1)
{
write_com(0x80);
for(num=0;num<4;num++)
{
write_data(table2[0]);
}
write_data(table[f]);
write_data(table[e]);
write_data(table1[0]);
write_data(table[d]);
write_data(table[c]);
write_data(table1[0]);
write_data(table[b]);
write_data(table[a]);

for(num=0;num<4;num++)
{
write_data(table2[0]);
}
}
}


main函数的运行一次的时间比中断时间长,每次运行程序都停在00:00:00.怎么改才可以完成时钟的功能呢,,,,,,这是一个通过液晶显示器显示的时钟
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2024-11-25 03:02 , Processed in 0.048789 second(s), 10 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表