用C语言编程 利用单片机的P1.0--P1.3接四个发光二极管L

作者&投稿:彘云 (若有异议请与网页底部的电邮联系)
用C语言编写单片机程序,我想定义P1.0~P1.3作为步进电机的输入,但是P1的其他口都有占用。~

到底是输入还是输出?想定义为输入,然后让其它管脚输出方波吗?
……单独操作这四个管脚就行了。通过sbit P10 = P1^0; 这样的位定义将你需要操作的管脚单独定义出来,然后直接操作即可。
对于51不建议使用 P1 ^= 0xF0; 这样的语句,有可能产生读寄存器指令而不是读管脚指令,某些情况下会导致程序输出结果与预期不一致,令初学者无所适从。

用c语言用汇编语,都行?

主程序如下:
sbit key=P3.7;
uchar a=0;
void main (void)
{
a=P1>>4;
P1=a;
while(1)
{
if key==0)
{
delay_ms(20);
if key==0)
{
a--;
while(key==0);
P1=a;
}
}
}
}
延时函数略,不过用4个发光二极管指示数值很不直观

你想问什么


桦南县13128219943: 用C语言编程 利用单片机的P1.0 -- P1.3接四个发光二极管L -
革榕抗病: 主程序如下: sbit key=P3.7; uchar a=0; void main (void) { a=P1>>4; P1=a; while(1) {if key==0){delay_ms(20);if key==0){a--;while(key==0);P1=a;}}} } 延时函数略,不过用4个发光二极管指示数值很不直观

桦南县13128219943: 单片机用C语言编写中断的范例,顺便简述电路 -
革榕抗病: #include//包括一个52标准内核的头文件 sbit P10 = P1^0; void main(void)// 主程序 { IT0=1; //外中断跳变产生中断 EX0=1; EA=1; //打开总中断 while(1) //主程序循环 { ; } }//interrupt 0 代表0号中断,也就是外部中断0 int0() interrupt 0 { P10=~P10; //在中断里取反P1.0,翻转LED灯状态 } 电路很简单,一LED加限流电阻,正极+5V,负极连P1.0.再用一按钮,一端接地,另一端接P3.2.

桦南县13128219943: 请问 有关用C语言描述单片机引脚高低电平语句,除了如P1 - 0表示p1.0口外,还有其他比较方便的表示方法吗 -
革榕抗病: 用P1_0表示p1.0是要声明 sbit P1_0 = p1.0是吧?这样多一步变量的声明而已,用起来其实很方便呀.要是想用另外个方法的话,那就直接对p1整体赋值吧,但是这里有一点就是,对p1整体赋值但是又只想改变p1.0的值就要用与和或运算了 具体做法是:p1 = p1 | 0X80; 设置1 p1 = p1 & 0X7F; 设置0 这样看起来,还没定义变量的方便

桦南县13128219943: 用C语言编写单片机程序 -
革榕抗病: #include sbit csb_SAT= P1^0; //定义超声波发生脚 void delay(void) //延时25微秒,12T芯片用12M误差 0us { unsigned char a; for(a=11;a>0;a--); } void csb_fs(int dat) {while(dat--){csb_SAT=1;delay();csb_SAT=0;delay();}} //发射 void main() { ...

桦南县13128219943: 用c语言怎样能实现当51单片机p1.0=1,则p1.2=1,并保持,直到p1.1=1时,p1.2=0并跳出循环? -
革榕抗病: 方法有很多,最简单的 while( 1 ) { if (p1.0 == 1) p1.2 = 1; else { p1.2 = 0; break; } } 最简单,但是实时性很差.要实时性好的话用中断,我就不写了.

桦南县13128219943: 单片机c语言编程:P0.0,P0.1,同时接地.P1.0为低电平.P0.2接地P1.1自锁十秒.P0.3接地P1.2自锁,P0.0通使段开.
革榕抗病: 单片机c语言编程:P0.0,P0.1,同时接地.P1.0为低电平.P0.2接地P1.1自锁十秒.P0.3接地P1.2自锁,P0.0通使段开.不难的,加上我说 啊

桦南县13128219943: 在C语言编程是怎么给单片机中的存储单元赋值,还有定义I O口那? -
革榕抗病: 这个要具体到单片机接口上,一般定义接口需要关键词sbit 比如定义P1^1引脚.一般可以这么写K=P1^1;关于给存储单元赋值这个跟C基本一样.

桦南县13128219943: 单片机输入输出控制c语言程序 -
革榕抗病: p0=0x01; while(1) {if(p1.1==1) p0 |= 0x08; if(p1.1==0) p0 &= 0xf7; if(p1.2==1 || p1.2==0) p0 |= 0x08; if(p1.0==1 && p1.3==1) p0 &= 0xf7; p0 |= 0x01; } 一个思路吧......

桦南县13128219943: 编写一个单片机的c语言程序 -
革榕抗病: void main() { if(p1.0==1) { delay(200); if(p1.1==1) { delay(200) if(p1.2==1) poweroff(); } } }

桦南县13128219943: 单片机C语言程序设计(开关控制二极管) -
革榕抗病: int0_init(); //外部中断初始化,设置成上升沿中断或下降沿中断 int0() interrupt X //中断函数,中断号我忘记了 {P1|=0X01;delay();P1|=0X02;delay();P1|=0X04;delay();P1|=0X08;delay();P1|=0X10;delay();P1|=0X20;delay();P1|=0X40;delay();P1=0X00;delay();P1=0, }

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