hyperiris 发表于 2011-8-10 10:51:40

STC11F02的IO问题,崩溃了

电路连接是P1.0上拉一个4.7k电阻,别的什么都没接,

首先我这么初始化P1, P1.0是OD:

P1M0 = 0x81;        //b10000001;
P1M1 = 0x6b;        //b01101011;

然后我开始操作P1.0:

P10 = 1;
delay();// 大约延迟25毫秒
if (P10)
{
    goto _data_error;// 这一句竟然不会被执行!?
}

xiaobendan 发表于 2011-8-10 11:51:24

_data_error在哪儿呢?

121212 发表于 2011-8-10 11:52:19

也可能是编译器的问题。


如果你对 asm 不熟悉,请远离 goto

lhb358 发表于 2011-8-10 11:53:36

P10外部没上拉吧
if (P10) 读的是管脚,不是寄存器

hyperiris 发表于 2011-8-10 12:21:44

回复【4楼】lhb358
p10外部没上拉吧
if (p10) 读的是管脚,不是寄存器
-----------------------------------------------------------------------

回帖请看贴

电路连接是P1.0上拉一个4.7k电阻,别的什么都没接

hyperiris 发表于 2011-8-10 12:22:38

回复【2楼】xiaobendan仲跻东
_data_error在哪儿呢?
-----------------------------------------------------------------------

_data_error 的代码没贴,当然是有的

rigol_fan 发表于 2011-8-10 12:31:06

P1M0 = 0x81; //b10000001;
P1M1 = 0x6b; //b01101011;

这些去掉

electron_love 发表于 2011-8-10 14:56:16

问题不完整

lxx_sea_sky 发表于 2011-8-10 15:16:53

回复【7楼】hyperiris
_data_error 的代码没贴,当然是有的
-----------------------------------------------------------------------

跨函数goto? 编译器是不会认的。

xiaobendan 发表于 2011-8-10 22:36:38

回复【7楼】hyperiris
回复【2楼】xiaobendan仲跻东
_data_error在哪儿呢?
-----------------------------------------------------------------------
_data_error 的代码没贴,当然是有的
-----------------------------------------------------------------------

还是贴出来看看吧

hailing 发表于 2011-8-11 00:35:50

你在里面配置下点个灯不是很直观。看看是语法问题还是单片机问题。

sz_laser 发表于 2011-8-11 01:45:13

没看明白

machao 发表于 2011-8-11 02:26:27

回复【楼主位】hyperiris
电路连接是p1.0上拉一个4.7k电阻,别的什么都没接,
首先我这么初始化p1, p1.0是od:
p1m0 = 0x81; //b10000001;
p1m1 = 0x6b; //b01101011;
然后我开始操作p1.0:
p10 = 1;
delay();// 大约延迟25毫秒
if (p10)
{
    goto _data_error;// 这一句竟然不会被执行!?
}
-----------------------------------------------------------------------

看不懂。好象不是IO的问题,而是你自己贴了个应该崩溃的问题。

1。“首先我这么初始化p1, p1.0是od” 这是什么意思?到底是P1口还是P1.0?
2。p10是什么?是一个变量吗?如何定义的?如果是对P1.0操作,应该是P1^0 = 1
3。然后后面跟上一大串崩溃的回贴,当然,偶这个也是崩溃的贴。

xpxp 发表于 2011-8-11 02:55:38

可以直接写P10=1,这个没问题,看看“STC11.H”这个头文件就知道了。
    楼主不妨 把if (P10)中的语句点亮一个LED灯(要加限流电阻)看看问题处在哪里了。

hyperiris 发表于 2011-8-11 13:44:57

回复【8楼】rigol_fan西门吹雪
p1m0 = 0x81; //b10000001;
p1m1 = 0x6b; //b01101011;

这些去掉
-----------------------------------------------------------------------

请问这些去掉以后,怎么把P1.0设置成OD?别的引脚暂且不提。

hyperiris 发表于 2011-8-11 13:48:24

回复【14楼】machao

看不懂。好象不是IO的问题,而是你自己贴了个应该崩溃的问题。

1。“首先我这么初始化p1, p1.0是od” 这是什么意思?到底是P1口还是P1.0?
2。p10是什么?是一个变量吗?如何定义的?如果是对P1.0操作,应该是P1^0 = 1
3。然后后面跟上一大串崩溃的回贴,当然,偶这个也是崩溃的贴。
-----------------------------------------------------------------------

我觉得吧,您回帖前最好先看看STC那个倒霉手册和STC11.H,当然楼上有些人也是。至于P1.0是OD这句话我不想解释了,不知道OD是什么的请自己baidu,或者随便找本数电翻翻。

hyperiris 发表于 2011-8-11 13:57:38

回复【15楼】xpxp
    可以直接写p10=1,这个没问题,看看“stc11.h”这个头文件就知道了。
    楼主不妨 把if (p10)中的语句点亮一个led灯(要加限流电阻)看看问题处在哪里了。
-----------------------------------------------------------------------

我觉得只能这么做了,回头我写个专门测试IO的代码接上LED挨个测试一下,我怀疑P1.0坏了

tjjack 发表于 2011-8-11 14:01:53

if (P10) 改为if (P10==1) 应该是编译器的问题!

hyperiris 发表于 2011-8-11 14:06:39

回复【19楼】tjjack
if (p10) 改为if (p10==1) 应该是编译器的问题!


-----------------------------------------------------------------------

我试了,无效

hyperiris 发表于 2011-8-11 14:09:39

我把代码写成这样,楼上有些不能理解问题的应该能看明白了吧

P1.0 是 开漏输出,4.7K电阻上拉到+5V

sbit P10      =   P1^0;       //I/O口P1.0 form stc11.h

P10 = 1;
delay();// 大约延迟25毫秒
if (P10)// 写成if (p10==1) 也没用
{
    delay();// 大约延迟25毫秒 这一句不会被执行
}

tjjack 发表于 2011-8-11 14:26:05

sbit        key                        = P1^0;
if (p10) 改为if (key==1)

xiaobendan 发表于 2011-8-12 09:34:06

回复【23楼】tjjack
sbit key = p1^0;
if (p10) 改为if (key==1)
-----------------------------------------------------------------------

这些都没有用的吧



怎么会不执行呢?有图有真相
http://cache.amobbs.com/bbs_upload782111/files_44/ourdev_666797QCBE85.jpg
(原文件名:111.jpg)

xiaojian 发表于 2011-8-12 09:45:53

楼主的 杯具了,优化掉了

baiyu 发表于 2011-8-12 13:05:00

"goto _data_error;"
可能你程序中有多句 _data_error; ,所以goto不知道要跳到哪,把接入点的标志改成唯一的

hyperiris 发表于 2011-8-12 17:54:12

回复【24楼】xiaobendan仲跻东
回复【23楼】tjjack
sbit key = p1^0;
if (p10) 改为if (key==1)
-----------------------------------------------------------------------

这些都没有用的吧



怎么会不执行呢?有图有真相

-----------------------------------------------------------------------

Keil里面仿真波形什么都正常,写到芯片就不对
页: [1]
查看完整版本: STC11F02的IO问题,崩溃了