求汇编语言程序:8个开关p0.0——p0.7分别控制8个灯p1.0——p1.7,

供稿:hz-xin.com     日期:2025-01-13
求求好心人出现吧51单片机8个按键控制8个发光二极管,单个控制,使用汇编语言,急

汇编语言的变成已经很不习惯了。
假设 八个开关分别接在 P1.0—— P1.7,八个发光二极管接在 P0.0 -P0.7 。汇编语言编程如下。
ORG 0000H
start: mov P1,#0ffH
mov P0,#0ffH
mov A,P1
mov P0,A
lcall delay
ljmp start
delay:
mov r7,#100
loop:
mov r6,#100
djnz r6,$
djnz r7,loop
ret
END

延时做 nop 的多次嵌套循环,用ajump 指令和 djnz Rn 指令
关于屏蔽接收,可以用相关寄存器做 逻辑处理,或者是比较跳转处理

摁钮来说,因为是输入,在输入之前,先对接脚做输出高电平处理,然后做接收,否则可能会烧掉单片机接脚内部的fet 管

延时六秒不好控制,如果晶振频率你知道的话,多用nop指令,来缓冲循环段的长短不一问题

你的问题有些矛盾,给你做一个按一下灯亮,再按一下灯灭的程序吧。
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
MOV P1,#0FFH ;灯初始全灭
MOV P0,#0FFH ;按键初始都没有按下
LOOP:
JB P0.0,LOOP1 ;第一个键没按转下一个
JNB P0.0,$ ;第一键按下则等抬起
CPL P1.0 ;第一个灯如果开始灭则点亮,开始亮则灭
LOOP1: ;以下与此类似,不做注释。
JB P0.1,LOOP2
JNB P0.1,$
CPL P1.1
LOOP2:
JB P0.2,LOOP3
JNB P0.2,$
CPL P1.2
LOOP3:
JB P0.3,LOOP4
JNB P0.3,$
CPL P1.3
LOOP4:
JB P0.4,LOOP5
JNB P0.4,$
CPL P1.4
LOOP5:
JB P0.5,LOOP6
JNB P0.5,$
CPL P1.5
LOOP6:
JB P0.6,LOOP7
JNB P0.6,$
CPL P1.6
LOOP7:
JB P0.7,LOOP8
JNB P0.7,$
CPL P1.7
LOOP8:LJMP LOOP
END

;P2 外接八个按键,P1 外接八个 LED
;按一下键,对应的 LED 亮灭转换一次
;不按则保持状态,常亮或常灭

;程序如下:

ORG 0000H
LJMP START
ORG 000BH
MOV TH0, #HIGH(65536 - 10000) ;10ms@12MHz
MOV TL0, #LOW(65536 - 10000)
MOV A, P2
CPL A
MOV B, A
XRL A, 21H
ANL A, 21H
MOV 22H, A
MOV 21H, B
XRL 20H, A
MOV P1, 20H
RETI
;---------------------------------
START:
MOV TMOD, #01H
MOV TH0, #HIGH(65536 - 10000) ;10ms@12MHz
MOV TL0, #LOW(65536 - 10000)
SETB TR0
MOV IE, #82H

LOP:SJMP LOP

END

求汇编语言程序:8个开关p0.0——p0.7分别控制8个灯p1.0——p1.7,
MOV P1,#0FFH ;灯初始全灭 MOV P0,#0FFH ;按键初始都没有按下 LOOP:JB P0.0,LOOP1 ;第一个键没按转下一个 JNB P0.0,$ ;第一键按下则等抬起 CPL P1.0 ;第一个灯如果开始灭则点亮,开始亮则灭 LOOP1: ;以下与此类似,不做注释。JB P0.1,LOOP2 JNB P0.1...

单片机汇编程序:有八个小灯,要求依次点亮,时间间隔1s
做单一灯的左移右移,八个发光二极管L0-L7分别接在单片机的P0.0-P0.7接口上,输出“0”时,发光二极管亮,开始时P0.0→P0.1→P0.2→P0.3→┅→P0.7→P0.6→┅→P0.0亮,重复循环。\/ ORG 0000H LJMP START ORG 0030H START:MOV R2,#8 ;左移次数 MOV A,#0FEH ;A的初始值...

关于流水灯,问下怎么改成固定左边第一个灯常亮,其他7个灯保持流水灯的...
看你的程序,8个LED是接在P0口上的,顺序如下图:这样,左边的第一个是接在P0.0上的,让它的LED常亮,就保证P0.0一直为0就行了。另外说明一点,要用一个变量才行。程序如下,只写一种向左流动的,向右流动你可参考这个程序增加即可。include<reg51.h> include<intrins.h> void Delay(unsigne...

用单片机编写一段程序,使下面八个发光二极管从左到右间隔一定时间,依次...
main:mov a,#11111110b\/\/此为共阳极,先让P0.0口先亮 mov r0,#8 loop:mov p0,a\/\/向p0 口送码 lcall DELAY\/\/调用延时子函数 rr a \/\/右移 djnz r0,loop \/\/如果就循环一次这样就行了;如果需要循环无数次就ljmp loop,关于r0的语全部去掉 end ...

P0.0~ P0.7 P0口是什么意思?
P3.0~P3.7 P3口8位双向口线(在引脚的10~17号端子)。P0口有三个功能 1、外部扩展存储器时,当做数据总线(如图1中的D0~D7为数据总线接口)2、外部扩展存储器时,当作地址总线(如图1中的A0~A7为地址总线接口)3、不扩展时,可做一般的I\/O使用,但内部无上拉电阻,作为输入或输出时应在...

#define LongToBin(n) 关于这个回答很不错,不过有个地方不太理解
首先,我们使用这段代码的目的是——更直观地对一个字节的每一位进行操作。尤其在硬件编程的过程中,我们通常为了一目了然地表示一组端口(通常是8个,如有些单片机第0组端口一般以P0表示,含8个端口P0.0~P0.7,第n个端口对应一个字节当中的第n个bit)的输入输出状态(对应位置是1或0分别代表该...

用单片机P0控制8个LED,要求8个LED按1357——2468的顺序轮流点亮_百度...
一键多功能按键识别技术 1.实验任务 开关K1接在P3.2管脚上,在AT89S51单片机的P0.0端口接有1个发光二极管,上电的时候,L1接在P1.0管脚上的发光二极管在亮,当一次按下开关K1的时候,灯灭,再按一次,灯亮,如此轮流下去。 2.系统板上硬件连线 把“单片机系统”区域中的P3.2端口连接到“独立式...

急求程序:8051单片机P0口接8个按钮控制P1口8个LED,按钮按下要求对应的...
SETB P1.5 LJMP LOOP L6:CLR P1.6 LCALL DELAY SETB P1.6 LJMP LOOP L7:CLR P1.7 LCALL DELAY SETB P1.7 LJMP LOOP ;---延时子程序--- delay: MOV R7,#100 LO1: MOV R6,#100 LO2: MOV r5,#100 LO3: DJNZ R5,LO3 DJNZ R6,LO2 djnz r7,LO1 RET ;--- END...

单片机如下电路,让显示灯从上往下依次点亮,不断循环。
实验内容涉及使用汇编指令对单片机I\/O口进行编程,以控制8个发光二极管实现流水点亮的效果。这些发光二极管分别连接到单片机的P0.0到P0.7接口上。当输出“0”时,相应的发光二极管会点亮。实验开始时,P0.0将依次点亮,随后依次点亮P0.1到P0.7,最后回到P0.6,然后再次回到P0.0,形成一个循环。...

用五一单片机c语言编程,p1口控制八个发光二极管,实现每隔一秒,两两点亮...
P0 = 0x00; \/\/P0.0~P0.7分别接八个发光二极管,刚开始全灭 while(1){ delay(1000);P0 = 0xc0;\/\/点亮前两个发光二极管P0.0和P0.1;delay(1000);\/\/延时1秒 P0 = 0x30;\/\/点亮第三个和第四个LED delay(1000);P0 = 0x0c;delay(1000);P0 = 0x03;} } 二、include <reg52.h>...