当前位置:
工控论坛
> >
产品
>
嵌入式系统
>
单片机
我要发帖
求助:单片机编程
点击:
1240
| 回复:
19
猎隼
关注
私信
精华:1帖
求助:1帖
帖子:151帖 | 1661回
年度积分:0
历史总积分:8983
注册:2005年9月28日
发表于:2005-10-06 11:13:00
楼主
我是一个51单片机初学者,我在练习编程的时候有一些问题不知是何原因,请大家帮忙解释一下,我用的是KEIL软件,其中部分内容如下: #include<at89x51.h> #include<stdio.h> .... unsigend int a; void main() { while(a=0;a<50000;a++); P0_0=1; while(a=0;a<50000;a++); P0_0=0; } 我希望我的这个程序只让P0_0反复动作一次,但却往复动作,我考虑我在主函数当中没有其它的循环语句,不应该有这个现象百思,不得其解。
分享到:
收藏
邀请回答
回复楼主
举报
周公
关注
私信
精华:10帖
求助:0帖
帖子:119帖 | 5549回
年度积分:0
历史总积分:6446
注册:2002年11月26日
发表于:2005-10-06 17:46:00
1楼
在程序末尾加一个死循环
回复
引用
举报
wcb327
关注
私信
精华:0帖
求助:0帖
帖子:3帖 | 5回
年度积分:0
历史总积分:14
注册:2005年9月23日
发表于:2005-10-10 10:16:00
2楼
主程序是循环执行的
回复
引用
举报
IORY
关注
私信
精华:0帖
求助:0帖
帖子:0帖 | 6回
年度积分:0
历史总积分:6
注册:2005年10月29日
发表于:2005-10-29 22:19:00
3楼
写成这样:(另:请楼主以后写程序的时候严谨一点,"unsigend int a;"是不对的,应该是:"unsigned int a;",还有:是"for(a=0;a<50000;a++)"而不是"while(a=0;a<50000;a++)"
#include
#include
....
unsigned int a;
void main()
{
while(1)
{
for(a=0;a<50000;a++)
P0_0=1;
for(a=0;a<50000;a++)
P0_0=0;
}
}
回复
引用
举报
亦云人云
关注
私信
精华:5帖
求助:0帖
帖子:102帖 | 2351回
年度积分:0
历史总积分:3114
注册:2004年11月10日
发表于:2005-10-29 23:16:00
4楼
这样的小例子,前后两个程序对照,在加上[color=#FF0000]周工[/color]和[color=#FF0000]wcb327[/color]的提示,非常圆满,我想应该列入[color=#FF0000]精华[/color]。
回复
引用
举报
IORY
关注
私信
精华:0帖
求助:0帖
帖子:0帖 | 6回
年度积分:0
历史总积分:6
注册:2005年10月29日
发表于:2005-10-30 22:15:00
5楼
不是吧?!这也能列入精华?!其实,MAIN函数里面还可以写成这样:
void main()
{
unsigned int a=0;
while(1)
{
for(;a<50000;a++)
P0_0=1;
for(;a>0;a--)
P0_0=0;
}
}
这样,就可以在while的死循环里减少两次对a赋0值,程序可以精简一点.
回复
引用
举报
nRFxx
关注
私信
精华:0帖
求助:0帖
帖子:3帖 | 7回
年度积分:0
历史总积分:18
注册:2004年1月03日
发表于:2005-10-31 23:21:00
6楼
unsigned int a;
void main()
{
while(1)
{
for(a=0;a<50000;a++)
P0_0=1;
for(a=0;a<50000;a++)
P0_0=0;
}
}
回复
引用
举报
motronking
关注
私信
精华:0帖
求助:0帖
帖子:6帖 | 86回
年度积分:0
历史总积分:113
注册:2005年4月06日
发表于:2005-11-09 22:22:00
7楼
如用中断:
sbit P0_0=P0^0;
void time()interrupt 2 using 2
{
P0_0=!P0_0;
TH0=...
TL0=...//由你需要的时间间隔(P0_0=!P0_0)
}
void main()
{
TMOD=0x01;
P0_0=0;
TH0=...
TL0=...//同上面的
EA=1;
ET0=1;
TR0=1;
for(;;){}//无限循环,P0_0反复动作
}
回复
引用
举报
motronking
关注
私信
精华:0帖
求助:0帖
帖子:6帖 | 86回
年度积分:0
历史总积分:113
注册:2005年4月06日
发表于:2005-11-09 22:26:00
8楼
To:苍鹰
我是刚学单片机的,用C语言编程,以后可能需要您的帮助
回复
引用
举报
motronking
关注
私信
精华:0帖
求助:0帖
帖子:6帖 | 86回
年度积分:0
历史总积分:113
注册:2005年4月06日
发表于:2005-11-12 11:15:00
9楼
可能我上面的程序有不妥,不好意思,
回复
引用
举报
猎隼
关注
私信
精华:1帖
求助:1帖
帖子:151帖 | 1661回
年度积分:0
历史总积分:8983
注册:2005年9月28日
发表于:2005-11-15 15:03:00
10楼
TO:老莫
我也学得不太好,对于编程来说还是一个初学者.
以后如果有问题我们一起研究.
回复
引用
举报
motronking
关注
私信
精华:0帖
求助:0帖
帖子:6帖 | 86回
年度积分:0
历史总积分:113
注册:2005年4月06日
发表于:2005-11-15 22:07:00
11楼
好啊
回复
引用
举报
猎隼
关注
私信
精华:1帖
求助:1帖
帖子:151帖 | 1661回
年度积分:0
历史总积分:8983
注册:2005年9月28日
发表于:2005-11-17 16:28:00
12楼
TO:老莫
有问题再联系。
回复
引用
举报
studaybo
关注
私信
精华:0帖
求助:0帖
帖子:5帖 | 34回
年度积分:0
历史总积分:49
注册:2005年7月14日
发表于:2005-11-18 14:35:00
13楼
"希望的这个程序[color=#FF0000]只[/color]让P0_0反复动作一次,但却往复动作."
各位的回帖,都是往复运动。是不是理解错了。
unsigned int a;
void main()
{
for(a=0;a<50000;a++)
P0_0=1;
for(a=0;a<50000;a++)
P0_0=0;
}
回复
引用
举报
周公
关注
私信
精华:10帖
求助:0帖
帖子:119帖 | 5549回
年度积分:0
历史总积分:6446
注册:2002年11月26日
发表于:2005-11-20 00:04:00
14楼
还没好?
只让P0_0反复动作一次,应该是:
void main()
{
for(a=0;a<50000;a++) //延时
P0_0=1; // P0_0为高
for(a=0;a<50000;a++) //延时
P0_0=0; // P0_0为低
while(1); /* 加一个死循环*/
}
回复
引用
举报
龙虎
关注
私信
精华:0帖
求助:0帖
帖子:18帖 | 45回
年度积分:0
历史总积分:110
注册:2005年9月02日
发表于:2005-11-20 01:09:00
15楼
怎么是C语言,能用汇编吗?
回复
引用
举报
山水
关注
私信
精华:4帖
求助:0帖
帖子:128帖 | 2238回
年度积分:0
历史总积分:3675
注册:2004年1月06日
发表于:2005-11-20 01:18:00
16楼
顶
回复
引用
举报
我心依旧
关注
私信
精华:0帖
求助:0帖
帖子:2帖 | 3回
年度积分:0
历史总积分:89
注册:2004年8月16日
发表于:2005-11-20 09:19:00
17楼
我想学习单片机,谁有KEIL软件,谢谢
bxqhk@163.com
回复
引用
举报
studaybo
关注
私信
精华:0帖
求助:0帖
帖子:5帖 | 34回
年度积分:0
历史总积分:49
注册:2005年7月14日
发表于:2005-11-21 12:55:00
18楼
经过周公的一改;
更加完善了;
又学会了一招,那就是细心,多考虑,使之更加完善。
回复
引用
举报
诸葛村夫
关注
私信
精华:0帖
求助:0帖
帖子:71帖 | 278回
年度积分:0
历史总积分:479
注册:2004年3月06日
发表于:2005-11-21 13:05:00
19楼
恩,开眼界
回复
引用
举报
热门招聘
相关主题
请问知道PC104专用电源JMM-5...
[1143]
这样的系统谁做过?
[1302]
关于远距离数据采集的方案
[2940]
跪求51单片机与固态继电器的...
[2557]
求助 嵌入式WINCE如何增加中...
[2306]
昆仑通态最新嵌入式软件可以...
[977]
嵌入式实时操作系统
[1012]
在迅为官网上申请了一个三星...
[4827]
几种无线通信方式简介
[1874]
请教新华龙单片机的几个问题
[2875]
官方公众号
智造工程师
客服
小程序
公众号