2 设计一个定时器0的中断服务程序 每50毫秒 就中断 在中断程序中软件计数器减1 当减到0时,表示1秒时间到 (重新送初始值20)判断拨动开关状态 如果为低低电平 则选择控制LED的端口内容左移一位 如果为高低

把这句删了sbit led=P1^0; //定义LED为P10,可以改为其他IOunsigned char jishi; void Timer0Init(void)//50毫秒@12.000MHz{ AUXR &= 0x7F;//定时器时钟12T模式

void timer() interrupt 1 { TH0=(65535-50000)/256;TL0=(65535-50000)%256;num++;} 这个程序是逐个点亮的(思路:由256逐减1,值由LED灯显示)include define uchar unsigned char define uint unsigned i

{ P1=0xff; //点亮P1口第0个引脚上的LED灯,0xff为二进制的11111111 delay(1000); //延时1秒 P1=0x00; //将P1口全部置为0,熄灭LED灯 delay(1000); //延时1秒 } } 上述程序的作用是在单片机的P1口上间隔点亮

单片机间隔点亮一led灯的C语言程序

4、找到相应的文件夹以后,寻找HEX文件。这是所能烧写软件识别的程序。5、找到程序以后,将单片机连接到电脑,并点击程序下载,将程序烧写进单片机。6、程序下载进单片机以后就能够看到八个led点亮了前面三个。

以下是一个单片机间隔点亮一LED灯的C语言程序,以8051单片机为例:c Copy code include //包含了AT89C51的寄存器定义 void delay(unsigned int xms) //延时函数,xms为要延时的毫秒数 { unsigned int i,j;for(i=xms;i

while(K1==0){};//松手检测 LED1=!LED1;} } delay(10);} } 根据实际,可能会有所修改才行

LED=1; //点亮LED delay(3000); //LED持续3秒 LED=0; //灭掉LED while(1); //芯片不工作 } 在上述程序中,使用了一个计数器来实现上电后30秒的延时,然后LED点亮并持续3秒后灭掉,最后芯片不工作。需要

while (!Key && t <= 3000); // 当按键未松开或计时器未超过3秒时继续计时 if (t > 3000) // 如果计时器超过了3秒,LED亮起来 { Led = 1; // 点亮LED } t = 0; // 将计时器清零 } } } ```以上

单片机开关点亮LED灯程序

并控制LED灯的闪烁频率;然后使用一个计时器中断服务程序来控制LED灯的闪烁,具体实现方式请参考代码注释。最后,为了保证每个周期的闪烁持续时间与频率相符,应该在循环内部加入一个延时操作,等待一定时间再进入下一次循环。

LED3=0;} } } void TIMER1(void) interrupt 3 //定时器1中断函数使用默认寄存器组 { TH1 = 0XFE; //定时器1定时时间=500us TL1 = 0X0C;if(YSJS1!=0){ YSJS1--;} else LED1=1;if(YSJS2!=0){

else{led1=0;led2=0;} }

while(1);}

交替闪烁就是在循环中让两个LED端口交替高低电平。循环中加入延时。延时函数我用循环实现。题目没有要求精准延时,如精准需用中断。include define uInt unsigned int sbit D1=P2^0;sbit D2=P2^1;sbit S1=P

include#defineucharunsignedcharuchartimes,led;sbitkey1=P1^0;sbitkey2=P1^1;voidt0isr()interrupt1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;times++;}voidrolled(){P0=led;led=(led>>1)|0x80;if(led==

求单片机c51的C语言编程:设当开关为1时,控制2个led交替闪烁,闪烁时间为5秒

include#defineucharunsignedcharuchartimes,led;sbitkey1=P1^0;sbitkey2=P1^1;voidt0isr()interrupt1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;times++;}voidrolled(){P0=led;led=(led>>1)|0x80;if(led==

交替闪烁就是在循环中让两个LED端口交替高低电平。循环中加入延时。延时函数我用循环实现。题目没有要求精准延时,如精准需用中断。include define uInt unsigned int sbit D1=P2^0;sbit D2=P2^1;sbit S1=P

在无限循环中,不断检测K1和K2按键状态,以改变全局变量“freq”并控制LED灯的闪烁频率;然后使用一个计时器中断服务程序来控制LED灯的闪烁,具体实现方式请参考代码注释。最后,为了保证每个周期的闪烁持续时间与频率相符,应该

for(i=0;i<20000;i++) //做20000次空循环。; //什么也不做,等待一个机器周期。} / 函数功能:主函数 (C语言规定必须有也只能有1个主函数)。/void main(void){ while(1) //无限循环。{ P0=0xfe;

用C语言编写一个单片机控制LED灯闪烁变化的编程 急用!!!!!!!!!

include sbit P32 = P3^2;sbit LED = P1^1;void main(){ IE = 129; while(1);}void X0_Int() interrupt 0{ while(!P32) LED = 0; LED = 1;}

你没有松手监测呀!就是在按键处理程序后要加一个while(k1!=0);就是只有你松开按键后才认为本次按键执行完毕,不然就会一直重复执行按键按下的程序,那么你的d1一直就会执行亮灭操作!

void main(void){ P1=oxff;//初始化P1 while(1){ LED=~K1;} }

首先if(SW13==0)是判断此引脚是否为0 (按键按下)然后一个delay用于按键防抖动 没被注释的那部分是靠if在次判断是否为0按下按下后执行LED_ON函数使LED亮 然后通过while判断按键是否松开,如果松开的话就继续执行LED_O

当松手时,KEY1 = 1,不满足if语句不 进入循环,LED继续保持当前状态即LED = 0,如果再次按下按键,此时检测到KEY1 = 0,进入循环,LED取反得到LED = 0,灯亮。*/ delay(500); /*此处延迟,保证连续两次按键

1、首先打开桌面上的keil软件,在进行对51单片机进行编程时最常用的就是keil软件。2、编写相应的代码:#include //定义单片机的头文件sbit led=P2^0; //定义单片机的管脚,void main(void) //主函数

单片机用c语言,按钮控制一个LED灯,要求按下松开,LED亮,按下松开,LED暗!循环

不知你怎么想的,51单片机和晶振写几行程序就行的,没看见线路板,不好说的。如果你是外行,说了你也不好理解,
最容易理解的写法:设置b1、b2、b3、reset四个按钮(按下为0)和对应的LED1、LED2、LED3三个灯(点亮为0)int reset, b1,b2,b3,LED1,LED2,LED3;while(1){(读取reset) if(reset==0) { LED1=LED2=LED3=1; read=1; } if(read==1) { (读取b1, b2, b3); if(b1==0) { LED1=0; read=0; } elseif(b2==0) { LED2=0; read=0; } elseif(b3==0) { LED3=0; read=0 } else LED1=LED2=LED3=1; }}
#includesbit led1=P1^0;sbit led2=P1^1;void main(){led1=0;led2=0;while(1);}这个应该好理解吧!P1^0,P1^1是你接第一第二个LED的IO口
led应该是一个变量,是代表led灯 亮或者灭的一个变量。 当你按下开关后,s1==0,就执行 led=!led 这条语句。 led=!led 的意思就是取反的意思,即原来led灯亮的话 执行该条语句后就变成灭;原来灭的话 执行该条语句后 就变成亮。按键按下就打控制灯的io取反就可以了。如:if(key1==1){while(key1==1); // 等待按键放开led1=~led1;} 使用四个独立按键控制四个LED灯亮灭的汇编程序怎么弄? 单片机的P1.0-P1.3接四个发光二极管L1-L4的阴极,P1.4-P1.7接四个开关K1-K4程序:ORG 00HSTART: MOV A,P1ANL A,#0F0HRR ARR AORl A,#0F0HMOV P1,ASJMP START可以检测单个按键,也可以同时检测多个按键过程:开始--读P1口数据到A--A中的数据右移4次--A中的内容和F0H相或--A中的数据送到P1口--回到开始
设置一个delay_2s()就是: delay_2s() { for(i=0;i<200;i++) { for(j=0;j<200;j++) } } 具体要看你的晶振大小 然后 void main() { uchar temp = 0x01; while(1) { delay_2s(); P0 = temp delay_2s(); temp <<=1; i++; if(i>=7) { i = 0; temp = 0x01 } } } 很容易理解就是让0X01一直左移赋值给P0口然后循环
我再帮你补一课,看了你的标题,我写了一个用定时器0来控制一个LED灯第隔1秒钟亮灭一次的程序,希望对你有用,另外我也写了一个你说的那个程序,一起发上来吧 ****************这个是用定时器0控制一个灯的亮和灭****************************** #include #define uchar unsigned char #define uint unsigned int /**************************************/ uchar num; bit tt; sbit d=P1^0; /******************主程序入口********************/ void main() { TMOD=0x01; TH0=(65535-50000)/256; TL0=(65535-50000)%256; TCON=0x10; EA=1; ET0=1; tt=255; while(1) { if(num==20) { tt=!tt; d=tt; num=0; } } } void timer() interrupt 1 { TH0=(65535-50000)/256; TL0=(65535-50000)%256; num++; } ****************这个程序是逐个点亮的(思路:由256逐减1,值由LED灯显示)*********************** #include #define uchar unsigned char #define uint unsigned int /**************************************/ uchar num,tt; //bit tt; sbit d=P1^0; /******************主程序入口********************/ void main() { TMOD=0x01; TH0=(65535-50000)/256; TL0=(65535-50000)%256; TCON=0x10; EA=1; ET0=1; tt=255; while(1) { if(num==20) { tt--; P1=tt; num=0; } } } void timer() interrupt 1 { TH0=(65535-50000)/256; TL0=(65535-50000)%256; num++; }