打印
[国产单片机]

新人求助,中断问题

[复制链接]
838|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
刃影|  楼主 | 2016-6-8 21:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<reg51.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit wei=P2^7;
sbit    duan=P2^6;
unsigned char leddata[]={    //数码管字形表

                0x3F,  //"0"
                0x06,  //"1"
                0x5B,  //"2"
                0x4F,  //"3"
                0x66,  //"4"
                0x6D,  //"5"
                0x7D,  //"6"
                0x07,  //"7"
                0x7F,  //"8"
                0x6F,  //"9"
                0x77,  //"A"
                0x7C,  //"B"
                0x39,  //"C"
                0x5E,  //"D"
                0x79,  //"E"
                0x71,  //"F"
                0x76,  //"H"
                0x38,  //"L"
                0x37,  //"n"
                0x3E,  //"u"
                0x73,  //"P"
                0x5C,  //"o"
                0x40,  //"-"
                0x00,  //熄灭
                0x00  //自定义

                         };
void delay(uint z)      //软件延时程序
{ uint a,b;
for(a=0;a<z;a++)
for(b=0;b<120;b++);
}
void display(uint z)    //数码管显示程序
{    uchar shi,ge;
shi=z/10;
ge=z%10;

P0=0xff;
duan=1;
P0=leddata[shi];
duan=0;
  
wei=1;
P0=0xfe;
wei=0;
delay(5);
P0=0xff;
duan=1;
P0=leddata[ge];
duan=0;
wei=1;
P0=0xfd;
wei=0;
}
void time()       //中断设置程序
{
TMOD =0x01;
TH0=0x4b;
TL0=0xfd;
ET0=1;
TR0=1;
EA=1;
}
void timer0() interrupt 1 //中断服务程序
{  uint count;
  TH0=0x4b;
  TL0=0xfd;
  count++;
  if(count==50)
  {
   P1=0;
delay(5);
count=0;   //不知道为什么程序执行到此处出现延迟,P1口LED持续亮4s左右,可是这里没有延时程序。
       //困扰许久,不得其解。希望老师能帮忙解答一下。
  }
}
void main()  //主程序
{  uchar i,j;
   uint a;
    time();
  while(1)
{
  
  P1=0x7f;
  for(i=0;i<8;i++)
  {
   for(j=0;j<50;j++)
    {
      display(a);     //数码管累加
      delay(10);
}
    P1=_cror_(P1,1);   //LED循环右移
    a++;

    if(a>98)
       a=0;
   
}

}
}

相关帖子

沙发
ddloader| | 2016-6-10 21:13 | 只看该作者
delay(5);
这个就是延时用的呀

使用特权

评论回复
板凳
刃影|  楼主 | 2016-6-14 22:42 | 只看该作者
ddloader 发表于 2016-6-10 21:13
delay(5);
这个就是延时用的呀

可是这就delay(5)只延时了5毫秒啊,实际在实验板上延时了4s多,

使用特权

评论回复
地板
刃影|  楼主 | 2016-6-15 13:11 | 只看该作者
明白了,O(∩_∩)O谢谢回答

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

8

帖子

1

粉丝