单片机用汇编做一个控制8个LED灯泡从左到右依次点亮,最后全部亮,再全部熄灭后重复前面的过程

2024-12-03 01:47:53
推荐回答(3个)
回答1:

#include

#include

#define uchar unsigned char

#define uint unsigned int

//延时

void DelayMS(uint x)

{

uchar i;

while(x--)

{

for(i=0;i<120;i++);

}

}

//主程序

void main()

{

uint s;

while(1)

{

P0=0xfe;

DelayMS(150);

for(s=8;s>1;s--) 

{

P0=_crol_(P0,1); //P0 的值向左循环移动 

DelayMS(150); 

}

P0=0x00;

DelayMS(150);

p0=0xff;

DelayMS(150);

扩展资料:

常用单片机汇编指令:

1 .MOV A,Rn 寄存器内容送入累加器

2 .MOV A,direct 直接地址单元中的数据送入累加器

3 .MOV A,@Ri (i=0,1)间接RAM 中的数据送入累加器

4 .MOV A,#data 立即数送入累加器

5 .MOV Rn,A 累加器内容送入寄存器

6 .MOV Rn,direct 直接地址单元中的数据送入寄存器

7 .MOV Rn,#data 立即数送入寄存器

8 .MOV direct,A 累加器内容送入直接地址单元

9 .MOV direct,Rn 寄存器内容送入直接地址单元

10. MOV direct,direct 直接地址单元中的数据送入另一个直接地址单元

11 .MOV direct,@Ri (i=0,1)间接RAM 中的数据送入直接地址单元

12 MOV direct,#data 立即数送入直接地址单元

13 .MOV @Ri,A (i=0,1)累加器内容送间接RAM 单元

14 .MOV @Ri,direct (i=0,1)直接地址单元数据送入间接RAM 单元

15 .MOV @Ri,#data (i=0,1)立即数送入间接RAM 单元

16 .MOV DPTR,#data16 16 位立即数送入地址寄存器

17 .MOVC A,@A+DPTR 以DPTR为基地址变址寻址单元中的数据送入累加器

18 .MOVC A,@A+PC 以PC 为基地址变址寻址单元中的数据送入累加器

19 .MOVX A,@Ri (i=0,1)外部RAM(8 位地址)送入累加器

20 .MOVX A,@DPTR 外部RAM(16 位地址)送入累加器

21 .MOVX @Ri,A (i=0,1)累计器送外部RAM(8 位地址)

22 .MOVX @DPTR,A 累计器送外部RAM(16 位地址)

23 .PUSH direct 直接地址单元中的数据压入堆栈

24 .POP direct 弹栈送直接地址单元

25 .XCH A,Rn 寄存器与累加器交换

26 .XCH A,direct 直接地址单元与累加器交换

27 .XCH A,@Ri (i=0,1)间接RAM 与累加器交换

28 .XCHD A,@Ri (i=0,1)间接RAM 的低半字节与累加器交换

参考资料来源:百度百科-单片机汇编指令

回答2:

ORG 00H

AJMP MAIN

ORG 30H

MAIN:

MOV P1,#00H

ACALL D05S

MOV A,#01H

MOV R1,#8

MAIN1:

MOV P1,A

ACALL D05S

RL A

INC A

DJNZ R1,MAIN1

AJMP MAIN

D05S:

MOV R7,#25

MOV R6,#100

MOV R5,#100

DJNZ R5,$

DJNZ R6,$-4

DJNZ R7,$-8

RET

END

回答3:

还有外围硬件设计呢!