在单片机汇编程序中,为什么左移右移后,led会在第一个灯做多停留一段时间怎么改变这种情况

在单片机汇编程序中,为什么左移右移后,led会在第一个灯做多停留一段时间怎么改变这种情况,第1张

START:

MOV A,#0FEH

LEFT:

CALL Delay

RL A

MOV P1,A

JNB ACC7,LEFT

RIGHT:

CALL Delay

RR A

MOV P1,A

JNB ACC0,RIGHT

JMP LEFT

END

CODE SEGMENT

BUF DB 16 DUP()

START: PUSH CS

POP DS

PUSH CS

POP ES

LEA SI,BUF

MOV AL,[SI+15]

RCR AL,1

RCR BYTE PTR[SI],1

RCR BYTE PTR[SI+1],1

RCR BYTE PTR[SI+2],1

RCR BYTE PTR[SI+3],1

RCR BYTE PTR[SI+4],1

RCR BYTE PTR[SI+5],1

RCR BYTE PTR[SI+6],1

RCR BYTE PTR[SI+7],1

RCR BYTE PTR[SI+8],1

RCR BYTE PTR[SI+9],1

RCR BYTE PTR[SI+10],1

RCR BYTE PTR[SI+11],1

RCR BYTE PTR[SI+12],1

RCR BYTE PTR[SI+13],1

RCR BYTE PTR[SI+14],1

RCR BYTE PTR[SI+15],1

MOV AH,4CH

INT 21H

CODE ENDS

END START

DX AX

XXXX YYYY ZZZZ >

/ 实验目的:初步了解单片机I/O口的工作原理,进一步掌握51单片机的汇编指令。 实验内容:用汇编指令对单片机I/O口进行编程,控制8个发光二极管的流水亮灭。 / / 程序详细功能介绍: 做单一灯的左移右移,八个发光二极管L0-L7分别接在单片机的P00-P07接口上, 输出“0”时,发光二极管亮,开始时P00→P01→P02→P03→┅→P07→P06→┅→P00亮,重复循环。 / ORG 0000H LJMP START ORG 0030H START: MOV R2,#8 ;左移次数 MOV A,#0FEH ;A的初始值,即 P00的L0 点亮 SETB C LOOP: MOV P0,A LCALL DELAY RLC A ;左移流水灯(带进位的左移),即亮点向P0口的高位移动 DJNZ R2,LOOP MOV R2,#8 ;右移次数 LOOP1: RRC A ;右移流水灯 MOV P0,A LCALL DELAY DJNZ R2,LOOP1 LJMP START DELAY: MOV R5,#10 ;延时子程序,改变R5,R6,R7 的值,可以改变延时的时间,从而改变流水灯移动速度 D1: MOV R6,#20 D2: MOV R7,#248 DJNZ R7,$ DJNZ R6,D2 DJNZ R5,D1 RET END

比如一个8位数81H,二进制的就是10000001,假设最初的进位位C为0。带进位循环左移后,最高位移入进位位,此时,进位位C为1,数为00000010。再左移一次,进位位的1移到最低位,此时,进位位为0,数为00000101。带进位循环右移的话,数为01000000,进位位C为1,再移一次,则进位位移入最高位,进位位变成0,数为10100000

以上就是关于在单片机汇编程序中,为什么左移右移后,led会在第一个灯做多停留一段时间怎么改变这种情况全部的内容,包括:在单片机汇编程序中,为什么左移右移后,led会在第一个灯做多停留一段时间怎么改变这种情况、求!设计一个顺序结构的汇编语言程序,实现内存单元中一128位 数据的右环移、题目:试用ARM汇编语言编写把DX,AX寄存器中的双字右移四位的汇编程序。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/9532939.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存