51单片机控制程序有十个发光二极管标号1-10 分别用p3.6和p3.7控制!按一下P3.6,选择1号 再按一下选择2号 以此类推1直到10 当选择1号时再按一下p3.7 ,1号亮 ,再按下p3.7 1号灯熄灭!就是用p3.6选择其
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/27 14:03:47
51单片机控制程序有十个发光二极管标号1-10 分别用p3.6和p3.7控制!按一下P3.6,选择1号 再按一下选择2号 以此类推1直到10 当选择1号时再按一下p3.7 ,1号亮 ,再按下p3.7 1号灯熄灭!就是用p3.6选择其
51单片机控制程序
有十个发光二极管标号1-10 分别用p3.6和p3.7控制!按一下P3.6,选择1号 再按一下选择2号 以此类推1直到10 当选择1号时再按一下p3.7 ,1号亮 ,再按下p3.7 1号灯熄灭!就是用p3.6选择其中一个二极管 用p3.7控制亮和熄灭!不需要延时 也不需要循环程序!只要能控制能按要求控制亮灭就行了
型号MCS—51的单片机,具体的不要求。就是用的是汇编语言 不是C语言。注:一至十号是可以任意选的 另外更改下 是一至十号灯本是亮着的 然后按下p3.7时选中的其中一个灯灯熄灭!再按下p3.7熄灭的灯重新亮!
51单片机控制程序有十个发光二极管标号1-10 分别用p3.6和p3.7控制!按一下P3.6,选择1号 再按一下选择2号 以此类推1直到10 当选择1号时再按一下p3.7 ,1号亮 ,再按下p3.7 1号灯熄灭!就是用p3.6选择其
要求汇编语言,还是C语言?
-----------
下列程序,仿真调试通过.
;51单片机控制程序
;有十个发光二极管标号1-10 分别用P3.6和P3.7控制
;按一下P3.6,选择1号 再按一下选择2号 以此类推1直到10
;当选择1号时再按一下P3.7,1号亮,再按下p3.7,1号灯熄灭
;就是用p3.6选择其中一个二极管、用p3.7控制亮和熄灭
;--------------------------------------------------
K1 bit P3.6
K2 bit P3.7
LED1 bit P0.0
LED2 bit P0.1
LED3 bit P0.2
LED4 bit P0.3
LED5 bit P0.4
LED6 bit P0.5
LED7 bit P0.6
LED8 bit P0.7
LED9 bit P2.7
LED10 bit P2.6
sfr CURR = 0x30
;--------------------------------------------------
ORG 0000H
LJMP START
ORG 0100H
START:
MOV P0,#0 ;开始的时候输出10个低电平
CLR LED9 ;全亮
CLR LED10
MOV CURR,#0
;--------------------------------------------------
J_CH_K1:
JB K1,J_CH_K2
LCALL DL10MS
JNB K1,K1_PRG
;--------------------------------------------------
J_CH_K2:
JB K2,J_CH_K1
LCALL DL10MS
JNB K2,K2_PRG
SJMP J_CH_K1
;--------------------------------------------------
K1_PRG:
INC CURR
MOV A,#10
CJNE A,CURR,J_CH_K2
SJMP START
;--------------------------------------------------
K2_PRG:
MOV A,CURR
ADD A,ACC
MOV DPTR,#JMP_TAB
JMP @A + DPTR
;--------------------------------------------------
JMP_TAB:
SJMP _LED1
SJMP _LED2
SJMP _LED3
SJMP _LED4
SJMP _LED5
SJMP _LED6
SJMP _LED7
SJMP _LED8
SJMP _LED9
SJMP _LED10
;--------------------------------------------------
_LED1:
CPL LED1
LJMP J_CH_K1
_LED2:
CPL LED2
LJMP J_CH_K1
_LED3:
CPL LED3
LJMP J_CH_K1
_LED4:
CPL LED4
LJMP J_CH_K1
_LED5:
CPL LED5
LJMP J_CH_K1
_LED6:
CPL LED6
LJMP J_CH_K1
_LED7:
CPL LED7
LJMP J_CH_K1
_LED8:
CPL LED8
LJMP J_CH_K1
_LED9:
CPL LED9
LJMP J_CH_K1
_LED10:
CPL LED10
LJMP J_CH_K1
;--------------------------------------------------
DL10MS:
MOV R7,#20
DL250T:
MOV R6,#250 ;1T
D2:
DJNZ R6,D2 ;2T,原地转移250遍,共用500T
DJNZ R7,DL250T ;2T,转移200遍
RET ;2T
END
#include
#define unchar unsigned char
#define uint unsigned int
sbit s1=P3^6;
sbit s2=P3^7;
int count=0;
void delayms(uint xms)
{
uint x,y;
for(x=xm...
全部展开
#include
#define unchar unsigned char
#define uint unsigned int
sbit s1=P3^6;
sbit s2=P3^7;
int count=0;
void delayms(uint xms)
{
uint x,y;
for(x=xms;x>0;x--)
for(y=110;y>0;y--);
}
void keyscan()
{
if(s1==0)
{
delayms(5);
if(s1==0)
{
while(!s1);
count++;
if(count==11)
count=1;
}
}
if(count!=0)
if(s2==0)
{
delayms(5);
if(s2==0)
{
while(!s2);
switch(count)
{
case 1:P0_0=~P0_0;
break;
case 2:P0_1=~P0_1;
break;
case 3:P0_2=~P0_2;
break;
case 4:P0_3=~P0_3;
break;
case 5:P0_4=~P0_4;
break;
case 6:P0_5=~P0_5;
break;
case 7:P0_6=~P0_6;
break;
case 8:P0_7=~P0_7;
break;
case 9:P2_0=~P2_0;
break;
case 10:P2_1=~P2_1;
break;
}
}
}
}
void main()
{
P0=0;
P2=0;
while(1)
keyscan();
}
我大概做的 也没有在实验板上试过 你自己试试吧 看可以不可以 记得我的灯的端口都是P0的八个口和P2的前面两个口
收起
用仿真做?还是你要其他的?单片机型号有要求不 ?