请选择 进入手机版 | 继续访问电脑版

普中开源电子分享网

 找回密码
 立即注册
搜索
查看: 1027|回复: 6

端口复用有点疑惑

[复制链接]

1

主题

2

帖子

7

积分

新手上路

Rank: 1

积分
7
发表于 2023-5-9 23:01:48 | 显示全部楼层 |阅读模式
在学习蜂鸣器这章,我发现LED的某个小灯和蜂鸣器用的都是P2.5这个端口。单片机是怎么区分我用的是蜂鸣器还是点亮小灯的嘞?(我买的是stc89c52)并且,我觉得我写的和给的源码一个意思,但结果却是点亮小灯。给的实验源码是蜂鸣器响,好郁闷。我写的如下:
sbit beep =P2^5;
void main
{int Times=2000;
int Delay_times=100;
while(1)
{ while(Times--)
{ beep=!beep;
   while(delay_time--);
}
Times=0;
beep=0;
}
}

回复

使用道具 举报

1

主题

2

帖子

7

积分

新手上路

Rank: 1

积分
7
 楼主| 发表于 2023-5-9 23:06:51 | 显示全部楼层
请忽略大小写问题,拿手机码的,没怎么注意,请见谅。而且,我对于sbit关键字的理解不应该是对寄存器的某一位起了个别名嘛,如果同时起了两个不同的名字,那对这两个的操作不都应该是对寄存器的对应位操作嘛。。例如:P2^5 既可以控制小灯又可以控制蜂鸣器,但是它俩操作逻辑是反的。没办法做到一边亮灯一边响吧?
回复 支持 反对

使用道具 举报

2

主题

33

帖子

216

积分

中级会员

Rank: 3Rank: 3

积分
216
发表于 2023-5-12 11:28:14 | 显示全部楼层
会一边亮一边响的
回复 支持 反对

使用道具 举报

2

主题

33

帖子

216

积分

中级会员

Rank: 3Rank: 3

积分
216
发表于 2023-5-12 11:28:37 | 显示全部楼层
锦斌 发表于 2023-5-12 11:28
会一边亮一边响的

只是说只能控制一个
回复 支持 反对

使用道具 举报

14

主题

48

帖子

256

积分

中级会员

Rank: 3Rank: 3

积分
256
发表于 2023-5-12 15:03:35 | 显示全部楼层
本帖最后由 zhong_zhiqi 于 2023-5-12 15:16 编辑

实验代码里的延时部分你用的是“while(delay_time--);”这个方法进行延时,没有用讲师视频中专门封装的延时函数的方法,代码执行的结果就是这种方法延时的时间要远远大于延时函数产生的延时,换一个说法就是蜂鸣器获得的脉冲频率非常低,自然蜂鸣器只是“咔”的响了一声,反而LED-6可以肉眼可见的闪动。
如果将“while(delay_time--);”这个方法替换成延时函数的方法,然后通过调整输入参数,就可以听见蜂鸣器会产生各种频率的声音了。
回复 支持 反对

使用道具 举报

14

主题

48

帖子

256

积分

中级会员

Rank: 3Rank: 3

积分
256
发表于 2023-5-12 15:12:58 | 显示全部楼层
对于I/O口复用的疑惑,是这样的-实验板只有一个CPU芯片,而为了教学配合多种外部器件和驱动电路,所以几个功能复用一个或几个I/O是不得已的选择,当做一个实验场景时,另一处电路也出现动作是正常的,电路板没有设计隔离去杜绝这个现象,A5-A7版本的好像是通过各种跳线方式进行隔离的。
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|普中开源电子分享网 粤ICP备16123577号-2

GMT+8, 2024-3-29 23:34 , Processed in 0.092731 second(s), 33 queries .

Powered by 论坛搭建 X3.4

Copyright © 2001-2021, Tencent Cloud.

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