计时秒表程序设计
扫描二维码
随时随地手机看文章
;题目要求:
;秒表计时,按S0开始计时,并由数码管显示;
;再按S0停止。若计满1分钟结束未按S0停止,则蜂鸣器报警。
;要在proteus软件上面模拟......
;==================================================================
;提问者给出了程序,经过修改,要求的功能,除了蜂鸣器报警,都能实现。
;蜂鸣器报警,从原来的程序上修改,困难较大,建议改成LED发光报警。
;程序如下:
;----------------------------------------------
TEMP EQU 22H
ORG 0000H
SJMP START
ORG 0003H
LJMP X0_INT
ORG 0050H
;----------------------------------------------
START:
MOV IE, #85H
MOV IP, #00000001B
MOV TEMP, #0
;----------------------------------------------
M_LOOP:
CALL DISPLAY
CALL DELAY2 ;延时约500ms
CALL DELAY2
JNB F0, NEXT
INC TEMP
MOV A, TEMP
CJNE A, #61, NEXT
CLR P0.1
MOV TEMP, #60
NEXT:
SJMP M_LOOP ;一个循环,约1s
;----------------------------------------------
X0_INT:
CPL F0
JB P0.1, X0_END
SETB P0.1
MOV TEMP, #0
X0_END:
JNB P3.2, $
RETI
;----------------------------------------------
DISPLAY:
MOV DPTR, #NUMTAB ;指定查表地址
MOV A, TEMP
MOV B, #10
DIV AB ;A/B商=a,余数=b
MOVC A, @A+DPTR ;查十位七段码
MOV P1, A ;送出十位七段码
MOV A, B ;个位在b
MOVC A, @A+DPTR ;查个位七段码
MOV P2, A ;送出个位七段
RET
;----------------------------------------------
NUMTAB:
DB 0C0H,0F9H,0A4H,0B0H,099H
DB 092H,082H,0F8H,080H,090H
;----------------------------------------------
DELAY2: ;延时约500ms
MOV R5, #10
DEL3: MOV R6, #100
DEL4: MOV R7, #248
DJNZ R7, $
DJNZ R6, DEL4
DJNZ R5, DEL3
RET
END
;----------------------------------------------
;程序用PROTEUS运行,屏幕截图如下: