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

📄 dsq.txt

📁 单片机程序,是得用8031单片机控制的定时器.具有倒计时提示功能
💻 TXT
字号:
  ADDR_MIN EQU R6	;存储分钟的单元
  ADDR_SEC EQU R7	;存储秒的单元

  ORG 0000H
  LJMP MAIN
  ORG 1BH
  JMP T1INT		;T1中断入口地址

  ORG 0100H
MAIN:
  MOV R2,#10		;R2为0.1s的倍数,R2=10,定时1s 
  MOV TMOD,#10H	        ;T1设置为方式1
  MOV TL1,#0B0H	        ;T1中断时间为0.1s
  MOV TH1,#3CH
  MOV IE,#88H		;允许T1中断

  MOV DPTR,#4003H
  MOV A,#88H
  MOVX @DPTR,A
  
  SETB TR1
  ;;;;;;;;;;;;;;;;;;;;;;;扫描K1,K2,设置时间(分,秒)
IFSEC:
  JNB  P1.1,IFMIN	;循环判断K1或K2是否按下?
  ACALL  DELAY10	;延时10毫秒触点消抖
  JNB  P1.1,IFSEC	;如果是干扰就返回
  JB  P1.1,$		;等待按键K2松开
  CLR  EA		;关中断
  CLR  C
  MOV  A,#60		;判断当前是否为60秒
  SUBB A,ADDR_SEC
  ACALL  CLR_SEC	;如果为60秒,秒清0,分钟加1
  INC ADDR_SEC		;如果不为60秒,秒加1
  ACALL DISPLAY
  AJMP IFMIN    
CLR_SEC:
  ACALL INC_MIN
  ACALL DISPLAY
  MOV TL1,#0B0H
  MOV TH1,#3CH
  SETB EA
IFMIN:
  JNB P1.0,IFSEC		
  ACALL DELAY10		;延时10毫秒触点消抖
  JNB P1.0,IFSEC	;如果是干扰就返回
  JB P1.0,$		;等待按键K1松开
  CLR  EA		;关中断
  INC_MIN
  ACALL DISPLAY
  MOV TL1,#0B0H
  MOV TH1,#3CH
  SETB EA
  ;;;;;;;;;;;;;;;;;;;;;;;分钟处理字程序
INC_MIN:
  MOV A,#99		;判断分钟是否为99
  CLR C
  SUBB A,ADDR_MIN
  JZ A,CLR_MIN
  INC ADDR_MIN
CLR_MIN:
  MOV ADDR_MIN,#0
  MOV ADDR_SEC,#0
  RET

  ;;;;;;;;;;;;;;;;;;;;;;;10毫秒延时子程序
DELAY10:
  MOV R4,#20
  D2:MOV R5,#248
  DJNZ R5,$
  DJNZ R4,D2
  RET
T1INT:
  CLR  EA		;关中断
  CJNE R2,#0,SD
  MOV  R2,10
  ACALL DISPLAY
  CJNE ADDR_SEC,#0,SD
  CJNE ADDR_MIN,#0,SD
  ACALL BELL
SD:			;重新设置T1初值,开中断
  DEC R2
  MOV TL1,#0B0H
  MOV TH1,#3CH
  SETB EA
  RETI
;;;;;;;;;;;;;;;;;;;;;;;报警子程序
BELL:
  CLR P1.6
RET
;;;;;;;;;;;;;;;;;;;;;;;显示子程序
DISPLAY:
  MOV A,ADDR_SEC
  MOV B,#10
  DIV AB
  ORL A,B               ;将十位和个位拼装成BCD码
  MOV DPTR,#4000
  MOVX @DTPR,A
  MOV A,ADDR_MIN
  MOV B,#10
  DIV AB
  ORL A,B
  MOV DPTR,#4001
  MOVX @DPTR,A  
RET

END
  
  

⌨️ 快捷键说明

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