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

51单片机引脚使用问题

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
我这里有一堆对单个引脚的操作代码​( V! `9 H. d+ z5 G
但是现在我要对多个引脚重复操作这些代码​/ B. T. ^/ n- m- V
; S* W# E. u$ k6 J; A1 R6 {
有没有方法能循环遍历引脚?​
$ X. i+ ?( J: ?5 x: p; K或者只能重复写大量代码,对每个代码块里的引脚单独定义?
& D5 h& ?' b/ _
$ z8 J. J7 T6 K9 D1 w8 Q# _

该用户从未签到

2#
发表于 2022-4-7 10:12 | 只看该作者
  Z7 ~, D/ H, c( Y
你可以把他们组合起来
2 Z; x6 m+ V7 i$ ~: W9 }8 o0 g1 I. z( Y. @
void IO_out(uchar dat)
, t/ w+ N$ z: I3 f. a# m! ]; X, c  ?{! R; q, i7 c9 N8 {3 ^" V, V
  P34=dat&0x80;4 ?% O. m4 s: n  b! P. s( s; {: W$ z( I
  P30=dat&0x40;2 v6 x3 u8 z: Q- ^2 D7 e
  P12=dat&0x20;
" P2 O$ b, a' o9 o  P10=dat&0x10;2 I/ J2 s  i+ `8 [! g" {
  P32=dat&0x08;2 l% f  C! n( n/ O8 m% X9 ]' ^- R+ V& s
  P33=dat&0x04;. s1 `1 z+ t: R( O% k: h# g0 X" @; P: O
  P13=dat&0x02;1 \' `, [; I: }! |; b3 }
  P11=dat&0x01;
7 ]1 r) [6 V" I2 U& a1 e}+ x' t" v* D, a5 q/ ?3 J, }
IO_out(0xFF)就是全1; }5 f7 a# E* O
char可同时控制8支脚8 B7 t; f7 Z+ H2 |5 L
int 16支
6 B; D2 A8 L6 l1 Ulong32支

该用户从未签到

3#
发表于 2022-4-7 13:34 | 只看该作者
" k5 F* F( g. n+ q
他的意思是可以像函数调用那样灵活的选中某个引脚。
) M% ?' b# [- y$ i, u
$ m; J7 E. Y  g2 \7 G; J' I6 l7 ?' L51内核的基本指令不支持这样的操作。不管是MOV 指令还是SETB指令,都只能以直接地址的方式访问相应的IO口整个口或者是单个的bit。不能使用@Ri,或者@A,或者@DPTR的方式去访问SFR和bit。所以底层上没法直接支持。
4 [: z6 `8 U3 `( i3 U" Z* v0 ~4 w5 n: Y2 m5 ?/ ]& t$ W9 }  W0 z
但是你可以自己写个函数里面写上一堆  if  或者 switch 来实现。

该用户从未签到

4#
发表于 2022-4-7 14:35 | 只看该作者
2 q' a& `* ~  y; `
直接放上代码,直接提出问题,大家中有猜的兴趣的未必是你想要的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-6-21 23:07 , Processed in 0.062500 second(s), 23 queries , Gzip On.

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

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

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