📄 ex.asm
字号:
;-----------------------------------------------------------
; Exercice 14 Chronometre
;-----------------------------------------------------------
$include(c8051f000.inc) ;Include register definition file.
$include(tp.inc)
PROG segment CODE
EXTRN CODE (init)
EXTRN CODE (af_ini)
EXTRN CODE (affiche)
EXTRN CODE (bcd_ascii)
EXTRN CODE (clavier)
VAR segment DATA
;-----------------------------------------------------------
;RESET and INTERRUPT VECTORS
cseg AT 0
LJMP Debut
cseg AT 2BH
LJMP T2_int
;-----------------------------------------------------------
rseg PROG
Debut: MOV SP,#7FH ;Pile en 80H
LCALL init
LCALL af_ini
boucle: MOV A,#80H
LCALL affiche
MOV A,#'0'
LCALL affiche
MOV A,#'0'
LCALL affiche
MOV A,#':'
LCALL affiche
MOV A,#'0'
LCALL affiche
MOV A,#'0'
LCALL affiche
LCALL clavier
CJNE R7,#'*',boucle
MOV ct,#00H
MOV min,#00H
MOV sec,#00H
MOV CKCON,#00H
MOV RCAP2L,#LOW(-50000)
MOV RCAP2H,#HIGH(-50000)
MOV TL2,#LOW(-50000)
MOV TH2,#HIGH(-50000)
MOV T2CON,#00000100B
MOV IE,#10100000B
SJMP $
;-----------------------------------------------------------
T2_int: PUSH ACC
PUSH PSW
INC ct
MOV A,ct
CJNE A,#20,T2_fin
CPL TEST
MOV A,sec
ADD A,#1
DA A
CJNE A,#60H,T1
MOV sec,#00H
MOV A,min
ADD A,#1
DA A
MOV min,A
SJMP T2
T1: MOV sec,A
T2:
MOV A,#80H
LCALL affiche
MOV A,min
LCALL bcd_ascii
LCALL affiche
MOV A,B
LCALL affiche
MOV A,#83H
LCALL affiche
MOV A,sec
LCALL bcd_ascii
LCALL affiche
MOV A,B
LCALL affiche
MOV ct,#00H
T2_fin:
POP PSW
POP ACC
CLR TF2
RETI
;-------------------------------------
rseg VAR
min: DS 1
sec: DS 1
ct: DS 1 ;compteur par 20
;-------------------------------------
;End of file
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -