找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2517|回复: 7
收起左侧

关于单片机定义的代码理解

[复制链接]
ID:590194 发表于 2020-11-3 12:30 | 显示全部楼层 |阅读模式
经常看大神的代码.发现有些就是看不明白
关于ADC转换

ADC_CONTR=ADC_POWER|ADC_SPEEDLL|ADC_START|ch;

这种很明显.很容易懂..
但是有一种就不是很明白.

        P1ASF=0xC1;                //设置P1.0,P1,6,P1.7为ADC引脚,P1ASF为只写寄存器,读取无效

这种0XC1怎么就能代表3个引脚??
回复

使用道具 举报

ID:514901 发表于 2020-11-3 14:41 | 显示全部楼层
0XC1 = 1100 0001
1表示有效,所以是三个引脚
回复

使用道具 举报

ID:837776 发表于 2020-11-3 15:43 | 显示全部楼层
第一种是库函数方式,二种是寄存器操作方式,优点代码间洁就是要对寄存器比较了解多查数据手册
回复

使用道具 举报

ID:590194 发表于 2020-11-4 08:25 | 显示全部楼层
郑汉松 发表于 2020-11-3 14:41
0XC1 = 1100 0001
1表示有效,所以是三个引脚

还是没明白.怎么代表P1.0 P1.6和P1.7呢?
回复

使用道具 举报

ID:88256 发表于 2020-11-4 08:59 | 显示全部楼层
sq8422779 发表于 2020-11-4 08:25
还是没明白.怎么代表P1.0 P1.6和P1.7呢?

8个I/O口各占一个字节里的一位,比如只要P1.7有效其余口无效,有效为1,那么就只要将P1.7口对应的位置1就行,其余的置0,最终合成 1000 0000,按你的说法就是代表了一个引脚,而0XC1 = 1100 0001,有3位被置1(P1.7、P1.6、P1.0对应的位置为1),就代表了3个引脚了(实际上是代表了8个引脚,只是3个被置为有效)
回复

使用道具 举报

ID:590194 发表于 2020-11-4 11:04 | 显示全部楼层
hhdsdy 发表于 2020-11-4 08:59
8个I/O口各占一个字节里的一位,比如只要P1.7有效其余口无效,有效为1,那么就只要将P1.7口对应的位置1就 ...

明白你意思了,那我之前看的是有问题,我之前看的是3个进制代表一个数字 000 代表P1.0 011代表P1.3.你的意识最左边的进制是 使能,后面的进制是代表通道..明白.谢谢
回复

使用道具 举报

ID:401564 发表于 2020-11-4 11:55 | 显示全部楼层
数据手册,数据手册!
0xC1是16进制的,你要对着数据手册去选择,把对应的2进制转换成16进制就知道怎么回事了
51hei截图20201104115346.jpg

回复

使用道具 举报

ID:137736 发表于 2020-11-4 17:32 | 显示全部楼层
展开成二进制
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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