打印

请教单片机中断问题

[复制链接]
1409|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
所谓me|  楼主 | 2009-4-30 13:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在看郭天祥单片机视频时发现关于中断的一个问题,一直搞不明白,特向大家请教:
80c51的编程,程序如下:
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar temp,aa,num;
sbit dula=P2^6;
sbit wela=P2^7;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void delay(uint z);
void main()
{
 num=0;
 aa=0;
 TMOD=0x01;
 TH0=(65536-50000)/256;
 TL0=(65536-50000)%256;
 EA=1;
 ET0=1;
 TR0=1;
 temp=0xfe;
 P1=temp;
 dula=1;
 P0=table[0];
 dula=0;
 wela=1;
 P0=0xc0;
 wela=0;
 while(1)
 {
  delay(1000);
  temp=_crol_(temp,1);
  P1=temp;
  if(aa==40)
   {
    aa=0;
    num++;
    if(num==16)
     num=0;
    dula=1;
    P0=table[num];
    dula=0;  
   }  
 }
}
void delay(uint z)
{
 uint x,y;
 for(x=z;x>0;x--)
  for(y=110;y>0;y--);
}
void timer0() interrupt 1 
{
 TH0=(65536-50000)/256;
 TL0=(65536-50000)%256;
 aa++;
  
}

本程序实现的功能是流水灯运行的同时,数码管也在不断显示数字。
如果使用上面的程序的话,单独运行流水灯是正确的,单独运行数码管是正确的,可是放在一起确实流水灯正常运行,可是数码管却很长时间才改变一下显示数字。
而如果把主函数中的if语句放入中断函数中,程序就正常运行了。
在此向大家请教一下原因,希望帮忙详细分析一下 
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

1

帖子

0

粉丝