51单片机怎么通过一个管脚控制另一个管脚?

作者&投稿:郭夜 (若有异议请与网页底部的电邮联系)
怎么打51单片机中的某一引脚的信号,从另一个引脚读出来。具体如下~

直接赋值不行,那么你可以间接赋值:
unsigned char temp;
temp=P1;
P0=temp;
这样就可以了。
希望我的回答能帮助到你。

#include //51芯片管脚定义头文件
#include //内部包含延时函数 _nop_();

#define uchar unsigned char
#define uint unsigned int

uchar code FFW[8]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9};
uchar code REV[8]={0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1};

/********************************************************/
/*
/* 延时t毫秒
/* 11.0592MHz时钟,延时约1ms
/*
/********************************************************/
void delay(uint t)
{
uint k;
while(t--)
{
for(k=0; k<125; k++)
{ }
}
}
/********************************************************/
/*
/*步进电机正转
/*
/********************************************************/
void motor_ffw(uint n)
{
uchar i;
uint j;
for (j=0; j<12*n; j++) //转1×n圈
{
for (i=0; i<8; i++) //一个周期转30度
{
P1 = FFW[i]; //取数据
delay(15); //调节转速
}
}
}
/********************************************************/
/*
/*步进电机反转
/*
/********************************************************/
void motor_rev(uint n)
{
uchar i;
uint j;
for (j=0; j<12*n; j++) //转1×n圈
{
for (i=0; i<8; i++) //一个周期转30度
{
P1 = REV[i]; //取数据
delay(15); //调节转速
}
}
}
/********************************************************
*
* 主程序
*
*********************************************************/

main()
{
while(1)
{
motor_ffw(5); //电机正转
delay(5000); //换向延时
//motor_rev(5); //电机反转
//delay(1000); //换向延时
}
}

/********************************************************/

是引脚,不是管脚。
行列式键盘,就是这种控制方法。
去掉按键,把引脚直接连在一起,即可。

为什么要在硬件尚控制,直接在程序里使两个输出相等不就好了,或者,1.0等于什么,1.1怎么样,不是更简单。不是同一个单片机就是检测管脚状态,来控制


跪求!!!单片机题 简述:MCS-51串行口工作方式1时的数据接收过程!_百度...
MCS-51串行口mode 1就是异步通讯方式,没有时钟。要先设好波特率,没有信号时为‘1’电平,数据是一个byte一个byte传,每个byte共十位。先收到的是起始位‘0’,然后是八个数据位,由低到高,最后是停止位‘1’。发送用的是TXD线,接收用的是RXD线。注意,如果用RS232C传输的话,线上的信号...

51单片机怎么用按键控制一个数码管,按一下显示一个数字,顺序显示_百度...
3、确认代码无误后,进入下一步,就是在这一行代码(箭头所指)的地方,将这四个字删去。4、然后如图所示,四个字已经删去,只要改成数字相应的代码即可。5、这里改成的是代表数字0的代码,如图所示。6、最后写好代码后,将生成的hex文件写进单片机,数码管显示的数字就变成0了。

通过51单片机控制一个电磁铁。在完成一个动作后要求电磁铁消磁,做这个...
给电磁铁加电,电磁铁就工作,不加电,电磁铁的磁自然就没有了。电磁铁工作必须提供脉冲信号,所以可以用定时器来做。include<reg51.h>sbit dct=P1^0;void delay(int a){char i;while(a--)for(i=0;i<110;i++);}void t0isr() interrupt 1{dct=~dct;}main(){TMOD=0x02;TH0=216;TL0...

怎么实现单片机输入一个量,判断,在范围内输出1,否则输出0
如果是一个电压的话,我们可以用ad来转化成数字量。 然后判断,输出0 1。 如果是0v 5v附近,可以直接接到单片机的IO口。 这个很简单的。有什么不懂的可以追问

51单片机的端口怎么置1
51单片机的端口 操作 如:MOV P1, #00H ; 字节操作 P1 口 8 位 置 0 MOV P1, #0FFH ; 字节操作 P1 口 8 位 置 1 MOV P1, #0FH ; 字节操作 P1 口 高 4 位 置 0 ,低 4 位 置 1 SETB P1.0 ; 位操作 P1.0 = 1 CLR P1.1 ...

2个51单片机怎么实现通过1—wire单总线通信?最好有借鉴的代码。_百度...
用STC的吧,带SPI总线,我都用这个比较好用,单线的你不是要接到从机的外部中断口了。单线比较烦,共地的话你可以这样干。主机将信号线拉低,从机进主中断程序,定义一个长延时为同步头,然后主机移位传送数据,定义一个长延时结束。最好不要单总线通信,烦的呢 ...

单片机用1个按键控制60秒定时,通过2个数码管显示。按一下启动,再按停止...
DIV AB ;选显示第一位高位 MOVC A,@A+DPTR MOV P0,A ;把显示码传至A口 SETB P2.1 ;选通P2.0,显示 ACALL DELAY1S CLR P2.1 MOV A, B POP B MOVC A,@A+DPTR MOV P0,A ;把显示码传至A口 SETB P2.0 ;选通P2.0,显示 ACALL DELAY1S CLR ...

求5一1单片机程序,要求甲乙两机间通过方式1全双工通信,甲的k1控制乙...
甲:include<reg51.h> define uchar unsigned char sbit k1=P1^0;sbit k2=P1^1;sbit k3=P1^2;void delay(uchar a){ uchar i;while(1--)for(i=0;i<120;i++);} void uart() interrupt 1 { if(RI){ RI=0;P0=SBUF;} if(TI)TI=0;} main(){ TMOD=0x20;TH1=0xfd;TL1=0xfd...

51单片机怎么用串口和两个从机通信?单片机发出的指令两个从机都收到了...
要看你的具体情况,如果你的从机也是单片机可编程的话,可以主从机通信中分别编写不同的通信协议,在发送的指令上加上校验码,从机接收到指令后,先判断校验码是不是符合协议,如果是的话就是给自己的指令,要执行,不是的话则不执行。如果你要控制的从机不可编程,则需要对串口进行扩展,方法有很多...

单片机怎么把4个数组合成一个数?比如分别把1,2,3,4组合成1234_百度知 ...
移位和“或”就可以了。先定义一个16位的变量并清零,然后将1赋予该变量,然后左移4位,再“或”2,再左移4位,再“或”3,再左移4位,再“或”4,就得到了。

梓潼县19756927754: 如何利用51单片机的一个管脚测一个脉冲频率,并使另一管脚发出与之频率相等的脉冲 -
韶佳创必: 假设用P1.0检测脉冲,用P1.1输出检测到的脉冲:while(1) { P1^0 = P1^1; }

梓潼县19756927754: 学习了51单片机的一些知识,但是只知道如何控制单片机的引脚.可是怎么用单片机来控制其它芯片呢? -
韶佳创必: 嘿嘿 俺来帮你解决问题1 首先要确定你要使用哪一款语音识别芯片,然后要根据它的使用说明资料,才能确定如何用单片机去控制它.2 单片机跟芯片到底怎么联系在一的回答: 主要靠单片机的总线进行芯片的连接,即地址总线、数据总线、控制总线.3 如果是为了学习 则可以慢慢学 不断上网请教都行;如果是要开发新产品,最好还是承包出去或找朋友帮忙做为好. 嘿嘿 满意的话 就给点分吧

梓潼县19756927754: 一片51单片机怎么控制另一片51单片机? -
韶佳创必: 第一片单片机的TXD连接到第二片单片机的RXD上第一片单片机的RXD连接到第二片单片机的TXD上然后就可以做 串口通信了每一片都可以发送数据,然后另一片在串口接收中断中处理数据

梓潼县19756927754: 如何让单片机的一个引脚输出来控制继电器,使它一直处于一种状态直到单片机引脚高低电平的改变,它才改变 -
韶佳创必: #include sbit jdq=P1^0; void delay(int a) { char i; while(a--)for(i=0;i} main() { while(1) { jdq=1; delay(1000); jdq=0; delay(1000); } }

梓潼县19756927754: 51单片机,假如一个管脚有电流输入,要在另一个脚产生信号的程序 -
韶佳创必: #includesbit p10=P1^0; sbit p11=P1^1; main() { while(1) { p11=p10; } }

梓潼县19756927754: 如何用单片机实现双路开关交替控制 -
韶佳创必: 看你要控制什么,单片机的端口很多,每个端口都可以控制一个固态继电器或者可控硅,51的单片机常用的都有32个I/O口.写程序直接交替控制一点问题都没有,看你要想怎么控.

梓潼县19756927754: 51单片机程序控制两引脚通断 当51单片机I/O变化时,外部输出两个引脚能控制通断 -
韶佳创必: 将继电器的一副触点的其中一个引脚接5V电源,另一个引脚接单片机的任意一个输入引脚(如P1.1),将另外一个输出引脚(如P2.1)连接你需要的外设.程序的编写,你可以先下载一个空的例程,然后加入:while (1) { P2.1=P1.1; //输入输出的逻辑关系自己定义 delay(100ms); //延时 100ms (这个是胡乱编的) } 同学,你问的宽泛,所以回答只能这样了.

梓潼县19756927754: 51单片机同一个引脚如何实现多个不同的功能?? -
韶佳创必: #include<reg51.h> #define uint unsiged int #define uchar unsiged char void delay(uint); sbit wei1=P3^6; sbit wei2=P3^7; int i=0; int code light[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; void main() { P3=0x00; //忘了是高电平写,还是低电平...

梓潼县19756927754: 51单片机使用485总线怎样控制单片机的双向通讯 -
韶佳创必: 485接口芯片上都有一个方向控制引脚,直接接单片机的I/O口控制即可.485总线是主从式,必须有一个主机,由主机巡检其它子机,巡到谁谁获得总线使用权.

梓潼县19756927754: 可以用一个单片机产生的信号控制另外一个单片机的引脚高低电平吗? -
韶佳创必: 可以啊,被控制的单片机的那个引脚设置为输入就可以了.

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