标题: 51单片机P1=0xff是什么意思,为什么要这样定义? [打印本页]

作者: Knigit    时间: 2019-4-15 16:55
标题: 51单片机P1=0xff是什么意思,为什么要这样定义?
如题
作者: zhouwanli2019    时间: 2019-4-15 19:04
单片机C语言中,p2=0xFF的0xFF表示16进制的FF,对应的二进制为1111 1111
作者: jswdwsx    时间: 2019-4-15 20:11
十六进制数0xff转化为2进制就是1111 1111,分别对应I/O的8个口线,所以0xff的意思为P1口8个口线全为1也就是高电平
作者: WhiteBury    时间: 2019-4-15 20:23
0x表示为16进制显示,F为16进制下的15,所以P1=0xFF意思是P1口的P1.0到P1.7的全部口都为1(高电平),即11111111
作者: wicos    时间: 2019-4-15 20:50
我也是初学单片机,我用得最多P0=0xff;这句最多的是在操作数码管时用来对数码管消影的。16进制的0xff相当于二进制的1111 1111.因此使用这个命令就相当于给P0 的1-7IO口全部给高电平。具体还要结合你的代码来分析。
作者: weiweimao1    时间: 2019-4-15 21:05
表示把P2口的8个IO口全部拉高。
作者: 柳铁钢    时间: 2019-4-15 21:10
P1的引脚口,都输出一个高电平,至于定义的话,要根据电路需要,如果是刚学的话,可能是教你怎么去使能I/O口。
作者: js408917272    时间: 2019-4-15 21:45
0xff是十六进制数,0x是C语言里面十六进制数的标识,十六进制数0xff转化为2进制就是1111 1111,分别对应I/O的8个口线,所以0xff的意思为P1口8个口线全为1也就是高电平
作者: 1311638554    时间: 2019-4-15 22:25
0xFF转换成二进制是1111 1111,对应的就是P2.7到P2.0输出1,最右面是最低位
作者: chtyise    时间: 2019-4-16 00:16
P1就是一个标号,库文件定义这个标号指向片内特殊功能寄存器,这样通过这个标号访问片内寄存器。这么定义就是为了好记,使用方便。51单片机P1都是固定指向八位IO口,P1=0xff使八个口都输出高电平
作者: 黎明zxq    时间: 2019-4-16 08:42
把单片机P1端口全部设置为高电平,一个P1端口有8个IO,0XFF相当于1111 1111 ,每个1控制一个IO,这样就把整个P1端口全部设置为高电平了
作者: FOLLOWME123321    时间: 2019-4-16 12:27
P1为8位双向IO口,0XFF的意思就是1111 1111一个F对应4位二进制数。即让P1口全部为高电平
作者: zyj1850661856    时间: 2019-4-16 12:32
0xff也就是P1口全为1,就像二极管,负极如果接在单片机上,如果P1口是高电平1,则灯不亮,如果有信号让P1口都为0,则灯就点亮了
作者: s'g's'y'f    时间: 2019-4-16 13:14
对应的二进制为1111 1111,
作者: Adolph.Y    时间: 2019-4-16 16:23
楼主你的问题是不是单片机初始化的时候有P1=0XFF?这个不是定义的,楼上的说的对,是往P1口写入0xFF。为什么要这样写,是因为早期的51单片机P1口是准双向口,作为输入口也要先初始化为高,确保其状态稳定~~
作者: moqiyaa    时间: 2019-4-16 18:32
0xff就是二进制1111 1111就是把P1全部置为高
作者: 郑汉松    时间: 2019-4-17 21:35
P1端口全为高电平‘1’,0x是十六进制的意思,ff就是1111 1111的意思
作者: 鬼推磨    时间: 2020-3-4 18:01
那只是把其中P1.2和p.4端口为高,其他P1.0  P1.3 P1.5 P1,6 P1,7 P1,8端口为低呢,怎么设置呢
作者: 木原晶    时间: 2020-3-5 09:38
鬼推磨 发表于 2020-3-4 18:01
那只是把其中P1.2和p.4端口为高,其他P1.0  P1.3 P1.5 P1,6 P1,7 P1,8端口为低呢,怎么设置呢

P1=Ox40
作者: adject    时间: 2020-3-5 10:13
P1 是51单片机 p1口 寄存器的 宏定义
//I/O 口特殊功能寄存器
sfr P1          =   0x90;
p1 = 0xff; 就是把0x90地址 赋值0xff
p1口输出高电平
作者: carpcarey    时间: 2020-3-5 14:50
十六进制数0xff转化为2进制就是1111 1111,分别对应I/O的8个口线,所以0xff的意思为P1口8个口线全为1也就是高电平。
为了速度优先,这样执行只要2周期就把P1口全部高电平了。
作者: carpcarey    时间: 2020-3-5 14:53
木原晶 发表于 2020-3-5 09:38
P1=Ox40

51单片机P1口没有P1.8吧?
P1=0x14;     //00010100
                   //76543210
作者: haierzaifei11    时间: 2020-3-5 16:16
P1口8个口线全为1也就是高电平
作者: 1902562889    时间: 2020-3-5 17:42
oxFF对应的二进制就是1111 1111.这样设置就是将P1口全部设置为高电平,这样采用十六进制定义的方法较简便
作者: Ra8    时间: 2020-3-5 18:42
意思就是设置高电平  串口有电过去
作者: CZ1    时间: 2020-3-5 22:43
就是将P1端口的8个引脚全部拉高,这种一般是初始化定义,因为不定义你不知道当前I/O口状态
作者: hghvhgv    时间: 2020-3-6 10:52
0x是十六进制,ff代表两个15用二进制表示就是1111 1111
作者: hghvhgv    时间: 2020-3-6 10:53
这样定义主要是好操控寄存器、
作者: hghvhgv    时间: 2020-3-6 11:11
因为单片机是8位寄存器控制所以需要ff
作者: 3130515360    时间: 2020-3-6 11:37
P1就是P1.0到P1.7八个端口,0xff是16进制,换成二进制就是1111 1111,在单片机引脚中1代表高电平,这样写就是说P1的8各引脚全置高电平
作者: muse122334    时间: 2020-3-6 17:54
C语言中F的0xFF表示16进制的FF,对应的二进制为1111 1111
作者: 诗酒赎春风    时间: 2020-3-6 18:12
ff是十六进制表示全是高电平
作者: sb单片机老师    时间: 2022-9-16 08:36
zhouwanli2019 发表于 2019-4-15 19:04
单片机C语言中,p2=0xFF的0xFF表示16进制的FF,对应的二进制为1111 1111

听君一席话。。。。。。。。。。。





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1