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);
}
}
展开
 我来答
做而论道
高能答主

2014-10-31 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.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 广告
QT400-18是一种球墨铸铁材料,QT代表“球铁”,400表示其抗拉强度为400MPa,18则表示延伸率为18%。该材料属于铁素体型球墨铸铁,具有良好的韧性和塑性,能够承受高冲击振动及扭转等动、静载荷,特别在低温工作条件下具有较好的冲击性... 点击进入详情页
本回答由科博尔提供
cqs8031
推荐于2018-05-07 · TA获得超过1.8万个赞
知道大有可为答主
回答量:1.9万
采纳率:31%
帮助的人:5482万
展开全部
前面仅作变量的定义,不用赋值
建议再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秒
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式