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

51单片机引脚使用问题

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
我这里有一堆对单个引脚的操作代码​+ W3 f! ?/ y7 T; L  h! u4 S
但是现在我要对多个引脚重复操作这些代码​% ^3 ~1 T# T# R9 c1 N+ w
7 T  I! k7 N, {) m( H& A
有没有方法能循环遍历引脚?​
# s. w. q% {9 ~4 E, x/ r7 {4 y% q6 Y或者只能重复写大量代码,对每个代码块里的引脚单独定义?
  `/ |( _4 z# G) P! p; J1 e8 y
" j' x5 F) Q6 |+ B' N- u

该用户从未签到

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

9 j1 F7 o1 u. I8 E1 M; b你可以把他们组合起来
5 T- i% w9 H: P2 q" O3 N# G; y) i' J7 F" d+ |" \
void IO_out(uchar dat)
. m$ ~( ]2 ^7 T7 x2 p8 O; e3 L* q' g{
* W4 q/ h8 T! h# U! [9 Z7 ^  P34=dat&0x80;
2 {. r$ _6 q* a9 B! L- d  P30=dat&0x40;
# m! O) j( N& ?- h. y  P12=dat&0x20;
7 B5 q" M2 S" k& }: O  P10=dat&0x10;
7 ^) _/ n9 f4 C7 }  c  P32=dat&0x08;% M% H6 U' y" a4 X; L7 y. M8 W
  P33=dat&0x04;4 g$ S, `3 a' Y5 m6 h( f/ w: r
  P13=dat&0x02;
. D7 t' y+ h9 a  P11=dat&0x01;  X% @" J+ Q; X
}% ~6 p* L" k/ Z: N
IO_out(0xFF)就是全1
3 U6 U+ S2 D( Zchar可同时控制8支脚! J: r% L% }! X& M+ C2 a- _/ d
int 16支
; G1 I2 m: I0 R0 A( Y/ c' L$ Glong32支

该用户从未签到

3#
发表于 2022-4-7 13:34 | 只看该作者
# o/ v, G. D/ G, m, U' ?
他的意思是可以像函数调用那样灵活的选中某个引脚。
" |1 j/ [0 v) V0 x
. P2 ~% ]. I) _4 A( c( `51内核的基本指令不支持这样的操作。不管是MOV 指令还是SETB指令,都只能以直接地址的方式访问相应的IO口整个口或者是单个的bit。不能使用@Ri,或者@A,或者@DPTR的方式去访问SFR和bit。所以底层上没法直接支持。
1 z. C) @. s- a% e# B/ u5 X; N5 D2 X8 y' b
但是你可以自己写个函数里面写上一堆  if  或者 switch 来实现。

该用户从未签到

4#
发表于 2022-4-7 14:35 | 只看该作者
, p2 C* H6 g5 Z; K# m
直接放上代码,直接提出问题,大家中有猜的兴趣的未必是你想要的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-10-9 07:18 , Processed in 0.140625 second(s), 23 queries , Gzip On.

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

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

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