| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1411 人关注过本帖
标题:单片机编程中延时中断程序中不能定义变量吗?
只看楼主 加入收藏
fzpxp
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2008-7-26
收藏
 问题点数:0 回复次数:0 
单片机编程中延时中断程序中不能定义变量吗?
延时中断程序中不能定义变量吗?如果定义了,程序好像就不执行中断程序了.如果把这个变量定义成全局变量就一切正常了,请问是这样吗?
实现的是数字从23递减,减到0后再重复循环.
如果中断中定义uint i=0;程序就不循环一直显示23
如果把uint i=0;定义成全局变量就一切正常

#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit dula=P2^6;
sbit wela=P2^7;
uchar code seg7[]=
{0X3F,0X06,0X5B,0X4F,
0X66,0X6D,0X7D,0X07,
0X7F,0X6F,0X77,0X7C,
0X39,0X5E,0X79,0X71};
uchar code seg7com[]={0Xfe,0Xfd,0Xfb,0Xf7};
uint shi;
uint ge;
uchar  temp;
uint i=0;
void delay(uint i)
{    uint j;
    for(;i>0;i--)
        for(j=100;j>0;j--);        
}

void display()            //显示
{         

        shi=temp/10;
        ge=temp%10;

       wela=1;
       P2=seg7com[0];  //选中第一个数码管位选
       wela=0;           //先选择为选再选择段选可有效防止鬼影

       dula=1;
       P0=seg7[shi];     //段选赋值
       dula=0;
       

        delay(50);
    
       wela=1;
       P2=seg7com[1];  //选中第一个数码管位选
       wela=0;

       dula=1;
       P0=seg7[ge];
       dula=0;
       

       delay(50);


}

void init()                    //初始化
{
   temp=23;
   P0=0x00;
   P2=0xff;

   EA=1;
   ET0=1;
   TMOD=0x01;
   TH0=(65536-50000)/256;
   TL0=(65536-50000)%256;
   TR0=1;

}

main()
{
  init();                //初始化
  while(1)
  {
      display();         //显示
  }
}

void intT0() interrupt 1
{    
    TH0=(65536-50000)/256;
    TL0=(65536-50000)%256;
    i++;
    if(i==20)
      { i=0;
        temp=temp-1;
               if(temp==255)             //减溢出了
            temp=23;

       }
}
搜索更多相关主题的帖子: 中断程序中 定义变量 单片机 uint 延时 
2008-07-26 17:41
快速回复:单片机编程中延时中断程序中不能定义变量吗?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016030 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved