timer0() interrupt 1 using 1?
timer0() interrupt 1 using 1
{
TH0=0x3C;
TL0=0xB0;
Dtime=Dtime-1;
if(Dtime==0)
{
FLAG1=1;
}
}
这个函数timer0() interrupt 1 using 1是什么意思?
使用这个自函数的完成代码如下,但是不知道为什么TXD并没有正常输出,请高手帮忙看看我的程序。
#include <reg51.h>
#define uint unsigned int
#define uchar unsigned char
unsigned char bdata FLAG;
sbit FLAG1=FLAG^1;
sbit FLAG2=FLAG^2;
sbit P1_1=P1^1;
unsigned char data time,Dtime,Btime;
unsigned int fetch_rate(void);
void main(void)
{
char bdata JFLAG;
unsigned int data state,Astate,Bstate,rate;
while(1)
{
P1=0xFF;
FLAG=P1;
TXD=0;
JFLAG=FLAG> > 6;
JFLAG&=0x03;
switch(JFLAG)
{
case 0:
time=2;
Dtime=20;
break;
case 1:
time=4;
Dtime=40;
break;
case 2:
time=6;
Dtime=60;
break;
case 3:
time=8;
Dtime=80;
break;
}
Btime=Dtime;
JFLAG=FLAG> > 3;
JFLAG&=0x07;
switch(JFLAG)
{
case 0:
state=50;break;
case 1:
state=100;break;
case 2:
state=150;break;
case 3:
state=200;break;
case 4:
state=250;break;
case 5:
state=300;break;
case 6:
state=350;break;
case 7:
state=400;break;
}
FLAG1=0;
TMOD=0x51;//Timer0 is a 16-bit Timer;Timer1 is a 16-bit Counter.
TH1=0;
TL1=0;
TH0=0x3C;
TL0=0xB0;
TR0=1;
TR1=1;
ET0=1;
EA=1;
rate=fetch_rate();
if(!FLAG2)
{
Astate=state+2*state/10;
if(rate <=Astate)
{
TXD=1;
P0=0x0F;
do{
rate=fetch_rate();
}while(rate <=Astate);
TXD=0;
P0=0xF0;
}
}
else
{
Bstate=state-2*state/10;
if(rate> =Bstate)
{
TXD=1;
P0=0x0F;
do{
rate=fetch_rate();
}while(rate> =Bstate);
TXD=0;
P0=0xF0;
}
}
}
}
发表时间:2004年5月31日17:24:55