c语言字符串赋值给端口,单片机c语言,如何将一变量赋给不同端口(如P1,P2,P3)的不同位?...

如果只改动部分位,用逻辑操作:

GPIO |= 0x80;//最高位置位,0x80 = 1000_0000B

GPIO &= ~0x10;//第4位清零,~0x10 = 1110_1111B

例:

GPIO = 0xFF;//GPIO = 1111_1111B

GPIO &= ~0xF0;//GPIO = 0000_1111B

GPIO |= 0xA0;//GPIO = 1010_1111B

这样GPIO就从0xFF,变成了0xAF。

给你两个宏:

#define HI_BIT(PORT,BIT) (PORT |= (1<

#define LO_BIT(PORT,BIT) (PORT &= ~(1<

其中,PORT:P0\P1\P2\P3;BIT:0\1\2\3\4\5\6\7

对了,看到之前的“追问”,感觉你对单片机的I\O口不太熟,之前的是位操作,只会改变要操作的位,对该端口的其他7个位没有影响。如果8个位都要修改,可以用 PORT = DATA;的结构,如把变量Value的值赋给P0口,C语言可以用“P0 = Value;”,汇编用“MOV P0,Value”.

其实I\O口并不复杂,它只是反映了寄存器的值,即Pn(I\O口)口的输出永远等于特殊功能寄存器Pn(寄存器)的值(n = 0\1\2\3),我们只需要修改寄存器(和变量的使用方法一样)的值,就能改变端口的电平。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值