MAIN:MOV P1,#0FFH;初此化P1 LOOP:JB P0.0,L0;P0.0为1转到L0 JB P0.1,L1 JB P0.2,L2 JB P0.3,L3 JB P0.4,L4 JB P0.5,L5 JB P0.6,L6 JB P0.7,L7 LJMP LOOP L0:CLR P1.0;点亮P1.

SETB P0.4 ;关掉P0.4口LED灯 SJMP AJCX ;转移到按键查询程序 AJCL-6: ;按键处理程序 CALL XDYS ;调转消抖延时程序 JNB P1.5, $ ;查询P1.5等待 CLR P0.5 ;点燃P0.5口LED灯 CALL LDYS ;调亮灯延时 SETB

P1=1;while(1){ if(key==0)P1=_crol_(P1,1);else P1=_clol_(P1,1);delay_ms(100);} }

include sbit K1=P3^0;//以此类推写到K8 sbit D1=P1^0//以此类推 void main(){ while(1){ if(K1==0){P1=0;} else {P1=1;} //以此类推写完八个控制 } } 这样写可能繁琐累人,当然也可

sbit KEY8 = P3^7;void main(){{if (KEY1 == 0){LED1 = 1;} else if (KEY2 == 0){LED2 = 1;} else if (KEY3 == 0){LED3 = 1;} else if (KEY4 == 0){LED4 = 1;} else if (KEY5 =

假设单片机的P1口的连接8个LED,P3连接8个对地的按键,当某个按钮按下时相应的LED点亮。根据

include define uint unsigned int define uchar unsigned char void delay(uint z);void main(){ uchar a;a=0x00;P0=0x00;//P0输出; led共阴接法 P1输入按键另一端接地 P0加上拉电阻 P1=0xff;while

1、用精确定时的方法,设置流水灯运行时的时间间隔,延时时间为500MS。2、#include "reg51.h"首先写出单片机的头函数。3、#include "intrins.h"输入位移函数。4、unsigned int count=0,led;定义函数。5、输入主函数,定

8个就可以类推)\r\r1、初始值为0:上电复位后,单片机驱动数码管显示0.(如果不会,百度里搜51控制数码管等关键字,特别多试验电路和程序。

void main(void){ //有必要的话,这里先对单片机各类寄存器进行初始化,这里因为简单,未做相关初始化工作 for(;;){ if(KEY1==0)//如果按键1被按下 {LED1=0;}//开启LED1灯 else{LED1=1;}//否则关闭LED1等,

在C51单片机中编写8个开关控制8个小灯的程序,用C语言和汇编语言两种编写

这图还真不好看懂,大概齐吧,程序如下:include define uchar unsigned char main(){ uchar key,tmp,i;P2=0xff;P1=0xff;while(1){ key=P1;tmp=0x00;for(i=0;i<8;i++){ if(key&0x01)tmp|=0x

return 0; //无键按下,返回0 } main(){ unsigned char key;while(1){ key=kbscan();switch(key){ case 0x11:P0=0xfe;break;case 0x12:P0=0xfd;break;case 0x14:P0=0xfb;break;case 0x18:P0=0xf7;

8个按键接P1口,8个LED接P0口。ORG 00H AJCX:JNB P1.0, AJCL-1 ;键按下,转移到消抖延时程序 JNB P1.1, AJCL-2 ;键按下,转移到消抖延时程序 JNB P1.2, AJCL-3 ;键按下,转移到消抖延时程序 JNB P1

i;while(1){k=P1;//读按键键值,此处省略消抖程序for(i=0;i<8;i++){ //8次循环if((k&0x01)==0){//扫描到按下的按键break;

void main(void){ //有必要的话,这里先对单片机各类寄存器进行初始化,这里因为简单,未做相关初始化工作 for(;;){ if(KEY1==0)//如果按键1被按下 {LED1=0;}//开启LED1灯 else{LED1=1;}//否则关闭LED1等,

include sfr key=P1;sfr LED=P0;main(){ while(1){ LED=key;} }

include define uint unsigned int define uchar unsigned char void delay(uint z);void main(){ uchar a;a=0x00;P0=0x00;//P0输出; led共阴接法 P1输入按键另一端接地 P0加上拉电阻 P1=0xff;while

简单的51单片机设计,用8个按键独立控制8个灯的程序!(高分!)要求如下:

JNB P1.7, AJCL-8 JMP AJCX ;无键按下,转按键查询 AJCL-1: ;按键处理程序 CALL XDYS ;调转消抖延时程序 JNB P1.0, $ ;查询P1.0等待 CLR P0.0 ;点亮P1.0口LED灯 CALL LDYS ;调亮灯延时 SETB P0.0

先读P0口的状态,按你LED的接法,是取反还是直接写入P1口,用TO做定时器,设一个标志位,亮时置一,P0口状态无效.延时2S后清0,PO口状态有效,灭灯.

通常二极管的正极和电源连接,按钮和地连接,所以直接将P0口写入P1即可,然后延时2S ,提供一个程序供你测试:ORG 0000H AJMP MAIN ORG 0030H MAIN:MOV P1,P0 MOV R3,20 D1: MOV R4,#20 D2: MOV R5,#248 DJNZ

MAIN:MOV P1,#0FFH;初此化P1 LOOP:JB P0.0,L0;P0.0为1转到L0 JB P0.1,L1 JB P0.2,L2 JB P0.3,L3 JB P0.4,L4 JB P0.5,L5 JB P0.6,L6 JB P0.7,L7 LJMP LOOP L0:CLR P1.0;点亮P1.

急求程序:8051单片机P0口接8个按钮控制P1口8个LED,按钮按下要求对应的LED亮2秒然后自动熄灭 谢谢

先读P0口的状态,按你LED的接法,是取反还是直接写入P1口,用TO做定时器,设一个标志位,亮时置一,P0口状态无效.延时2S后清0,PO口状态有效,灭灯.
图片为原理图 下面为出程序设计: #include sbit LED1 = P1^0;sbit LED2 = P1^1;sbit LED3 = P1^2;sbit LED4 = P1^3; sbit LED5 = P1^4;sbit LED6 = P1^5;sbit LED7 = P1^6; sbit LED8 = P1^7;sbit KEY1 = P3^0;sbit KEY2 = P3^1;sbit KEY3 = P3^2;sbit KEY4 = P3^3; sbit KEY5 = P3^4;sbit KEY6 = P3^5;sbit KEY7 = P3^6; sbit KEY8 = P3^7; void main() {{if (KEY1 == 0) {LED1 = 1;} else if (KEY2 == 0) {LED2 = 1;} else if (KEY3 == 0) {LED3 = 1;} else if (KEY4 == 0) {LED4 = 1;} else if (KEY5 == 0) {LED5 = 1;} else if (KEY6 == 0) {LED6 = 1;} else if (KEY7 == 0) {LED7 = 1;} else if (KEY8 == 0) {LED8 = 1;} } }
//程序很简单也有很多方法都可以实现 。 #include #include "INTRINS.H" sbit k = P1^0; //P1.0作为按键输入 int led=0xff; void main() { P2 = led; //led初始赋给P2口 while(1) { if(k==0) //如果按键按下 { while(k==0); //判断按键松开 led=~led; P2 = led; //按键按下取反再赋给P2口 } } }
比如你的8个灯连在 P0口,如果是阴极的 你只要先定义 sbit P0^0=LED0; .....一定定义下去 然后再定义一个按钮 比如P1.1 sbit P1^1=key; 代码里写 while(true){if(key==1){LED0=0;LED1=0;..//把你要亮的灯置0就行了。阳极的话置1}}
用c51是多么简单的事情啊。你的每个灯的顺序不说。不好写。 思路这样的: sbit led1=p1^0; ~~~ 把所有的灯都定一下。 void delay(int ms) { int x,y; for(x=ms;x>0;x--) for(y=110;y>0;y--); } 一个nms的延迟,要求是12m的晶振。 void main() { while(1) { led1=0; delay(1000); led1=1; 里面随便写了。 } }
51单片机用汇编语言编写流水灯程序,就是控制多个LED ,使其在特定时间间隔内,只有一个LED 发光,其他熄灭,用这种方式顺序移动点亮LED的位置,就形成了流水灯的效果。以下是程序: ;假设晶振12MHZ,P1控制8个LED低电平亮 ;启动入口======================== ORG 0000H ;复位启动 AJMP START ; ORG 001BH ;T1中断 AJMP T1INT ; ;定义变量======================== YSJS EQU 30H;延时计数器 LED EQU 31H;LED控制缓冲器 ;主程序========================== START: MOV LED,#0FEH ;初始化数据 MOV YSJS,#0 ; ; MOV TMOD,#10H ;定时器1工作于方式1,16位定时器 MOV TL1,#0B0H ;设置定时初值 MOV TH1,#3CH ;定时时间=50mS SETB ET1 ;使能定时器1中断 SETB TR1 ;启动定时器1 SETB EA ;开总中断 MOV P1,LED ;初始化流水灯 ; LOOP: JMP LOOP ;循环等待中断 ; ; T1INT: PUSH PSW ;定时器1中断程序 PUSH ACC ;保护现场 ; MOV TH1,#3CH ;定时时间=50mS MOV TL1,#0B0H ; INC YSJS ; PUSH ACC ;保护ACC MOV A,YSJI ; CJNE A,#2,QT1 ;50mS*2=100mS MOV P1,LED ; MOV A,LED ; RL A ;累加器A的值循环左移1位 MOV LED,A ; MOV YSJS,#0 ; ; QT1: POP ACC ;恢复现场 POP PSW ; RETI ;返回主程序 END ;汇编程序结束
详细的就不写了吧,大概思路可以说一下,自己实践才会有进步! #include sbit K1=P3^0;//以此类推写到K8 sbit D1=P1^0//以此类推 void main() { while(1) { if(K1==0) {P1=0;} else {P1=1;} //以此类推写完八个控制 } } 这样写可能繁琐累人,当然也可以用数组或者矩阵键盘扫描写哈
ORG 0000H LJMP MAIN ORG 0003H LJMP EX0INT ORG 0030H MAIN: MOV SP,#5FH SETB IT0 SETB EX0 SETB EA MOV R0,#0 MOV DPTR,#TABLE MOV A,R0 MOVC A,@A+DPTR MOV P2,A LOOP: MOV A,P1 CPL A MOV P1,A LCALL DELAY SJMP LOOP EX0INT: PUSH ACC INC R0 MOV DPTR,#TABLE MOV A,R0 MOVC A,@A+DPTR MOV P2,A RETI DELAY: MOV R2,#100 DELAY1: MOV R3,#250 DJNZ R3,$ DJNZ R2,DELAY1 RET TABLE: ; 共阴极数码管显示代码表 DB 0C0H,3FH,06H,5BH,4FH ;01234 DB 66H,6DH,7DH,07H,7FH ;56789 END