⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cl.asm

📁 数字时钟程序 DOS ASM 汇编语言
💻 ASM
字号:
;CL.ASM 数字时钟程序
LO  EQU  24 
HI  EQU  99 
CO  EQU  200 
K2  REG  P2.5 
BUF  EQU  30H 
HOUR  EQU  34H 
MIN  EQU  35H 
SEC  EQU  36H 
DEDA  EQU  37H 
SECO  EQU  38H 

K1  REG  P2.4 
K2  REG  P2.5 
K3  REG  P2.6 
K4  REG  P2.7 
WLED  REG  P3.7 

ORG  0H 
JMP  BEGIN 
ORG  0BH 
JMP  T0_INT 

BEGIN: 
CALL  LED_BL 

CALL  INIT 
CALL  INIT_TIMER 

MOV  A , # 0FFH 
MOV  P0 , A 
CALL  LOAD_DATA 

LOOP: 
CALL  TIME_PRO 
CALL  SCAN1 

JB  K1 , M1 
CALL  LED_BL 
CALL  SET_TIME 
JMP  LOOP 


M1 : JB  K2 , M2 
JMP  LOOP 

M2 : JB  K3 , M3 
JMP  LOOP 

M3 : JB  K4 , M4 
JMP  LOOP 

M4 : 
JMP  LOOP 

TITLE :  DB  “CL.ASM  8051  CLOCK  WITH  SEG  X  4” 

DELAY : 
MOV  R6 , # 50 
D1 :  MOV  R7 , # 100 
DJNZ  R7 , ﹩ 
DJNZ  R6 , D1 
DJNZ  R5 , DELAY 
RET 

DELAY 1: 
MOV   R6 , # 1 
D2 :  MOV  R7 , # 100 
DJNZ  R7 , ﹩ 
DJNZ  R6 , D2 
DJNZ  R5 , DELAY 1 
RET 

LED_BL : 
MOV  R4 , # 6 
LE1 :  CPL  WLED 
MOV  R5 , # 5 
CALL  DELAY 
DJNZ  R4 ,  LE1 
RET 

TABLE : 
DB  3FH ,  06H ,  5BH ,  4FH ,  66H 
DB  6DH ,  7DH ,  07H ,  7FH ,  6FH 
DB  77H ,  7CH ,  58H ,  5EH ,  79H 
DB  71H 

SCAN 1 : 
MOV  R0 ,  # BUF 
MOV  R2 ,  # 4 
MOV  ACC ,  # 0FEH 
S1 : 
PUSH  ACC 
MOV  A ,  @R0 
MOV  P0 ,  ACC 

POP  ACC 
MOV  P2 ,  ACC 

MOV  R5 ,  # 20 
CALL  DELAY 1 

RL  A 
INC  R0 
DJNZ  R2 ,  S1 
RET 

LOAD_DATA : 
MOV  BUF ,  # 3FH 
MOV  BUF+1 ,  # 3FH 
MOV  BUF+2 ,  # 3FH 
MOV  BUF+3 ,  # 3FH 
RET 

INIT : 
MOV  DEDA ,  # 0 
MOV  SEC0 ,  # 0 
MOV  SEC ,  # 0 
MOV  MIN ,  # 0 
MOV  HOUR ,  # 0 
RET 

INIT_TIMER : 
MOV  TMOD ,  # 00000000B 
MOV  IE ,  # 10000010B 
MOV  TL0 ,  # LO 
MOV  TH0 ,  # HI 
SETB  TR0 
RET 

T0_INT : 
PUSH  ACC 
MOV  TL0 ,  # LO 
MOV  TH0 ,  # HI 
INC  DEDA 

MOV  A ,  DEDA 
CJNE  A ,  # CO , TT1 
MOV  DEDA ,  # 0 

CPL  WLED 
IINC  SEC 
MOV  A , SEC 
CJNE  A ,  # 60 , TT1 
INC  HOUR 
MOV  MIV , # 0 
MOV  A ,  HOUR 
CJNE  A , # 24 ,TT1 
MOV  SEC , # 0 
MOV  MIN , # 0 
MOV  HOUR , # 0 
TT1 : 
POP  ACC 
RETI 

TIME_PRO : 
MOV  A , SEC 
MOV  B , SEC0 
CJNE  A , B , TI1 
JMP  TI2 
TI1 :  CALL  CONV 
MOV  SEC0 , SEC 
TI2 :  RET 

CONV 1 : 
MOV  A , MIN 
MOV  B , # 10 
DIV  AB 

MOV  DPTR ,  # TABLE 
MOVC  A , @A+DPTR 
MOV  BUF , A 

MOV  A , B 
MOVC  A , @A+DPTR 
MOV  BUF+1 , A 
MOV  A , SEC 
MOV  B , # 10 
DIV  AB 

MOV  DPTR ,  # TABLE 
MOVC  A , @A+DPTR 
MOV  BUF+2, A 

MOV  A , B 
MOVC  A , @A+DPTR 
MOV  BUF+3 , A 
RET 

CONV : 
MOV  A , HOUR 
MOV  B , # 10 
DIV  AB 

MOV  DPTR ,  # TABLE 
MOVC  A , @A+DPTR 
MOV  BUF , A 

MOV  A , B 
MOVC  A , @A+DPTR 
MOV  BUF+1 , A 
MOV  A , MIN 
MOV  B , #10 
DIV  AB 

MOV  DPTR ,  # TABLE 
MOVC  A , @A+DPTR 
MOV  BUF+2 , A 

MOV  A , B 
MOVC  A , @A+DPTR 
MOV  BUF+3 , A 
RET 

SET_TIME : 
CLR  TR0 
MOV  SEC , # 0 
L0 : 
CALL  SCAN1 
JB  K2 , L1 
INC  HOUR 
MOV  A ,  HOUR 
CJNE  A , # 24 , L11 
MOV  HOUR , # 0 
L11 : 
CALL  CONV 
CALL  SCANS 
JMP  L0 

L1:  JB  K3 , L2 
INC  MIN 
MOV  A ,  MIN 
CJNE  A , # 60 , L21 
MOV  MN , # 0 
L21 : 
CALL  CONV 
CALL  SCANS 
JMP  L0 

L2 :  JB  K4 , L0 
JNB  K4 , ﹩ 
CALL  LED_BL 
SETB  TR0 
RET 

SCANS : 
MOV  R4 , # 15 
SS :  CALL  SCAN1 
DJNZ  R4 , SS 
RET 
END 

  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -