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;// 这一句竟然不会被执行!?
} _data_error在哪儿呢? 也可能是编译器的问题。
如果你对 asm 不熟悉,请远离 goto P10外部没上拉吧
if (P10) 读的是管脚,不是寄存器 回复【4楼】lhb358
p10外部没上拉吧
if (p10) 读的是管脚,不是寄存器
-----------------------------------------------------------------------
回帖请看贴
电路连接是P1.0上拉一个4.7k电阻,别的什么都没接 回复【2楼】xiaobendan仲跻东
_data_error在哪儿呢?
-----------------------------------------------------------------------
_data_error 的代码没贴,当然是有的 P1M0 = 0x81; //b10000001;
P1M1 = 0x6b; //b01101011;
这些去掉 问题不完整 回复【7楼】hyperiris
_data_error 的代码没贴,当然是有的
-----------------------------------------------------------------------
跨函数goto? 编译器是不会认的。 回复【7楼】hyperiris
回复【2楼】xiaobendan仲跻东
_data_error在哪儿呢?
-----------------------------------------------------------------------
_data_error 的代码没贴,当然是有的
-----------------------------------------------------------------------
还是贴出来看看吧 你在里面配置下点个灯不是很直观。看看是语法问题还是单片机问题。 没看明白 回复【楼主位】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。然后后面跟上一大串崩溃的回贴,当然,偶这个也是崩溃的贴。 可以直接写P10=1,这个没问题,看看“STC11.H”这个头文件就知道了。
楼主不妨 把if (P10)中的语句点亮一个LED灯(要加限流电阻)看看问题处在哪里了。 回复【8楼】rigol_fan西门吹雪
p1m0 = 0x81; //b10000001;
p1m1 = 0x6b; //b01101011;
这些去掉
-----------------------------------------------------------------------
请问这些去掉以后,怎么把P1.0设置成OD?别的引脚暂且不提。 回复【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,或者随便找本数电翻翻。 回复【15楼】xpxp
可以直接写p10=1,这个没问题,看看“stc11.h”这个头文件就知道了。
楼主不妨 把if (p10)中的语句点亮一个led灯(要加限流电阻)看看问题处在哪里了。
-----------------------------------------------------------------------
我觉得只能这么做了,回头我写个专门测试IO的代码接上LED挨个测试一下,我怀疑P1.0坏了 if (P10) 改为if (P10==1) 应该是编译器的问题! 回复【19楼】tjjack
if (p10) 改为if (p10==1) 应该是编译器的问题!
-----------------------------------------------------------------------
我试了,无效 我把代码写成这样,楼上有些不能理解问题的应该能看明白了吧
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毫秒 这一句不会被执行
} sbit key = P1^0;
if (p10) 改为if (key==1) 回复【23楼】tjjack
sbit key = p1^0;
if (p10) 改为if (key==1)
-----------------------------------------------------------------------
这些都没有用的吧
怎么会不执行呢?有图有真相
http://cache.amobbs.com/bbs_upload782111/files_44/ourdev_666797QCBE85.jpg
(原文件名:111.jpg) 楼主的 杯具了,优化掉了 "goto _data_error;"
可能你程序中有多句 _data_error; ,所以goto不知道要跳到哪,把接入点的标志改成唯一的 回复【24楼】xiaobendan仲跻东
回复【23楼】tjjack
sbit key = p1^0;
if (p10) 改为if (key==1)
-----------------------------------------------------------------------
这些都没有用的吧
怎么会不执行呢?有图有真相
-----------------------------------------------------------------------
Keil里面仿真波形什么都正常,写到芯片就不对
页:
[1]