打印

求教!我是初学C,请教这段怎么不能运行

[复制链接]
1603|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ZBBT|  楼主 | 2009-3-31 12:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <AT89X51.h>
 sbit    p20=P2^0;
 
void main(void)
{
unsigned int a;
//sbit p20=P2^0;
do {        
     
for(a=0;a<500000;a++)
    p20=0;
for(a=0;a<500000;a++);
    p20=1;
//    for(a=0;a<200000;a++);
}
while(1);
}

相关帖子

沙发
平常人| | 2009-3-31 12:29 | 只看该作者

肯定能运行,除非没电

使用特权

评论回复
板凳
九浩| | 2009-3-31 12:30 | 只看该作者

参考一下吧!

我也是初学,无符号整型:unsigned int 范围0---65535,你的范围好像超了吧!

使用特权

评论回复
地板
九浩| | 2009-3-31 12:35 | 只看该作者

你把a的值改成50000,我想应该能运行!

使用特权

评论回复
5
ZBBT|  楼主 | 2009-3-31 13:08 | 只看该作者

谢谢啦,我回去试试吧!

使用特权

评论回复
6
王紫豪| | 2009-3-31 22:54 | 只看该作者

re

keil 51里,默认 int 为short,可改为long

使用特权

评论回复
7
逐梦青萍| | 2009-4-1 22:39 | 只看该作者

数字错误

int只能处理不超过65535的数字(2的16次方)改一下数字就应该可以,要是你认为延时不够可以使用嵌套


使用特权

评论回复
8
jgg135| | 2009-4-2 19:47 | 只看该作者

答案

unsigned int 类型数据范围为0——65535

使用特权

评论回复
9
myic200610| | 2009-4-4 00:22 | 只看该作者

RE

呵呵,低级错误!有趣!

使用特权

评论回复
10
saul2006| | 2009-4-4 00:52 | 只看该作者

我前几天也犯这个错误,呵呵,我也是刚学的,确实是超过

使用特权

评论回复
11
无聊小子| | 2009-4-21 20:55 | 只看该作者

嘻嘻...

嘻嘻...C语言很久没用了.真怀念当年天天研究那东东...建议看看"谭浩强"的书,C语言相当不错的入门书籍...除了入门知识还包含了数据结构....真是一书两用

使用特权

评论回复
12
50ic| | 2009-4-21 21:47 | 只看该作者

我来说说

int应改为long,第一个for少了分号,还有,你的应该是延时约4秒输出低电平,再延时约4秒又输出高电平,这样的话就不必用for语句啊,写个延时子程序会好一点吧.

使用特权

评论回复
13
lelee007| | 2009-4-22 03:15 | 只看该作者

哈哈

使用特权

评论回复
14
cambwang| | 2009-4-22 22:01 | 只看该作者

溢出啦

使用特权

评论回复
15
mindshare| | 2009-4-23 11:05 | 只看该作者

这个涉及到编译器/平台有关的问题了.

每一个数据类型在不同的编译器/平台上使用时会有不同的地方.

unsigned int 在有的编译器下是16 bit,在有的编译器下是32bit

所以,一般为了可移植性都会使用平台自定义数据类型,这样才能有比较好的移植性.

比如:
#define INT32U unsinged long
#define INT32U unsigned int

在你的代码中将 unsigned int 换成INT32U后
换平台就很容易了,否则就很麻烦,特别是一个巨大的工程。




使用特权

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

本版积分规则

2

主题

7

帖子

0

粉丝