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

📄 changhui.asm

📁 设计一个单片机控制的秒表系统。利用单片机的定时器/计数器定时和记数的原理
💻 ASM
字号:
ORG   0000H
LJMP  MAIN
ORG   0003H
LJMP   ZANTING
ORG   000BH
LJMP  DINGSHI
ORG   0013H
LJMP  TINGZHI
ORG   0030H
MAIN:

;开机初始化
MOV P0,#0C0H
MOV P2,#0C0H      ;使显示时间数码管为0
MOV DPTR,#TABLE   ;指定查表启始地址
SETB EA            ;开中断
SETB EX0
SETB EX1
SETB PX0
SETB PX1
SETB ET0
MOV  TMOD,#01H


START:     MOV R0,#40H  ;设定初始值
           MOV R1,#44H
  	   MOV  R2,#00H
	   CLR  P1.0
           MOV  TH0,#0D8H
           MOV  TL0,#0F0H
           MOV  R3,#00H
           MOV  R4,#00H
           MOV  R5,#00h
           MOV  R6,#00H
           MOV  R7,#64H
           MOV  SP,#30H

;等待按键输入,根据按键的输入判断执行什么功能

;循环判断开始按钮是否按下
XUNHUAN:
JB P1.7,START1
LCALL DELAY10		;延时10毫秒触点消抖
JB P1.7,XUNHUAN		;如果是干扰就返回
JNB P1.7,$
JB P1.0,GN2		;等待按键松开
LJMP GN1

;判断设置按钮是否按下

START1:
JB P1.6,START2
LCALL DELAY10         ;延时10毫秒触点消抖
JB P1.6,XUNHUAN        ;如果是干扰就返回
JNB P1.6,$
CPL P1.0
LJMP XUNHUAN

START2:
JB P1.5,xunhuan       ;循环判断开始按钮K2是否按下?
LCALL DELAY10         ;延时10毫秒触点消抖
JB P1.5,START1        ;如果是干扰就返回
JB P1.0,KUAIJIA
JNB P1.5,$
LCALL FANYE
LJMP XUNHUAN


;快加功能

KUAIJIA:
     F:LCALL DELAY10
       LCALL XIANSHI
       INC   R3
       CJNE  R3,#0AH,MAN
       MOV   R3,#00H
       INC   R4
       CJNE  R4,#0AH,MAN
       MOV   R4,#00H
       LCALL XIANSHI
 MAN:
       JB P1.5 ,STOP
       LJMP F
 STOP: LJMP XUNHUAN

;翻页功能

FANYE:      
       MOV A,@R0
       MOV R3,A
       MOV A,@R1
       MOV R4,A
       INC R0
       INC R1
       INC R2
       CJNE R2,#4H,QQ
       LCALL XIANSHI
       MOV R0,#40H
       MOV R1,#44H
       MOV R2,#00H
       LJMP XUNHUAN
  QQ:  LCALL XIANSHI
       RET

;数码管显示秒表时间的程序

GN1:
    CLR P1.4
    SETB TR0
 T1:CJNE  R2,#4,T2
    MOV   R0,#40H
    MOV   R1,#44H
    MOV   R2,#00H
    CLR  EA
    LJMP  XUNHUAN
 T2:LJMP  T1
;倒计时

GN2:
        SETB TR0
        DEC  R3
        sjmp $

;结束定时

OVER:     AJMP START;退到开机初始化状态

;1毫秒延时子程序
DELY1:     MOV R6,#2
D1:MOV R5,#248
DJNZ R5,$
DJNZ R6,D1
RET

;10毫秒延时子程序
DELAY10:   MOV R6,#20
D2:MOV R5,#248
DJNZ R5,$
DJNZ R6,D2
RET

;实验板上的两位一体的数码管0~9各数字的显示代码
TABLE:   DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H


;外部中断0中断程序
ZANTING:
         LCALL DELAY10			;延时10毫秒消抖
          JB P3.2,FAN
          JNB P3.2,$				;等待按键松开
ZT1:
          JB P3.2,$				;循环判断开始按钮K1是否按下?
          LCALL DELAY10			;延时10毫秒触点消抖
          JB P3.2,ZT1			;如果是干扰就返回
          JNB P3.2,$				;等待按键松开

FAN:
RETI

;外部中断1中断程序
TINGZHI:
          LCALL DELAY10			;延时10毫秒消抖
          JB P3.3,FANHUI
          JNB P3.3,$				;等待按键松开
          MOV A,R3
          MOV @R0,A
          MOV A,R4
          MOV @R1,A
          INC R0
          INC R1
          INC R2

FANHUI :
RETI

;显示子程序

XIANSHI:
       MOV   A    ,R3  ;扫描个位上的数字
       MOV   DPTR ,#TABLE
       MOVC  A    ,@A+DPTR
       MOV   P2   ,A
       MOV   A    ,R4 ;扫描十位上的数字
       MOV   DPTR ,#TABLE
       MOVC  A    ,@A+DPTR
       MOV   P0   ,A
       RET

;定时器0中断程序

DINGSHI:PUSH  ACC
        PUSH  PSW
        DJNZ  R7,PPP
       MOV   R7,#64H
       JB   P1.4 , JIAN
       AJMP  COUNT
COUNT: INC   R3
       CJNE  R3,#0AH,RETURN
       MOV   R3,#00H
       INC   R4
       CJNE  R4,#0AH,RETURN
       MOV   R4,#00H
 BBB:  MOV  TH0,#0D8H
       MOV  TL0,#0F0H
       SETB TR0
       LJMP RETURN
   PPP:MOV  TH0,#0D8H
       MOV  TL0,#0F0H
       SETB TR0
       LJMP RETURN
JIAN:  CJNE  R3,#00H,AAA
       CJNE  R4,#00H,AAA
       LJMP  OVER
 AAA: DEC   R3
      CJNE   R3,#0FFH,RETURN
      MOV   R3,#09H
      DEC  R4
      LJMP BBB
RETURN: POP  PSW
        POP  ACC
        LCALL XIANSHI
        RETI
END

⌨️ 快捷键说明

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