单片机跑马灯汇编程序与仿真

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

51单片机P1口跑马灯的汇编语言编程和protues仿真

;跑马灯程序1

;用软件技术器实现1秒间隔LED循环点亮

;三层循环计数实现1秒延时,250*250*8=0.5秒

;由于软件延时需要计算代码执行的时间,所以近似1秒

ORG 0000H

LJMP MAIN

ORG 0030H

MAIN: MOV P1,#0FFH

MOV A,#0FEH

LOOP: MOV P1,A

LCALL TIMEER

RL A

SJMP LOOP

TIMEER: MOV R5,#08H

LOOP1: MOV R6,#0FAH

LOOP2: MOV R7,#0FAH

LOOP3: DJNZ R7,LOOP3

DJNZ R6,LOOP2

DJNZ R5,LOOP1

RET

END

;跑马灯程序2

;定时/计数器1控制1秒间隔LED循环点亮

ORG 0000H

LJMP MAIN

ORG 001BH

LJMP T1_INT

ORG 0100H

MAIN: MOV R0,#20 ;软计数器

MOV TMOD,#10H ;定时器1方式1

MOV P1,#0FFH ;熄灭所有LED

MOV A,#0FEH ;点亮第一个LED

MOV TH1,#3CH

MOV TL1,#0B0H ;赋初值

SETB ET1

SETB EA ;开中断

SETB TR1 ;启动定时器

SJMP $ ;等待中断

T1_INT: MOV TH1,#3CH

MOV TL1,#0B0H ;赋初值

DEC R0 ;软计数

CJNE R0,#00H,LP

RL A ;灯移位

MOV P1,A ;灯改变

MOV R0,#20 ;软计数器初值

LP: RETI

;跑马灯程序3

;定时/计数器1控制1秒间隔LED循环点亮

;外部中断1控制按键按下跑马灯启动或者停止

ORG 0000H

LJMP MAIN

ORG 0013H

LJMP INT1_INT ;外部中断服务程序,按键触发

ORG 001BH

LJMP T1_INT ;定时器中断,1秒中断一次

ORG 0100H

MAIN: MOV R0,#20 ;软计数器计数次数

MOV TMOD,#10H ;定时器1方式1

MOV P1,#0FFH ;熄灭所有LED

MOV A,#0FEH ;点亮第一个LED

MOV TH1,#3CH

MOV TL1,#0B0H ;定时器赋初值

SETB I T1 ;外中断1采用下降沿触发

SETB E X1 ;允许外部中断1

SETB ET1 ;允许定时器中断

SETB EA ;开中断

SETB TR1 ;启动定时器1

SJMP $ ;等待中断

T1_INT: MOV TH1,#3CH

MOV TL1,#0B0H ;定时器赋初值

DEC R0 ;软计数

CJNE R0,#00H,LP ;判断计数次数是否达到,是则跳转

RL A ;灯移位

MOV P1,A ;灯改变

MOV R0,#20 ;软计数器初值

LP: RETI

INT1_INT: MOV A,#0FFH ;按键按下,LED熄灭

MOV P1,A ;灯改变

CPL TR1 ;定时器改变开关状态

MOV A,#0FEH ;点亮第一个LED

RETI ;中断返回

Protues仿真电路图

欢迎访问艾依河里的鱼的博客

相关文档
最新文档