这两个程序有什么区别么?
时间:10-02
整理:3721RD
点击:
第一个程序:
#include<reg52.h>
unsigned char num;
sbit led1=P1^0;
void main()
{
TMOD=0x00;
TH0=(8192-4607)/32;
TL0=(8192-4607)%32;
EA=1;
TR0=1;
ET0=1;
while(1);
}
void time() interrupt 1
{
TH0=(8192-4607)/32;
TL0=(8192-4607)%32;
num++;
if(num==200)
{
num=0;
led1=~led1;
}
}
第二个程序:
#include<reg52.h>unsigned char num;sbit led1=P1^0;void main(){ TMOD=0x00; TH0=(8192-4607)/32; TL0=(8192-4607)%32; EA=1; TR0=1; ET0=1; while(1){ if(num==200) { num=0; led1=~led1; } }}void time() interrupt 1{ TH0=(8192-4607)/32; TL0=(8192-4607)%32; num++;
}
#include<reg52.h>
unsigned char num;
sbit led1=P1^0;
void main()
{
TMOD=0x00;
TH0=(8192-4607)/32;
TL0=(8192-4607)%32;
EA=1;
TR0=1;
ET0=1;
while(1);
}
void time() interrupt 1
{
TH0=(8192-4607)/32;
TL0=(8192-4607)%32;
num++;
if(num==200)
{
num=0;
led1=~led1;
}
}
第二个程序:
#include<reg52.h>unsigned char num;sbit led1=P1^0;void main(){ TMOD=0x00; TH0=(8192-4607)/32; TL0=(8192-4607)%32; EA=1; TR0=1; ET0=1; while(1){ if(num==200) { num=0; led1=~led1; } }}void time() interrupt 1{ TH0=(8192-4607)/32; TL0=(8192-4607)%32; num++;
}
程序一的中断多处理了(if(num==200)),两程序最后的效果应该是差不多。但要精确地说,程序一所需的时间更多,因为每次中断要多处理一个指令。
第二个程序while(1)里不是也要不停的判断吗
实现功能应该一样,第一个程序while(1)的循环,是停在这里,空循环,而第二个程序,直接把中断的程序放到循环里
是。我指的只是程序一里,中断处理所花的时间更多,具体情况你可以利用keil的仿真功能看看时间是否一样