微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 这两个程序有什么区别么?

这两个程序有什么区别么?

时间: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++;
}

程序一的中断多处理了(if(num==200)),两程序最后的效果应该是差不多。但要精确地说,程序一所需的时间更多,因为每次中断要多处理一个指令。

第二个程序while(1)里不是也要不停的判断吗

实现功能应该一样,第一个程序while(1)的循环,是停在这里,空循环,而第二个程序,直接把中断的程序放到循环里

是。我指的只是程序一里,中断处理所花的时间更多,具体情况你可以利用keil的仿真功能看看时间是否一样

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top