打印

帮忙看一下这个C源程序

[复制链接]
1701|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ylzhao168|  楼主 | 2007-5-19 09:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本人在KEIL上编了以下这个程序,编译通过,但烧到单片机以后,插到仿真板上后不运行。请帮忙看一下。
   #include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
#define ON 1
#define OFF 0
  sbit Lap1=P1^0;
  sbit Lap2=P1^1;
  sbit Lap3=P1^2;
  sbit Lap4=P1^3;
  sbit Lap5=P1^4;
  sbit Lap6=P1^5;
  sbit Lap7=P1^6;
  sbit Lap8=P1^7;
 void initial();
void delay();
void main()
 {  
     initial();
     delay();
     while(1)
     { 
       Lap1=ON;
       delay();
       Lap1=OFF;
       delay();

       Lap2=ON;
       delay();
       Lap2=OFF;
       delay();

       Lap3=ON;
       delay();
       Lap3=OFF;
       delay();

       Lap4=ON;
       delay();
       Lap4=OFF;
       delay();

       Lap5=ON;
       delay();
       Lap5=OFF;
       delay();

       Lap6=ON;
       delay();
       Lap6=OFF;
       delay();

       Lap7=ON;
       delay();
       Lap7=OFF;
       delay();

       Lap8=ON;
       delay();
       Lap8=OFF;
       delay();
       }
  }
 void initial()
 {
  Lap1=OFF;
  Lap2=OFF;
  Lap3=OFF;
  Lap4=OFF;
  Lap5=OFF;
  Lap6=OFF;
  Lap7=OFF;
  Lap8=OFF;
 }
 
 void delay()
 { 
   int i=0;
   while(i<20)i++;
  }

相关帖子

沙发
王紫豪| | 2007-5-19 09:40 | 只看该作者

你怎么知道不运行的?

使用特权

评论回复
板凳
zhaoyu2005| | 2007-5-19 09:41 | 只看该作者

怎么个不运行想象?

你这样的情况可能是程序正常运行的但是灯没有亮,也可能是程序没有运行,下次说清楚

使用特权

评论回复
地板
ylzhao168|  楼主 | 2007-5-19 09:46 | 只看该作者

补充

灯不亮。

使用特权

评论回复
5
燕南啸| | 2007-5-19 10:20 | 只看该作者

延时时间太短了吧

使用特权

评论回复
6
有梦就去追| | 2007-5-19 10:32 | 只看该作者

可能是延时程序短了点吧

 也许是延时程序断了点,把时间弄长点看看...

使用特权

评论回复
7
ylzhao168|  楼主 | 2007-5-19 11:55 | 只看该作者

已经延长到20000了 还是不行

使用特权

评论回复
8
dai_weis| | 2007-5-19 12:16 | 只看该作者

用定时器试试看,延时程序可能被优化了,没有那么长

使用特权

评论回复
9
genuineli| | 2007-5-19 12:54 | 只看该作者

回复

Lap1是位变量,怎么可以 
  Lap1=OFF;
  Lap2=OFF;
  Lap3=OFF;
  Lap4=OFF;
  Lap5=OFF;
  Lap6=OFF;
  Lap7=OFF;
  Lap8=OFF;初始化,而且写的也不对,0XFF;
  其实不用初始化的,P1复位后就是高电平的。

使用特权

评论回复
10
V_huo88| | 2007-5-19 14:43 | 只看该作者

应该要初始化P1口

应该在 initial()里面初始化P1口
P1 = 0xff;

使用特权

评论回复
11
古道热肠| | 2007-5-19 16:29 | 只看该作者

位变量是用0和1赋值

   定义成位变量后一定要用0和1进行赋值,延时参数我的经验是在18.432MHz时,使用ulCount<0x10000进行For循环,效果很明显。改变参数据一定要改变变量的宽度哟!
   用软仿真,确保正常后,如果还不正常时,检查硬件。
   分清故障原因,采用排除法,一定能正常。

使用特权

评论回复
12
dreambird| | 2007-5-19 20:43 | 只看该作者

看一下汇编,delay没有被优化掉吧

使用特权

评论回复
13
zhaoyu2005| | 2007-5-21 08:24 | 只看该作者

估计你是想拿P1口的高电平点亮LED

好像是不行的,标准51的高电平驱动能力有限,建议看书

使用特权

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

本版积分规则

9

主题

18

帖子

0

粉丝