用C语言编程 利用单片机的P1.0--P1.3接四个发光二极管L
作者&投稿:彘云 (若有异议请与网页底部的电邮联系)
到底是输入还是输出?想定义为输入,然后让其它管脚输出方波吗?
……单独操作这四个管脚就行了。通过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个发光二极管指示数值很不直观
你想问什么
革榕抗病: 主程序如下: 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, }