单片机c语言中P0端口定义如果不用到P0^0,而直接用后面的该如何做?
如果是C51单片机
#include
void main()
{
int i;
while(1)
{
for(i=0;i<7;i++)
{
//用移位和位与的方式来判断P0中是否有一位是高位
if(P0&(0x01<<i)
{ //P0有一位是高位时用count计数
count++;
if(count>=3)
{
//计到3时使能P2。0
count=0;
//使能P2
P2^0=1;
return ;
}
}
}
//如果找完一次P0口后都不够三个1 则进行下一次找描
P0=0x00; //
i=0;
}//while's end
}//main's end
思想就是不断的循环移位和位与的方式判断P0口,直到P0口有加到三个一的时候才跳出,写得不怎么好你自己根据需要去修改!
如果对于C语言。P0只是一个普通的变量。但是对于C51单片机语言,P0有其特定的含义。特指通用输入输出端口(GPIO)的第0组端口。也就是说,P0是和硬件芯片上的一组管脚,共计8个管脚相对应的。
当使用P0=0xfe这种形式时,该组管脚必须被配置成可写的,也就是可用来输出的形式。
0xfe转为二进制值为1111 1110, 所以在这样赋值后,该组8个管脚依次会按照对应位的值,输出高(1)或者低(0)电平。 对于0xfe, 则对应电平为高高高高高高高低。
然后用number_table去或一下就不会影响到p00了
这里注意要将number_table的p0^0位清零
不太明白你的问题什么意思咯。用哪个端口是看你的硬件是如何连接的啊,没啥理由要重定义P0这样的东西的嘛。
你每次赋值的时候用1去或以下p0^0不就不影响它了吗
如何用单片机c语言实现相邻的两个灯一起亮
这个挺好办的,比如想让P1.0的P1.1两个引脚上的灯同时亮,而且高电平是亮的话,那就可以写成 P1 = P1|0x03;实现同时亮,同理可以实现同时灭,P1 = P1&0xFC;也可以实现一个亮一个灭,同时。
单片机8051 P0端置1或置0有什么不同?
51单片机每个端口都有8个管脚。P0端口细分下,其实含有:P0.0 P0.1 P0.2 ... P0.7 共8个管脚,你可以单个管脚进行1或0复制(赋值后具体体现在单片机上的就是:置1的管脚会输出高电平(5V),置0的管脚会输出低电平(0V)),倘若直接对整个P0赋值1的话(P0=1),(由于C语言的规范)实际上只...
单片机在Keil中用C语言怎样在PO口输出地址和数据,怎样输出16位的地址...
输出的是二进制数,至于是地址是数据要看你的外设控制端口的接法!ALE只是外部存储器的读写使能信号!只有在单片机没有任何程序,刚上电的时候,ALE输出1\/6的Fosk,希望可以给你建议!
在C语言中P0 = i + (i<<4);是什么意思
你这里应该是单片机的C语言编程,P0为单片机的IO口 P0=i+(i<<4);就是把一个数送到单片机P0口上。如果 i==0:P0=0+(0<<4) 还是0 i==1:P0=1+(1<<4) ---> 看二进制:0000 0001 + 0001 0000 ==00001 0001 为17 i<<4:就是把i这个数左移到第4位 0001 0000 (注意:...
求用c语言写的八位数码管动态显示程序,P0控制段,P2控制位。
include"reg51.h"include "intrins.h" \/\/_nop_();延时函数用 define uchar unsigned char define uint unsigned int define SEG_OUT P0 \/\/段码输出口 define BIT_OUT P2 \/\/扫描口 sbit dot=P2^7; \/\/LED小数点控制 uchar code tab[12]={0xC0,0xF9,0xA4...
这里面的p0=com是什么意思呢?整个程序执行的是什么命令呢,比如显示数 ...
p0=com是单片机控制1602液晶一般主要对其进行写操作,控制1602显示,很少从1602读数据。运算语句一般来说都表现了在存储器内的数据进行运算的行为,然后将结果存入存储器中以便日后使用。高阶命令式编程语言更能处理复杂的表达式,可能会产生四则运算和函数计算的结合。循环语句容许一些语句反复运行数次。循环...
51单片机中的P0口如何独立操作。
SETB P0.0 ; 置P0的位0为1 CLR P0.0 ; 清P0的位0为0
动态数码显示技术 c语言程序 单片机c51
{ while(1){ P2=wei[i]; \/\/ 送位码 if(k==1)P0=dis12345[i]; \/\/ P1_7高时 送段码12345 else P0=dishello[i]; \/\/ P1_7低时 送段码hello i++;if(i>4) i=0;for(j=0;j<500;j++) ; \/\/单个数码管延时 } } 点开“查看大图”,然后另存,再打开查看更大的图。
在C语言程序中,sbit P0_1=P0^1; 这条语句是什么意思?
这个应该在单片机之类中有用到,这是把单片机中P0的第二个口(从0开始)重新命名为P0_1,以后你要用这个口就直接写P0_1就行了。因为在系统自带的文件中,是把控制P0口的地址定义为P0,那么P0^1代表对P0进行位操作,即取P0的第二位.但在实际应用中,一般是不可直接用P0^1的,因为^这个东西本...
单片机编程中P0=0x7f,这个十六进制数是什么意思
0x7f = 0111 1111 0x是十六进制的开头表示,p0.7的电平被赋为低电平(0),其它引脚为高电平,LED的另一端接着电源,低电平这个脚会构成通路,所以这个LED亮。0xfe转为二进制值为1111 1110, 所以在这样赋值后,该组8个管脚依次会按照对应位的值,输出高(1)或者低(0)电平。 对于0xfe, 则对应...
家牲硫酸: 先对p0^1到7做一个清零 P0 &= 0x01 然后用number_table去或一下就不会影响到p00了 这里注意要将number_table的p0^0位清零
银川市17743282502: 单片机C编程 为什么不能用 P0^0 = 0; 这种语句 - ?
家牲硫酸: 为什么不能用 P0^0 = 0 这是因为你的头文件不是自己写的,你也是用的他的标准文件,如果是你自己写的,在头文件中有P0^0的定义是可以的,所以你要用时先必须用sbit定义,在程序的前面定义sbit P0_0=P0^0,这样编译时就不会出现未定义的错误.
银川市17743282502: 单片机中sbit P0=P2^0是什么意思 - ?
家牲硫酸: 单片机中sbit P0=P2^0是一个位变量定义语句,意思是定义位变量P0为P2.0.但是从这句话本身来说,在编译时会出错的,因为P0是内部关键字,代表P0口,不能用来表示用户自定义变量.
银川市17743282502: 单片机P0^0,P0^1,P0^2这些是什么意思,是不是表示那个接口的地址? - ?
家牲硫酸: P0^0,P0^1,P0^2分别表示P0口的D0、D1、D2位,也可以理解为其地址,其实P0口就一个地址即80H,P0^0,P0^1,P0^2只是这个地址代表的前三位.
银川市17743282502: 单片机的头文件在程序中起到什么作用 - ?
家牲硫酸: 单片机基本寄存器的定义,没有头文件,单片机不能执行任何程序,相当于最底层的驱动
银川市17743282502: 单片机C语言程序里P0M0,P0M1等等的是什么意思呢? - ?
家牲硫酸: 你看到的程序应该是用在STC单片机上的,因为STC单片机的P0,P1,P2,P3口可以设置成四种工作模式,即开机处于的准双向口,推挽输出,高阻输入,开漏输出这四种.如果需要设置成其余的3种,就要通过对各自配置寄存器来设置的,你的P0M0,P0M1就对P0进行设置的,同样有P1M0,P1M1是对P1口进行设置的,以此类推.
银川市17743282502: C51程序中运行过程怎样改变已定义全局引用的符号端口,即原sbit INPUT=P0^0,要改定义为sbit INPUT=P0^1 - ?
家牲硫酸: #define INPUT P1 此处不能有等号,另外,注意大小写 我觉得,在程序开头定义一次就足够了,不需要以后再定义,你也可以把所有需要定义的常量、端口等放到一个c程序中,然后在其他程序应用时,#include “...”就可以了,非常方便,而且改起来也很容易了.不知道是否符合你的需求,当做建议吧.
银川市17743282502: 单片机C语言中P0=0xfe是什么意思?
家牲硫酸: P0口的8个引脚被赋值成1111,1110,就是说只有P0^0口是低电平,其余都是高电平!8个引脚与0xfe的2进制分别对应!
银川市17743282502: 单片机,是不是P0~P4口作为I/0口中输入时都要先写1啊 - ?
家牲硫酸: 答:单片机只有P0-P3口,没有P4口. P3口包括中断入口、串行通讯口、片外数据存储器选通口,所以一般不当做I/O口来用. 如果用P0-P2作为I/O口,由输出口转为输入口时要先写1.这是由它们的引脚结构决定的.因为你要读外部电路的电平,要先把引脚和地断开,当你写1后,引脚就和地断开,这样读到的就是真实的电平了.不然的话,如果一开始引脚和地连接的话,无论外部电路是高电平还是低电平,引脚都会把它拉低,这样你读到的总是0.
银川市17743282502: P1 = 1<<(P0 & 7); 单片机C语言 这句话是什么意思 - ?
家牲硫酸: P0与7位与操作,即P0的每一位分别和0000 0111进行逻辑与运算,然后 1左移的P0&7位数.假设P0=1111 1111 那么P0&7=0000 0111=7;那么P1=1