找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4982|回复: 39
打印 上一主题 下一主题
收起左侧

有四盏灯分别为单片机P0.4;P0.5;P0.6;P0.7,程序只是让一个亮为什么都亮

  [复制链接]
跳转到指定楼层
楼主
问一下    有四盏灯分别为P0.4;P0.5;P0.6;P0.7四个口      只是让一个亮为什么都亮


#include<stc15.h>
sbit led1=p0.4;
sbit led2=p0.5;
sbit led3=p0.6;
sbit led4=p0.7;

void main()
{
    p0=0xff;
    led1=1;
    led2=0;
    led3=0;
    led4=0;
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:424598 发表于 2019-5-15 11:29 来自手机 | 只看该作者
你确定你的程序能编译通过?
回复

使用道具 举报

板凳
ID:538591 发表于 2019-5-15 13:52 | 只看该作者
ssk7793 发表于 2019-5-15 11:29
你确定你的程序能编译通过?

能通过  但是他全亮   
回复

使用道具 举报

地板
ID:538591 发表于 2019-5-15 14:13 | 只看该作者
ssk7793 发表于 2019-5-15 11:29
你确定你的程序能编译通过?

可以可以
回复

使用道具 举报

5#
ID:516910 发表于 2019-5-15 14:49 | 只看该作者
头文件 ?  位申明? 低电平有效?
回复

使用道具 举报

6#
ID:538591 发表于 2019-5-15 16:20 | 只看该作者
15775211617 发表于 2019-5-15 14:49
头文件 ?  位申明? 低电平有效?

头文件不是stc15.h么?      现在是高低电平都会亮
不知道怎么改
回复

使用道具 举报

7#
ID:67356 发表于 2019-5-15 17:24 | 只看该作者
p0=0xff;把这一句改成p0=0x00;
回复

使用道具 举报

8#
ID:538591 发表于 2019-5-15 18:54 | 只看该作者
jmkl128 发表于 2019-5-15 17:24
p0=0xff;把这一句改成p0=0x00;

改了    还是不行。。。
回复

使用道具 举报

9#
ID:156220 发表于 2019-5-15 20:19 | 只看该作者
把原理图发来看看,
回复

使用道具 举报

10#
ID:424598 发表于 2019-5-16 06:53 来自手机 | 只看该作者
用的什么?开发板还是自制电路?发图上来,看看你led的接线方式
回复

使用道具 举报

11#
ID:538591 发表于 2019-5-16 14:21 | 只看该作者
ssk7793 发表于 2019-5-16 06:53
用的什么?开发板还是自制电路?发图上来,看看你led的接线方式


开发板上
回复

使用道具 举报

12#
ID:538591 发表于 2019-5-16 14:21 | 只看该作者
紫色的云 发表于 2019-5-15 20:19
把原理图发来看看,


回复

使用道具 举报

13#
ID:539992 发表于 2019-5-16 17:11 | 只看该作者
直接写led1=0就可以了吧,其他可以不要写。
回复

使用道具 举报

14#
ID:213173 发表于 2019-5-16 17:15 | 只看该作者

估计楼主这个程序是胡乱抄的,并不是楼主用于芯片下载的程序,一共就十一条语句,几乎没有一条是正确的,并且不可能通过编译器成功编译得到hex文件。
1.首先<stc15.h>这个头文件名就不存在,官方名称是 <STC15F2K60S2.H>,按楼主目前水平还不具备自主编辑专用头文件。
2.四条led端口定义的写法全是错误的。
3.main函数第一条P0=0xff;是多余的,因为MCU加电复位P0就是高电平。
4.楼主想要4个led中的1个发光,其余不发光,逻辑反了。
5.程序必须限制在main函数内循环,否则执行完指令后会跳出main函数。必须用while(1)限制。

楼主试试这个程序

#include <STC15F2K60S2.H>

sbit led1=P0^4;
sbit led2=P0^5;
sbit led3=P0^6;
sbit led4=P0^7;

void main()
{
        led1=1;
        led2=1;
        led3=1;
        led4=0;       

        while(1);
}
回复

使用道具 举报

15#
ID:93224 发表于 2019-5-16 17:26 | 只看该作者
程序运行可能出现问题,建议在led4=0;后面加个while(1);死循环
回复

使用道具 举报

16#
ID:532564 发表于 2019-5-16 18:20 | 只看该作者
试试看p0=0x10是不是也都亮?
回复

使用道具 举报

17#
ID:155507 发表于 2019-5-16 18:26 | 只看该作者
定义有些问题
我给你来个程序试试



  1. #include "reg51.h"

  2. sfr P0M1 = 0x93;
  3. sfr P0M0 = 0x94;

  4. sbit led1 = P0^4;
  5. sbit led2 = P0^5;
  6. sbit led3 = P0^6;
  7. sbit led4 = P0^7;

  8. void delay()
  9. {
  10.         int i, j;

  11.         for (i=0; i<1000; i++)
  12.             for (j=0; j<500; j++);
  13. }


  14. void main()
  15. {
  16.         P0M0 = 0x00;
  17.         P0M1 = 0x00;

  18.         P0 = 0xff;
  19.        
  20.         while (1)
  21.         {
  22.                 led1=0;
  23.                 led2=1;
  24.                 led3=1;
  25.                 led4=1;
  26.                 delay();
  27.                 led1=1;
  28.                 led2=0;
  29.                 led3=1;
  30.                 led4=1;
  31.                 delay();
  32.                 led1=1;
  33.                 led2=1;
  34.                 led3=0;
  35.                 led4=1;
  36.                 delay();
  37.                 led1=1;
  38.                 led2=1;
  39.                 led3=1;
  40.                 led4=0;
  41.                 delay();

  42.         }
  43. }



复制代码
回复

使用道具 举报

18#
ID:538591 发表于 2019-5-16 19:27 | 只看该作者
wulin 发表于 2019-5-16 17:15
估计楼主这个程序是胡乱抄的,并不是楼主用于芯片下载的程序,一共就十一条语句,几乎没有一条是正确的, ...

这个头文件   是对的   并不是从网上抄写    也可以编译出hex文件

你写的这个我也改了没有用   还是同样的效果
     
回复

使用道具 举报

19#
ID:538591 发表于 2019-5-16 19:29 | 只看该作者
lele5211314 发表于 2019-5-16 17:26
程序运行可能出现问题,建议在led4=0;后面加个while(1);死循环

谢谢    使用了   没有变
回复

使用道具 举报

20#
ID:538591 发表于 2019-5-16 19:31 | 只看该作者
stephanie_han 发表于 2019-5-16 18:20
试试看p0=0x10是不是也都亮?

谢谢    还是会亮
回复

使用道具 举报

21#
ID:538591 发表于 2019-5-16 19:40 | 只看该作者
angmall 发表于 2019-5-16 18:26
定义有些问题
我给你来个程序试试

感谢     这个改成了跑马灯    挺谢谢的
回复

使用道具 举报

22#
ID:511890 发表于 2019-5-16 23:48 | 只看该作者
改成:
void main()
{
    p0=0xff;
while(1){
    led1=0;
    led2=1;
    led3=1;
    led4=1;
}
}
回复

使用道具 举报

23#
ID:384252 发表于 2019-5-17 01:43 | 只看该作者
楼主你这个代码哪是让一个灯亮呀?有几个问题:1,程序没有死循环,只要程序跑到LED4=0后,就会从头开始又执行一次了,2、P0=0xff,就是把四个灯关了,LED1=1就没有意义了,接着后面3个灯会全亮,亮完后,程序又从头开始执行。修改建议:while(1){P0=0xff;led1 = 0;delay();P0=0xff;delay();led2 = 0;delay();P0=0xff;delay();led3 = 0;delay();P0=0xff;delay();led4 = 0;delay();}
回复

使用道具 举报

24#
ID:538591 发表于 2019-5-17 08:30 | 只看该作者
smarttran 发表于 2019-5-17 01:43
楼主你这个代码哪是让一个灯亮呀?有几个问题:1,程序没有死循环,只要程序跑到LED4=0后,就会从头开始又 ...

谢谢了   辛苦
回复

使用道具 举报

25#
ID:487821 发表于 2019-5-17 09:15 | 只看该作者
P要用大写,头文件改成#include "reg51.h"这个51就行了,还有没有while()循环,而且按你图纸=1是不亮,=0是亮
回复

使用道具 举报

26#
ID:424408 发表于 2019-5-17 13:01 | 只看该作者
angmall 发表于 2019-5-16 18:26
定义有些问题
我给你来个程序试试

这还去给写一遍
回复

使用道具 举报

27#
ID:389839 发表于 2019-5-17 14:09 | 只看该作者
0才是开,1应该是关,你的程序是让一个灭
回复

使用道具 举报

28#
ID:446841 发表于 2019-5-17 14:54 来自手机 | 只看该作者
p0.4这个点怎么看着那么别扭   把他改成∧试试吧
回复

使用道具 举报

29#
ID:446841 发表于 2019-5-17 14:55 来自手机 | 只看该作者
还有那个P应该用大写的
回复

使用道具 举报

30#
ID:530977 发表于 2019-5-17 22:45 | 只看该作者
不报错?我不信。
回复

使用道具 举报

31#
ID:530977 发表于 2019-5-17 22:47 | 只看该作者
main函数里面加一个P0M0=0;P0M1=0;基本的框图要打好啊,还有while()呢?
回复

使用道具 举报

32#
ID:541189 发表于 2019-5-18 10:28 来自手机 | 只看该作者
难道芯片给你整坏了,击穿了,造成漏电,4灯都亮
回复

使用道具 举报

33#
ID:307020 发表于 2019-5-18 13:41 | 只看该作者
首先要从原理图层面搞清楚什么样的输出有效,此处为输出低电平有效,再者,要清除了解编程软件的规范(如大小写要求);第三从最简单做起以了解细节
回复

使用道具 举报

34#
ID:538591 发表于 2019-5-18 14:38 | 只看该作者
问青天磕大地 发表于 2019-5-18 10:28
难道芯片给你整坏了,击穿了,造成漏电,4灯都亮

没那么大的能力
回复

使用道具 举报

35#
ID:538591 发表于 2019-5-18 14:39 | 只看该作者
wj_yuq 发表于 2019-5-18 13:41
首先要从原理图层面搞清楚什么样的输出有效,此处为输出低电平有效,再者,要清除了解编程软件的规范(如大 ...

谢谢    现在改完了
回复

使用道具 举报

36#
ID:538591 发表于 2019-5-18 14:40 | 只看该作者
三感 发表于 2019-5-17 22:45
不报错?我不信。

你要相信      真的不报错的
回复

使用道具 举报

37#
ID:160500 发表于 2019-5-18 15:51 | 只看该作者
你这个很明显程序有问题,上面已经给出了正确的程序。然后,还要检查硬件有没有错误,是否元件损坏等
回复

使用道具 举报

38#
ID:516824 发表于 2019-5-19 00:50 | 只看该作者
oxff什么意思都不明白?
回复

使用道具 举报

39#
ID:542433 发表于 2019-5-19 22:26 | 只看该作者
低电平有效呗
回复

使用道具 举报

40#
ID:319023 发表于 2019-5-20 02:06 | 只看该作者
要注意P的大小写,还有while()循环。  其实刚开始接触单片机还是要多看参考程序代码,多积累
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表