控制led灯左右移动

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

; -----主程序-------

ORG 0000H

JMP START

ORG 0003H ;定义外部中断INT0入口

JMP EX0IN

ORG 0013H ;定义外部中断INT1入口

JMP EX1IN

ORG 000BH ;定义定时/计数器T0中断入口

JMP T0IN

ORG 0030H

START:

MOV TMOD,#01H ;初始化TMOD,T0工作于方式1

MOV TH0,#3CH ;装载T0计数初值,6MHZ时钟,定时100ms

MOV TL0,#0B0H

MOV A ,#0FEH ;初始化点亮发光二极管的数据

MOV R0 , #10 ;将R0作为T0溢出次数计数变量,10次溢出为1秒CLR F0 ;将F0作为移动方向标志,F0=0下移;F0=1,上移SETB EA ;开启总中断

SETB ET0 ;开启T0中断

SETB EX0 ;开启外部中断INT0

SETB EX1 ;开启外部中断INT1

SETB PT0 ;将TO中断设置为高优先级

SETB IT0 ;将外部中断INT0设置为下降沿触发方式

SETB IT1 ;将外部中断INT1设置为下降沿触发方式

SETB TR0 ;启动T0

LOOP: MOV P2, A ;A送P2口

JMP LOOP ;循环等待中断

;-----INT0中断服务程序-------

EX0IN:

mov r1,a

MOV A, P3

ANL A,#04H

MOV 20H,A

CALL DELAY

MOV A, P3

ANL A,#04H

CJNE A,20H,LL1

CPL TR0 ;将TR0取反,实现暂停/重启切换

LL2:

SETB P3.2

MOV A,P3

JNB ACC.3 ,LL2

LL1: mov a,r1

RETI

;-----INT1中断服务程序-------

EX1IN: CPL F0 ;将F0取反,切换上、下移方向RETI

;-----T0中断服务程序-------

T0IN:

MOV TH0,#3CH ;重装计数初值

MOV TL0,#0B0H

DJNZ R0 , L2 ;是否有10次溢出

MOV R0 , #10

JB F0,L1 ;F0=1?

RL A ;F0=0,下移

JMP L2

L1: RR A ;F0=1,上移

L2: RETI ;中断返回

DELAY:MOV R6,#0FFH

M2:MOV R7,#0FFH

M1:DJNZ R7,M1

DJNZ R6,M2

RET

END

相关文档
最新文档