51单片机全局变量
#include<reg52.h>#include<intrins.h>#defineuintunsignedint#defineucharunsignedcharuch...
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar a,i; //为什么此处改成i=0就不行?
void main()
{
a=0xfe;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
while(1)
{
P0=a;
}
}
void T0_time() interrupt 0
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
i++;
if(i==20)
{
i=20;
a=_crol_(a,1);
}
} 展开
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar a,i; //为什么此处改成i=0就不行?
void main()
{
a=0xfe;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
while(1)
{
P0=a;
}
}
void T0_time() interrupt 0
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
i++;
if(i==20)
{
i=20;
a=_crol_(a,1);
}
} 展开
2个回答
展开全部
采纳答案是错误的。
变量,在开始定义时就预置一个值,是完全可行的。
有时,也是必须的。
比如一些常量的数组,谁还到主函数里面一个一个的赋值啊!
楼主的错误,可能是下面这些:
void T0_time() interrupt 0--改成interrupt 1
{
TH1=(65536-50000)/256;--改成TH0
TL1=(65536-50000)%256;--改成TL0
i++;
if(i==20)
{
i=20;------改成=0,再试试看。
a=_crol_(a,1);
}
}
变量,在开始定义时就预置一个值,是完全可行的。
有时,也是必须的。
比如一些常量的数组,谁还到主函数里面一个一个的赋值啊!
楼主的错误,可能是下面这些:
void T0_time() interrupt 0--改成interrupt 1
{
TH1=(65536-50000)/256;--改成TH0
TL1=(65536-50000)%256;--改成TL0
i++;
if(i==20)
{
i=20;------改成=0,再试试看。
a=_crol_(a,1);
}
}
科博尔
2024-10-31 广告
2024-10-31 广告
QT400-18是一种球墨铸铁材料,QT代表“球铁”,400表示其抗拉强度为400MPa,18则表示延伸率为18%。该材料属于铁素体型球墨铸铁,具有良好的韧性和塑性,能够承受高冲击振动及扭转等动、静载荷,特别在低温工作条件下具有较好的冲击性...
点击进入详情页
本回答由科博尔提供
展开全部
前面仅作变量的定义,不用赋值
建议再main函数里对i 赋值
应该:
在main中
i=0;
在T0_time() interrupt 1 (这里是1)中
i++;
if(i==20)
{
i=0;
建议再main函数里对i 赋值
应该:
在main中
i=0;
在T0_time() interrupt 1 (这里是1)中
i++;
if(i==20)
{
i=0;
追问
谢谢,我还是不太明白,这是一段定时器+软件技术的延时程序,为什么
#include
#include
#define uint unsigned int
#define uchar unsigned char
uchar a,i; //这里i=0的时候延时就不起作用了???
追答
你这样写是对的;
一开始就是写包含、定义,赋值都在程序里面写
你的程序我看得出来,是流水灯
定时器T0是50ms,i是计数器,20次为1秒
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询