找回密码
 注册
关于网站域名变更的通知
查看: 183|回复: 3
打印 上一主题 下一主题

51单片机引脚使用问题

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-4-7 09:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
我这里有一堆对单个引脚的操作代码​& {* w. o1 z9 L2 g: p  q5 t: Q
但是现在我要对多个引脚重复操作这些代码​
# g0 K  |7 N( n- O, U# O& O/ g! \+ h' W7 ?: s
有没有方法能循环遍历引脚?​. m6 B; @- r( h1 e5 e" e* I
或者只能重复写大量代码,对每个代码块里的引脚单独定义?
( o, m: N" C6 X0 s% i  l* ~; U
* T" P! X  J1 z& m! M

该用户从未签到

2#
发表于 2022-4-7 10:12 | 只看该作者

  D6 [; r: W" x: B0 }7 r9 d4 A你可以把他们组合起来  C6 G# x6 ?" l* d* N2 _

) R* n* g; k: s$ a7 H/ Lvoid IO_out(uchar dat)- k. N0 a1 v9 @. I: S
{7 c/ B1 h8 G% S
  P34=dat&0x80;) q# y' ]3 {( b
  P30=dat&0x40;
' ~; @  e) Z3 `3 Z$ s  P12=dat&0x20;, e- |2 q, w1 a- |. b
  P10=dat&0x10;
1 m1 S1 S- B, ^; S  P32=dat&0x08;0 ^' z% s' e3 w) s8 R2 W2 R
  P33=dat&0x04;
* ^5 L7 z: S; ^+ Q# H  P13=dat&0x02;- u: r( P; m5 ~
  P11=dat&0x01;
$ X5 P! j$ {) e* u}
$ o! X4 g# W% h) b" gIO_out(0xFF)就是全1
2 I* v: |9 l( _# ?  X5 c  ?+ ]char可同时控制8支脚# w' M4 n9 s$ g  g
int 16支, I2 B# u/ L/ f, {3 e
long32支

该用户从未签到

3#
发表于 2022-4-7 13:34 | 只看该作者
4 X; ~, V8 Q# ?# H9 F
他的意思是可以像函数调用那样灵活的选中某个引脚。
6 X; e9 P: R! p6 B! i5 o0 y2 j$ O% h0 k) U0 f1 h: ~
51内核的基本指令不支持这样的操作。不管是MOV 指令还是SETB指令,都只能以直接地址的方式访问相应的IO口整个口或者是单个的bit。不能使用@Ri,或者@A,或者@DPTR的方式去访问SFR和bit。所以底层上没法直接支持。: G! D/ S( X  I6 G/ }) {
. @" K- v- p; H# d5 n
但是你可以自己写个函数里面写上一堆  if  或者 switch 来实现。

该用户从未签到

4#
发表于 2022-4-7 14:35 | 只看该作者
! A! ^' J& l3 b' v
直接放上代码,直接提出问题,大家中有猜的兴趣的未必是你想要的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-8-11 21:50 , Processed in 0.109375 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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