找回密码
 立即注册

QQ登录

只需一步,快速开始

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

为什么89C2051单片机P1每位输出总是低电平 附汇编代码

[复制链接]
跳转到指定楼层
楼主
ID:997011 发表于 2022-1-5 16:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
蓝牙与51交叉连接,P1.0接1.5K上拉电阻。给蓝牙发信息P1每位输出总是低电平。恳请大家指教。程序如下;
ORG 0000H
SJIMP MAIN
ORG 0060H
MAIN:
MOV P1,#00H
MOV TMOD,#20H
MOV TH1,#0FDH
MOV TL1,#0FDH
MOV PCON,#0
MOV SCON,#50H
SETB EA
SETB ES
SETB TR1
LOOP:
JNB  RI,$
MOV P1.SBUF
CLR RI
JMP LOOP
END
END

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:955673 发表于 2022-1-5 17:08 | 只看该作者
是你设置的哈
MOV P1,#00H
回复

使用道具 举报

板凳
ID:997011 发表于 2022-1-5 18:29 | 只看该作者
冰火风轮 发表于 2022-1-5 17:08
是你设置的哈
MOV P1,#00H

那是初始设置,之后应是LOOP循环中SBUF赋予的值呀。
回复

使用道具 举报

地板
ID:624769 发表于 2022-1-5 23:45 | 只看该作者
要么
SETB EA
SETB ES
这两句去掉。

要么

CSEG   AT  0023H
JBC  RI,Run_INT
RETI
Run_INT:
MOV P1.SBUF
RETI
回复

使用道具 举报

5#
ID:997011 发表于 2022-1-6 13:13 | 只看该作者
188610329 发表于 2022-1-5 23:45
要么
SETB EA
SETB ES

首先感谢总工的回复解答,试过之后不成就开始怀疑是否自己哪里有问题。检查硬件才发现自己犯了不该有的低级错误。原因是蓝牙的TXD与51的RXD在线路板上连接处有虚焊,导制51根本收不到任何数据。原程序是没问题的。我原先是用过中断编程的。后来没把那两句去掉,应按总工的提示去作使程序更简睫。
回复

使用道具 举报

6#
ID:624769 发表于 2022-1-8 13:16 来自手机 | 只看该作者
源程序是有问题的,你开了es,就必须在0023写中断函数,并且有reti返回,不然你只要发了串口数据,就会PC入栈,而没有PC出栈,堆栈溢出只是早晚的事,虽然你这个程序没有用到r寄存器,也许溢出后绕个圈,还能接着溢出,但是这种写法本来就是跑飞的写法。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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