您当前的位置:首页 > 基础知识 > 单片机  > 单片机程序的完善

51 汇编语言编程:走道灯控制程序

来源:21ic 关键字:51单片机   编程   

 按一下按键灯就亮,延时 10s 后自动灭。在亮灯期间再按一下键,灯立即就灭。

用定时器及中断实现。

题目链接:http://zhidao.baidu.com/question/1302357964153805259.html

提问者采纳 2013-12-09 13:47

LED EQU P3.3

KEY EQU P3.7

ORG 0000H

LJMP START

ORG 000BH

LJMP T0_INT

ORG 0030H

;--------------------------------

START:

MOV TMOD, #01H

MOV TH0, #HIGH(65536-62500)

MOV TL0, #LOW(65536-62500)

MOV IE, #82H

;--------------------------------

LP1:

SETB LED ;关灯

JB KEY, LP1 ;等待第一次按键

CALL DELAY

JB KEY, LP1

JNB KEY, $

;-------------------

MOV R2, #160 ;10s

SETB TR0 ;启动定时器

CLR LED ;开灯

LP2:

JNB TR0, LP1 ;如果已经定时结束,就去等待第一次按键

JB KEY, LP2 ;等待第二次按键

CALL DELAY

JB KEY, LP2

JNB KEY, $

SJMP LP1 ;如果发生了第二次按键,就去等待第一次按键

;--------------------------------

T0_INT:

MOV TH0, #HIGH(65536-62500)

MOV TL0, #LOW(65536-62500)

DJNZ R2, T0_E ;定时10s

CLR LED ;时间到了,关灯

CLR TR0

T0_E:

RETI

;--------------------------------

DELAY: ;延时约10ms(fosc=12MHz)

MOV R6, #20

DJNZ R7, $

DJNZ R6, $ - 2

RET

;--------------------------------

END