-
2008-05-09
51编程用定时器 中断和查询的延迟方法 - [IT]
昨天写的程序的那个延迟算法实在是太龌龊了,自己都看不下去了··
今天补上用定时器中断和查询的延迟方法。
这个是中断法
#include <AT89X51.H>
unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,0x00}; //这个码字貌似有点问题,不过先不管这些细节了····
unsigned char second;
unsigned char tcount; TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256; //分别对高位和地位赋初值
TR0=1;
ET0=1;
EA=1;
tcount=0;
second=0;
P0=dispcode[second/10];
P2=dispcode[second%10];
while(1);
}
void t0(void) interrupt 1 using 0 //使用中断向量1,如果是用的计数器1就要用中断向量4
{
tcount++;
if(tcount==20)
{
tcount=0;
second++;
if(second==60)
{
second=0;
}
P0=dispcode[second/10];
P2=dispcode[second%10];
}
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
}下面是用的查询的方法,个人感觉比中断的方法简单。
#include <AT89X51.H>
unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71,0x00};
unsigned char second;
unsigned char tcount;
void main(void)
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;
tcount=0;
second=0;
P0=dispcode[second/10];
P2=dispcode[second%10];
while(1)
{
if(TF0==1)
{
tcount++;
if(tcount==20)
{
tcount=0;
second++;
if(second==60)
{
second=0;
}
P0=dispcode[second/10];
P2=dispcode[second%10];
}
TF0=0;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
}
}
} -
准备买MP3了···
在忍受了一个学期无MP3的痛苦过后···终于决定买了····
在网上查了一下,低价位高音质的MP3还是没出什么新款,还是以我上次买的昂达V818和 蓝魔的V3为上佳产品,不过顺便看到一个消息,蓝魔的V7在4月初上市····估计价格也在200元左右··
在淘宝上搜了一下 ,居然有两家在卖V7,而且我非常怀疑上商家的可靠性···
还是决定不出手为妙····
观望中,期待中
采用了Sigmatel最新推出的3710主控芯片 的蓝魔V7

-
。。。今天从BLOG出发···
又发现了很多我不知道的估计是WEB2.0 的应用···久了不去玩这些发现自己真的落伍了· ··
而且还有个感觉就是在这个信息泛滥的时代···
我怎样才能让我时间得到最充分的利用。。。发现现在多得不能再多的信息量让我们有窒息的感觉··
抽空要去研究一下现在的WEB2.0状况,有一种强烈的被时代抛弃的感觉···







