找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
打印 上一主题 下一主题
收起左侧

51单片机不受代码控制,求大神解惑。

  [复制链接]
41#
ID:160834 发表于 2018-4-3 21:38 | 只看该作者
单片机我来了 发表于 2018-4-1 21:42
我实际的板并没有使用P0,P3,写这个代码只是想用P1^0和P2^0检验板是否正常。因为我之前做个两个板都是这 ...

STC89C52  P0口不需要加上拉。ATMEL公司的 AT89C52需要加上拉。
回复

使用道具 举报

42#
ID:299857 发表于 2018-4-3 21:49 | 只看该作者
dalaoshi 发表于 2018-4-3 03:08
哈,我是看不懂C语言的,也没有用过89C52, 可是看那个EA接脚就觉得奇怪,为何是接在LED与电阻之间呢,照看 ...

那个EA脚有楼提醒过我,我改过了,试过接电源也试过接地了。结果就是不行,依然高电平不断。
回复

使用道具 举报

43#
ID:299857 发表于 2018-4-3 21:51 | 只看该作者
perfect2 发表于 2018-4-3 14:15
P1,P2,P3,P0,没有定义 无法直接使用    前面定义了 sbit D1=P1^0;  sbit led=P2^0    要控制 P1.0    P2.0 ...

哎...不是不行,而是你没有用过。P1,P2,P3,P0在头文件里已经定义的了。你可以百科一下...
回复

使用道具 举报

44#
ID:289365 发表于 2018-4-3 22:12 | 只看该作者
延时定太大了吧
回复

使用道具 举报

45#
ID:301740 发表于 2018-4-3 22:12 | 只看该作者
主函数中的while对io口赋值没有意义,可以放到循环的外边,然后写while(1);
就可以了
回复

使用道具 举报

46#
ID:160834 发表于 2018-4-3 22:24 | 只看该作者
依然高电平不断?楼主指的是单片机上电后一直输出高电平还是有过低电平?  我改的程序是每隔1秒左右高低电平切换。 我试下来都没问题啊。 你手上有几片这样的单片机?确定程序烧录进去了吗?  还是STC的单片机是用串口烧录的,你那个单片机是怎么烧录的?是用烧录器吗? 程序肯定没问题。 难道你那片单片机坏了?

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

47#
ID:160834 发表于 2018-4-3 22:35 | 只看该作者
依然高电平不断? 刚才又看了下你的程序和电路图。 你电路图上的D2和D4  2个LED是正极接电源  负极接单片机IO口  那么当单片机口设置成  P0=0;P1=0;P2=0;P3=0; 时  LED就是亮的状态。  如果你要LED不亮  那么初始设置成P0=0xFF;P1=0xFF;P2=0xFF;P3=0xFF;  还有要把这几个设置IO代码放在  while(1)上面。 否则一直循环设置。 我估计你所说的一直高电平就是指的这个情况。 因为你把IO置低电平一直放在循环里面。 所以LED就是一直亮的状态。
void main()
{
         P0=0xFF;
         P1=0xFF;
         P2=0xFF;
         P3=0xFF;
  while(1)
{

  }        
}

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

48#
ID:237354 发表于 2018-4-3 23:02 | 只看该作者
我也遇到过类似问题,现象很诡异,P口高电平,在VCC和地之间接led加10K电阻,运行正常。怀疑单片机和开发板不匹配

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

49#
ID:125231 发表于 2018-4-4 09:09 | 只看该作者
P1不是直接=0,应该是0x00
回复

使用道具 举报

50#
ID:160834 发表于 2018-4-4 10:11 | 只看该作者
ycs05201314 发表于 2018-4-4 09:09
P1不是直接=0,应该是0x00

对于赋值0到9都是可以直接这么写的。P1=0; 和  P1=0x00;  效果是一样的。 如果是大于9了  直接写十进制数字和十六进制是不一样的。 也就是P1=9; 和 P1=0x09; 也可以直接写效果是一样的。 但是P1=10; 和 P1=0x10;  就不是一样的效果了。P1=16; 和 P1=0x10;  才是一样的。  这个试一下就能明白的。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

51#
ID:300314 发表于 2018-4-5 20:23 | 只看该作者
你的IO口一直都是0还是死循环 怎么控制?
回复

使用道具 举报

52#
ID:299857 发表于 2018-4-7 20:43 | 只看该作者
QIANLILI 发表于 2018-4-3 21:30
根据你的程序 稍微修改下  用于测试4组IO口的高低电平切换。 仿真和实物都没问题。 你那个程序也应该没问题 ...

好好,感谢你衷心的回复。
回复

使用道具 举报

53#
ID:299857 发表于 2018-4-7 20:57 | 只看该作者
QIANLILI 发表于 2018-4-3 22:24
依然高电平不断?楼主指的是单片机上电后一直输出高电平还是有过低电平?  我改的程序是每隔1秒左右高低电 ...

是的,高电平不断。一直都是高电平,从来没有出现出现过低电平。我手上有三个单片机,在开发板上都是正常的。我是用开发板烧录的,然后换到我做的板上。

我知道我的原因了。因为我做的是双面板。我身边有个人告诉我,双面板成功的概率是七分之一。我只是做了三个板。我现在困惑为何双面板成功的概率那么低 ?
回复

使用道具 举报

54#
ID:299857 发表于 2018-4-7 21:05 | 只看该作者
不败的小强 发表于 2018-4-5 20:23
你的IO口一直都是0还是死循环 怎么控制?

你说的不错。但我试试过用闪烁的,都是没有反应。。。
回复

使用道具 举报

55#
ID:160834 发表于 2018-4-7 22:44 | 只看该作者
单片机我来了 发表于 2018-4-7 20:57
是的,高电平不断。一直都是高电平,从来没有出现出现过低电平。我手上有三个单片机,在开发板上都是正常 ...

这和双面板没关系的。 还是找找电路图和布线是否有错误的原因吧。你可以用万用板先搭个最精简的 测试下LED闪烁。 就能看出问题了。 确保晶振什么的也没问题。 建议还是用目前的STC8系列  性价比更高。
回复

使用道具 举报

56#
ID:105146 发表于 2018-4-7 23:25 | 只看该作者
这个图看着真乱!
回复

使用道具 举报

57#
ID:105146 发表于 2018-4-7 23:38 | 只看该作者
本来是想多打些字,无奈在快速回复时,按错键导致直接发出了!
看了大家的回复,都很认真!
我说下我的观点:1、图真的很乱:蜂鸣器不能直接接IO口线的;EA应该直接接VCC;两个LED上串的电阻阻值太大了(10K);2、程序如果想截图的一样,则两个LED应该始终是亮的(前提是两个限流电阻在1K以下)———原因是所有的口都是低电平;如果把截图中注释掉的两条语句加上,则两个LED应该始终是灭的————原因是输出低电平的时间太短了,只有几个机器周期,人眼根本分辨不出来;3、如果想实现亮、灭闪烁的效果,应该把P1=0;P2=0;P3=0;P0=0;这几条语句放在循环的外面即可。

评分

参与人数 1黑币 +70 收起 理由
admin + 70 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

58#
ID:299857 发表于 2018-4-8 22:20 | 只看该作者
oohoh 发表于 2018-4-3 23:02
我也遇到过类似问题,现象很诡异,P口高电平,在VCC和地之间接led加10K电阻,运行正常。怀疑单片机和开发板 ...

这样吗?我赶紧试试。谢谢
回复

使用道具 举报

59#
ID:299857 发表于 2018-4-8 22:24 | 只看该作者
QIANLILI 发表于 2018-4-7 22:44
这和双面板没关系的。 还是找找电路图和布线是否有错误的原因吧。你可以用万用板先搭个最精简的 测试下LE ...

哈哈,我前天就是这样试的,得出结论我的最小系统是没有问题的。
剩下的还没找到原因,还在研究。
谢谢你用心答复,我好感动。
回复

使用道具 举报

60#
ID:299857 发表于 2018-4-8 22:35 | 只看该作者
wjshw 发表于 2018-4-7 23:38
本来是想多打些字,无奈在快速回复时,按错键导致直接发出了!
看了大家的回复,都很认真!
我说下我的观 ...

哈哈,实在不好意思。初学者,抱着一颗试一下行不行的心,所以没有过多在意是否好看。
不过你说了,我才想到蜂鸣器还需要驱动芯片,LED电阻是有点大了,我再改改。
那个EA脚,我已经后台用线连过了。
但代码在开发板上是可以正常运行,就这样的代码加上后面的注释,LED是正常闪烁的。
谢谢您认真的回答。
回复

使用道具 举报

61#
ID:304391 发表于 2018-4-9 14:22 | 只看该作者
CPU及其它所有的器件取电都从D1二极管的负极取,要不然有电压差。蜂鸣器加个NPN三极管驱动一下,三极管基极串接一个2.2K电阻到IO口,LED串接的电阻1K-2.2K都行,按键那2个10K的电阻做成上拉10K,按键直接对地即可。
回复

使用道具 举报

62#
ID:299857 发表于 2018-4-10 21:45 | 只看该作者
e0631 发表于 2018-4-9 14:22
CPU及其它所有的器件取电都从D1二极管的负极取,要不然有电压差。蜂鸣器加个NPN三极管驱动一下,三极管基极 ...

好好,我试试。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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