打印
[51单片机]

谜一般的操作,迷到不行

[复制链接]
2267|37
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
茶几浮|  楼主 | 2018-2-2 14:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我的单片机用了P02,P03做了两个指示灯,程序是改别人的(就这个程序是有问题的,其他的程序都是对的)。问题出现了:我把指示灯定义好(拉低点亮,拉高熄灭),点亮,然后拉高使它熄灭,但是没用。
现在,我直接用
main(){
while(1){
mcu_init();//无关IO口
mcu_io_init();//直接按照原来的灯来设置,最后P0=0xff;
}
}

也亮灯。

相关帖子

沙发
ohy3686| | 2018-2-2 15:02 | 只看该作者
如果是51单片机,P0口有点特别
因为是OC门,也就是集电极开路输出
在硬件电路设计上面要注意
如果不接上拉电阻,是不能输出高电平的。

使用特权

评论回复
评论
数码小叶 2018-2-11 09:17 回复TA
@宵待雨月 :哈哈,说的对,现在即使旧一点的,也只有P0要加 
宵待雨月 2018-2-4 10:30 回复TA
现在的51基本都可以了,多少年前的老黄历了 ... 
caijie001 2018-2-3 09:08 回复TA
对的,51的P0无法输出高电平 
板凳
blust5| | 2018-2-2 15:16 | 只看该作者
不知道为什么把初始化放到while(1)循环里。。。

使用特权

评论回复
地板
cainiao_123| | 2018-2-2 15:19 | 只看该作者
在不断的初始化IO口?

使用特权

评论回复
5
ningling_21| | 2018-2-2 15:20 | 只看该作者
本帖最后由 ningling_21 于 2018-2-2 15:23 编辑
ohy3686 发表于 2018-2-2 15:02
如果是51单片机,P0口有点特别
因为是OC门,也就是集电极开路输出
在硬件电路设计上面要注意

不是这个问题
初始化函数被无限执行

使用特权

评论回复
6
ohy3686| | 2018-2-2 15:36 | 只看该作者
ningling_21 发表于 2018-2-2 15:20
不是这个问题
初始化函数被无限执行

你放到while(1)里面,当然是无限次执行啦。

使用特权

评论回复
7
ohy3686| | 2018-2-2 15:36 | 只看该作者
ningling_21 发表于 2018-2-2 15:20
不是这个问题
初始化函数被无限执行

main(){
    mcu_init();//无关IO口
    mcu_io_init();//直接按照原来的灯来设置,最后P0=0xff;
    while(1){
    }
}

使用特权

评论回复
8
茶几浮|  楼主 | 2018-2-2 16:46 | 只看该作者
ohy3686 发表于 2018-2-2 15:36
main(){
    mcu_init();//无关IO口
    mcu_io_init();//直接按照原来的灯来设置,最后P0=0xff;

你这样写,我也试过,还是while(1)

P0=0xff;

这样的,一样会亮。

使用特权

评论回复
9
ningling_21| | 2018-2-2 17:04 | 只看该作者
本帖最后由 ningling_21 于 2018-2-2 17:06 编辑
茶几浮 发表于 2018-2-2 16:46
你这样写,我也试过,还是while(1)

P0=0xff;


初始化;
P0=0XFF;
P0=0X00;
while(1)
{
;
}

这样呢灯是怎么接的?

使用特权

评论回复
10
ohy3686| | 2018-2-2 17:08 | 只看该作者
ningling_21 发表于 2018-2-2 17:04
初始化;
P0=0XFF;
P0=0X00;

你能不能把所有代码贴上来...

使用特权

评论回复
11
茶几浮|  楼主 | 2018-2-2 17:13 | 只看该作者
本帖最后由 茶几浮 于 2018-2-2 17:18 编辑
ohy3686 发表于 2018-2-2 17:08
你能不能把所有代码贴上来...
单片机是beken bk2535的(flip51)。
void mcu_io_initial(void)
{
    P0IN_EN = 0x0;
        P1IN_EN = 0x0;
        P2IN_EN = 0x0;
        P3IN_EN = 0x0;
        P4IN_EN = 0x0;
        
        P0OUT_EN = 0x0;
        P1OUT_EN = 0x0;
        P2OUT_EN = 0x00;
        P3OUT_EN = 0x00;
        P4OUT_EN = 0x0;
        
        P0_OPDR = 0;
        P1_OPDR = 0;
        P2_OPDR = 0;
        P3_OPDR = 0;
        P4_OPDR = 0;
        
        P0_PU = 0x0;
        P1_PU = 0x0;
        P2_PU = 0x0;
        P3_PU = 0x0;
        P4_PU = 0x0;
        
        P0_PD = 0;
        P1_PD = 0;
        P2_PD = 0;
        P3_PD = 0;
        P4_PD = 0;        

P0_WUEN = 0;
        Delay_ms(100);
P0 = 0xff;
}
void mcu_initial(void)
{
    EA = 0;
    Delay_ms(1);
    PCON2 = 0x0;  
    Delay_ms(4);
    CKCON = 0;

    CLK_EN_CFG=0xff;
    EA = 1;
}
void main(void)
{
        mcu_initial();
        mcu_io_initial();
    while(1)
    {
                                                P0 = 0xff;
}
}

使用特权

评论回复
12
ohy3686| | 2018-2-2 17:18 | 只看该作者
#include "reg52.h"  

sbit LED1 = P0^2;       
sbit LED2 = P0^3;

viod Delay(unsigned int t)
{
  while(t--);
}

main()
{
    while(1)
    {
        LED1 = 0;
        Delay(60000);
        Delay(60000);
        LED2 = 0;
        Delay(60000);
        Delay(60000);
        LED1 = 1;
        Delay(60000);
        Delay(60000);
        LED2 = 1;
        Delay(60000);
        Delay(60000);
    }
}

使用特权

评论回复
13
ohy3686| | 2018-2-2 17:18 | 只看该作者
茶几浮 发表于 2018-2-2 17:13
void mcu_io_initial(void)
{
    P0IN_EN = 0x0;

这个什么代码来的?
乱七八糟。
我给你写了一个跑马灯程序,你自己试试看。

使用特权

评论回复
14
ohy3686| | 2018-2-2 17:19 | 只看该作者
茶几浮 发表于 2018-2-2 17:13
单片机是beken bk2535的(flip51)。
void mcu_io_initial(void)
{

你这个代码不是51单片机的
我不知道你硬件是不是51单片机的

使用特权

评论回复
15
ningling_21| | 2018-2-2 17:29 | 只看该作者
茶几浮 发表于 2018-2-2 17:13
单片机是beken bk2535的(flip51)。
void mcu_io_initial(void)
{

初始化没问题吧

使用特权

评论回复
16
cjseng| | 2018-2-2 19:11 | 只看该作者
我怀疑晶振都没起震,程序根本就没运行。

使用特权

评论回复
17
茶几浮|  楼主 | 2018-2-3 09:30 | 只看该作者
cjseng 发表于 2018-2-2 19:11
我怀疑晶振都没起震,程序根本就没运行。

很有 可能,我直接main(){}都能亮灯。

使用特权

评论回复
18
xyz549040622| | 2018-2-4 07:46 | 只看该作者
cjseng 发表于 2018-2-2 19:11
我怀疑晶振都没起震,程序根本就没运行。

这也太坑了。。。

使用特权

评论回复
19
xyz549040622| | 2018-2-4 07:46 | 只看该作者
茶几浮 发表于 2018-2-3 09:30
很有 可能,我直接main(){}都能亮灯。

绝对程序都没运行起来,你用的什么芯片

使用特权

评论回复
20
caijie001| | 2018-2-4 08:19 | 只看该作者
xyz549040622 发表于 2018-2-4 07:46
绝对程序都没运行起来,你用的什么芯片

晶振不起振能下载吗

使用特权

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

本版积分规则

2

主题

10

帖子

0

粉丝