C8051单片机汇编实现流水灯

桂林电子科技大学51单片机实验二流水灯参考

具体要求

3b9c7f74d207472495cf69a33d614190.png

仿真

 4f8a095976e942ccb7c55f684ba2f7f4.png

汇编代码如下:

注:只有结束了当前状态才会识别开关,再选择状态

 ORG 0000H

AJMP START

ORG 000BH

AJMP TIMING

START:

;定时器T0作为流水灯

MOV TMOD,#01H;工作方式1,50ms

MOV TH0,#3CH

MOV TL0,#0B0H

MOV R0,#0AH; 10*50ms=0.5s ,时间改这里R0=20就是1S

MOV R1,#02H ;2*0.5S=1S ,这个时间是上面的两倍

;开中断

SETB EA

SETB ET0

SETB TR0

SETB P1

SETB P3

MOV P1,#00H;全灭

 

MAIN:

MOV A,P3 ;开关接的P3.0,P3.1

ANL A,#03H ;保留P3.0与P3.1 ,开关如果接P3.2 和P3.3,这里03H改为0CH

CJNE A,#00H,NEXT01 ;

ACALL STATE00

AJMP MAIN

NEXT01:

CJNE A,#01H,NEXT10 ; 开关如果接P3.2 和P3.3, 01改04

ACALL STATE01

AJMP MAIN

NEXT10:

CJNE A,#02H,NEXT11 ;改08

ACALL STATE10

AJMP MAIN

NEXT11:

ACALL STATE11

AJMP MAIN

 

STATE00: ;状态1 P1.7<---P1.0

MOV A,#01H

WAIT00:

CJNE R1,#01H,WAIT00

INC R1

MOV P1,A

RL A

CJNE A,#01H,WAIT00

RET

 

STATE01: ;状态2 P1.7--->P1.0

MOV A,#80H

WAIT01:

CJNE R1,#01H,WAIT01

INC R1

MOV P1,A

RR A

CJNE A,#01H,WAIT01

RET

 

STATE10: ;状态3

MOV A,#03H

WAIT101:

CJNE R1,#00H,WAIT101

MOV R1,#02H

MOV P1,A

CJNE A,#0C0H,CONTINUE1

 

WAIT102:

CJNE R1,#00H,WAIT102

MOV R1,#02H

MOV P1,A

CJNE A,#03H,CONTINUE2

RET

 

CONTINUE2:

RR A

RR A

AJMP WAIT102

CONTINUE1:

RL A

RL A

AJMP WAIT101

 

STATE11: ;状态4

MOV A,#01H

WAIT11:

CJNE R1,#01H,WAIT11

INC R1

MOV R3,A

ORL A,P1

MOV P1,A

MOV A,R3

RL A

CJNE A,#01H,WAIT11

MOV P1,#00H

WAIT110:

CJNE R1,#01H,WAIT110

INC R1

RET

 

TIMING: ;定时器T0中断

PUSH A

MOV TH0,#3CH

MOV TL0,#0B0H

DJNZ R0,DEAL

MOV R0,#08H

DEC R1

DEAL:

POP A

RETI

 

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值