单片机C语言怎么能对P2口的1,2,3,4,5位进行清零或者置一,而不影响其他位的数字?

作者&投稿:中叔昌 (若有异议请与网页底部的电邮联系)
单片机问题:P2口的低4位为数据口,高4位为控制AD的信号线,初始化时将P2口全部置1没问题的吧?还有我将外~

每读一次数据,你就要把p2口置1,要不然就读不出来,程序就出错。p2口是准双向口。还有ad是什么型号,怎么只有4个数据端口,不是要么8位并行要么串行么?


第4位清零(最低位是第0位时):p1&=0xef;
第4位清零(最低位是第1位):p1&=0xf7;
高4位置1:p1|=0xf0;

这种单独对指定I/O口赋值而不改变其他位的操作在430单片机用的很多的。
比如:你要给P2.1和P2.2赋1,但不想改变其他位,那么你可以这样写:P2=P2 | 0x06(51单片机的写法)P2OUT|=0x06(430单片机的写法)。
要给指定端口置0,而不影响其他位。比如要求P2^1=0,其他位不变。P2=P2&0xFD(即要置0 的那一位与0,其他位与1)这样就能保证不影响其他位了。

首先明确一点,单操作一个引脚和操作一排引脚效果是一样的,只要你操作的时候没有改变其他引脚的值就ok了。

其次,单独改动一个引脚的值你可以定义如下:
sbit P2_0 = P2 ^ 0;
这就是只操作P2的第0个引脚。

最后如果你想一次性修改P2的某几个引脚,可以用位与或者位或(& |)来进行操作。如:
P2 = P2 & 0xff;
具体的用法就要因你自己的需要来定了。

P2口有8位 若只对1,2,3,4,5位进行操作,其他位的数字动 让P2&11*****1
就能实现了

跟0取异或为保持原来信号,跟1取异或为取反,所以取P2的异或,需要改变的位对应的取1的异或~


单片机C语言编程教程
单片机c语言编程学习必看的关于模电,数电,电路这三本书,为接下来的学习做铺垫。看书的目的是因为网上的教程太多太混杂,容易带偏,做单片机软件开发其实只要看得懂电路原理就可以了。简介 单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。相当于一个...

一个很简单的delay延时小函数,有点小问题,请C51高手帮忙!
这是c的编译规则的问题。对于int型7FFF次是可直接执行的 因为不管你定义的是什么型,对于1个循环跳转次数来说都是0-255是单跳转 0-7fff是2个跳转嵌套,16位数的最高位是符号的。这里不管i是什么型 对于循环就是把i的值带入入口而已。通常做软循环不建议用INT的变量因为太不好就算了 而且切效率低...

单片机编程语言一般有哪几种
例如,懂得汇编语言指令就可以便用在片内ram作变量的优势,因为片外变量需要几条指令才能设署累加器和数据指针进行存取。同样的,当要求便用浮点数和启用函数时也只有具备汇编编程经验才能避免生成庞大的、效率低的程序,对于这方面的编程,没有汇编语言是做不到的。2.单片机的C语言 单片机的C语言是一...

C语言与单片机C语言的区别 急求
单片机c语言比起普通C语言增加了一些基本的指令,变量的赋值是16进制,当然单片机c语言只牵涉到普通c语言的基础部分。具体体现在:1、单片机中C的语法一般都对 ANSI C有些扩展,及一些特殊写法 如C51扩展的 data xdata bit sbit 一类的,还有一些中断程序写法 void int() interrput 1 一类的。2、C是...

C语言 电影院售票(坐位)系统
这是我自己做的, 是用C# 实现的,,如果你的其它语言,稍做修改,应该符合你的题目:选题的根据:1) 本选题的理论、实际意义 2) 综述国内外有关本选题的研究动态和自己的见解 1) 本选题的理论、实际意义 影院售票系统是计算机技术与影院管理相结合的产物,通过影院售票系统实现了对影院的高效 管理。

时间片轮转算法和优先级调度算法 C语言模拟实现
进程调度是处理机管理的核心内容。本实验要求用高级语言编写模拟进程调度程序,以便加深理解有关进程控制快、进程队列等概念,并体会和了解优先数算法和时间片轮转算法的具体实施办法。二、实验内容1.设计进程控制块PCB的结构,通常应包括如下信息:进程名、进程优先数(或轮转时间片数)、进程已占用的CPU时间、进程到完成还...

请问8位与32位的单片机在编程上有什么不同,需要注意些什么!
用C语言编程的话,没什么不同 不管是8位的32位的,硬件结构不同,功能也会相差很大,主要区别就 体现在特殊功能寄存器上,用 C语言操作单片机,可以不进行内存管理,但离不开对特殊功能寄存器的操作 即使都是8位单 片机,特殊功能寄存器也相差很大 至于通用的数学运算,利用C语言的库函数,编程时认为...

c语言中的switch语句,使用时应注意哪些?
若制砂机长期固定作业,应将其固定在水泥基础上;若制砂机是流动作业,机组应安装在用角铁制成的机座上,并且保证动力机(柴油机或电动机)和制砂机的皮带轮槽处于同一回转平面。 C语言switch语句使用 switch(a);不要分号 swhich后面没有分号 安全帽的作用及使用时应注意哪些 安全帽的作用: 从安全帽的外型上看十分...

C语言好还是C好_哪种c语言比较好
C是一个结构化语言,如谭老爷子所说:它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制),而对于C,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务...

计算机二级C语言如何备考?
函数fun的功能是交换两个变量x和y的数值,所以在fun函数中首先输入___(3, 2),这一步大部分考生都能写对,关键是要看在主函数中的printf输出什么。在C语言中,数据一般只从实参单向传递给形参,形参值的变化不会影响对应的实参,所以尽管在这两个函数中变量名都是X和y,但主函数里x、y的值并没...

西区17822655963: 单片机C语言中如何取单片机P2口的地址 -
茆宝卡罗: 可以采用位域的方法 struct PORTA {int P0 : 1; . .int P7 : 1; } P0到P7每个占一位,至于具体的地址要看你的单片机头文件

西区17822655963: 我是新手,想问一下C51单片机中怎样才能让P2端口连接的LED灯闪烁3次,然后灭掉.求C语言程序! -
茆宝卡罗: led共阳接线 p2端口连接led负极 程序控制p2输出高低电平就可以闪烁了

西区17822655963: 在单片机C语言编程中怎么定义输入口P2
茆宝卡罗: 你可能是一个初学者吧?这个P2口是不需要定义的,再头文件中肯定已经定义了.比如MCS51单片机中 #include <REG51.H> 在REG51.H中,已经包含了P2口的定义(你可以打开这个文件看看).在使用的时候你直接使用就可以了.比如: if(P2 == 0x00) { …… }

西区17822655963: 单片机c语言中(P2&0x02)?1:0;这条语句是什么意思? -
茆宝卡罗: 比如写语句 a = (P2 & 0x02) ? 1:0; 它的意思是: 从P2口取出1个字节,然后把这个值和2相与,如果“与”后的结果不等于0,则把1赋给a, 否则把0赋给a

西区17822655963: c语言 单片机 将数据的某一个位替换成指定的值 -
茆宝卡罗: P2 |= 0x02;就是对一个字节的第二位进行置位

西区17822655963: 求一个基于AT89S51单片机的PWM调光的C程序,LED接在P2口,按键接在P3^2 -- P3^5,要求P^2按下增加亮度 -
茆宝卡罗: #include sbit K1 =P3^2 ; //亮度增加键 sbit K2 =P3^3 ; //亮度减少键 unsigned char PWM=0x7f ; void delayms(unsigned char ms); void delay(unsigned char t);/*********************************************************/ void main() {P2=0xff; TMOD=0x21 ;...

西区17822655963: 单片机C语言中p2=0xFF,0xFF什么意思? -
茆宝卡罗: 单片机C语言中,p2=0xFF的0xFF表示16进制的FF,对应的二进制为1111 1111在51单片机中(以51单片机为例),共有4组I/O端口,分别为P0、P1、P2和P3,每组端口共有8个数据位(引脚)(51单片机是8位的单片机),所以对端口进行赋值的时候,2位的16进制刚好是8位的二进制数. 而单片机中,端口电平都是用高低电平表示的,也即0(低电平)和1(高电平).所以每一位二进制分别对应相应的电平值.如:P2=0xFF表示对P2组端口的8个引脚分别置高电平.

西区17822655963: c51单片机C语言编程 一个口保持输出高(1) 一个口保持输出低(0)怎么做 求完整程序加注释 -
茆宝卡罗: #include sbit P20=P2^0; sbit P21=P2^1; //定义位变量,将P2^0、P2^1口的值赋给变量P21、P20 void main() { while(1) { P20=0; P21=1; } }

西区17822655963: 单片机中C语言程序P2 = (P2+1)%8什么意思?? -
茆宝卡罗: P2+1 是P2口计数一次 二进制计数(P2+1)%8 是对8求余,也就是最多显示到7(0b0000 0111) 总的说来就是P2输出0b0000 0000~~~0b0000 0111

西区17822655963: 51单片机怎样可以将P1跟P2的端口用程序处理像条导线一样连接起来 -
茆宝卡罗: 导线一样连接起来?那不是短路么?你是想把P1口的信号转到P2口去么?C里直接P2 = P1; 就可以了,把P2口的信号转到P1口去P1 = P2;

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网