如何用汇编语言编写一道程序,使得1个LED在按键的控制下,按一次按键LED向左循环亮,再按一次,又向右循环亮

作者&投稿:逄雅 (若有异议请与网页底部的电邮联系)
编写汇编程序,利用led灯亮暗表示按键按下次数,按一次加一,用二进制~

LED EQU P0
KEY EQU P1.0
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
MOV LED,#0
CLR A
LOOP:
JB KEY,$
JNB KEY,$
INC A
MOV LED,A
SJMP LOOP
END

KEY EQU P1.0
KVAL EQU 30H
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
MOV B,#0FEH

MOV KVAL,#0

LP:
LCALL KEYSCAN

MOV A,KVAL

DEC A

JNZ LP0

MOV P0,#0

SJMP LP

LP0:
JNZ LP1

MOV P0,#0FFH

LP1:
DEC A

JNZ LP2

MOV P0,B

LCALL DELAY

MOV A,B

RL A

MOV B,A
LP2:
SJMP LP

KEYSCAN:
JB KEY,KRTN

JNB KEY,$

INC KVAL

MOV A,KVAL

CJNE A,#3,KS1

KS1:
JC KRTN

MOV KVAL,#0

KRTN:
RET

DELAY:
MOV R2,#100

D1:
MOV R3,#250

DJNZ R3,$

DJNZ R2,D1

RET

END

KEY BIT P1.0;按键与P1.0相连接
;LED与P2相连接,低电平有效
KZW BIT 20H.0;标志控制位,1——向左循,0——右循环
ORG 00H
LJMP MAIN
ORG 30H
MAIN:
MOV P2,#0FFH
JB P1.0,$
ACALL DELAY10MS;延时10ms
JNB P1.0,$
MOV P2,#0FEH
SETB KZW
LOOP:
JB P1.0,KS
ACALL DELAY10MS;延时10ms
JNB P1.0,$
CPL KZW
KS: JNB KZW,R_M
L_M:;左循环
MOV A,P2
RL A
MOV P2,A
ACALL DELAY
LJMP LOOP
R_M:;右循环
MOV A,P2
RR A
MOV P2,A
ACALL DELAY
LJMP LOOP
DELAY10MS:(略)
RET
DELAY:(略)
RET
END

;按键控制流水方向.

ORG 0H
MOV A, #1FH
MOV P0, A ;P0外接8个LED
MOV R5, #4
MOV R6, #205
MOV R7, #200
DJNZ R7, $
DJNZ R6, $ - 2
DJNZ R5, $ - 4
JB P1.7, $ + 5 ;控制引脚:P1.7
CPL F0
JB F0, $ + 6
RR A
SJMP 2
RL A
SJMP 2

END

求一个用汇编语言编写单片机简易交通灯程序。求高手帮下忙谢谢了...
答:;--- ;程序实现功能 ;西南北路口直行与转弯交替通行,数码管显示直行通行倒计时,红绿黄灯显示包括人行道在内的道路交通状态。;某一方向道路拥挤时,可以人工控制调节东西南北方向通行时间。;紧急情况时,各路口交通灯显示红灯,数码管保持数据不变。;工作寄存器及存储单元分配 ;1.工作寄存器 ;R2设置为定...

用汇编语言编写一个程序求出6个有符号整数中的最大值并输出,这6个数从...
答:===; 键盘输入数值数组子程序(数组为@array,元素个数为@num); 可以是负数 INPUTNUM PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DX PUSH SI PUSH DI PUSHF ; 对数组@array清零 ...

c51单片机中如何用汇编语言编写流水灯
答:51单片机用汇编语言编写流水灯程序,就是控制多个LED ,使其在特定时间间隔内,只有一个LED 发光,其他熄灭,用这种方式顺序移动点亮LED的位置,就形成了流水灯的效果。以下是程序:;假设晶振12MHZ,P1控制8个LED低电平亮 ;启动入口=== ORG 0000H;复位启动 AJMP START;ORG 001BH;T1中断 AJMP T1INT;...

用汇编语言编写一段程序?求解:
答:Input_Num: Output Prompt_Str ;提示输入一位数 Input_Num: mov ah,1 int 21h cmp al,27 ;Esc?jz Exit_Proc ;结束程序 cmp al,'1' ;<'1'?jb @@Input_Num ;是,超出范围,重新输入 cmp al,'9' ;>'9'?ja @@Input_Num ;是,超出范围,重新输入 and ax,0fh test ...

汇编语言编写完整的程序求N!,可以自由输入n的值,输出为十进制数_百度知...
答:; 功能:键盘输入一个指定位数的十进制数字,将其转换成二进制数并保存在指定的内存单元。; 由于限定最大数据类型为字,所以,数字位数最多:5,最大无符号数:65536; 约定:直接回车,视为数字0; 入口:@@Digits=数字位数;di=保存输入的数字首地址; @@Type_Data=保存的数据类型,B=字节类型,W=字类型。; 出口:...

用汇编语言如何编写计算n!的程序(利用循环结构程序编写)
答:;X86汇编_用循环结构编程计算阶乘n!code segment assume cs:code,ds:code org 100h start:push cs pop ds push cs pop es Q0:lea dx,Tips mov ah,9 ;显示提示 int 21h Q1:mov ah,0 int 16h cmp al,1bh ;Esc退出 jz exit cmp al,'0'jb Q1 ;不是数字重新输入 cmp al,'8';大于8...

汇编语言编写一个简单的程序(我学的是汇编语言与接口技术)
答:JE EXIT ;输入空格符,则程序结束 CMP AL,0DH JE L2 ;输入回车符,则数字输入结束 MOV SI,0 CMP AL,'0'JB L0 CMP AL,'9'JA L0 MOV SI,1 AND AL,0FH XCHG AL,BL MUL BH JC L0 ;乘法溢出,数字大于255 ADD BL,AL JC L0 ;加法溢出,数字大于255 JMP SHORT L1 L2:...

用汇编语言写单片机程序开头怎么写?
答:假设P1.5为高是未达到既定值 CLR P0.0 ;达到既定值 NEXT:LCALL DELAY30MS SETB P1.7 ;设定P1.7为输入状态 JB P1.7, LOOP ;假设P1.7为高是未达到要求 CLR P0.0 CLR P0.3 SETB P0.2 LJMP LOOP DELAY30MS:(此处编写一段延时30ms的程序,很简单的,循环一定次数即可)RET ...

用汇编语言编写keil的四人抢答器程序
答:CLR C LEDDIS1:RLC A DJNZ R4,LEDDIS1 MOV P0,A LOOP3: JNB P3.3,BEGIN ;若主持人按下复位信号键,则转向主程序 CPL P3.7 ;若没按复位信号键,给出高低信号驱动蜂鸣器 LCALL DELAY ;调用延时子程序 SJMP LOOP3 ;反复间隔0.4s变化,驱动蜂鸣器 END ...

用汇编语言编写一个不少于100语句的程序
答:MOV SI,DI ;为后面判断输入的是不是只输入一个数有用 MOV CX,DI L2: PUSH AX SUB BYTE PTR DS:[DI+1],30H MUL BYTE PTR DS:[DI+1]ADD RESULT,AX POP AX MUL BL DEC DI LOOP L2 ;分两种情况:1.输入的是1;2.输入的不是1 CMP SI,1 JNZ L7 CMP BYTE PTR RESULT,1 JNZ L7 ...