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

📄 倒计时演示1.asm

📁 51单片机 用汇编语言写的应用程序 配合学习板使用
💻 ASM
字号:

	; 这是一个99S4位数倒计时,为了方便延时,定时时间稍长。
	LD1	BIT	P2.7
	LD2	BIT	P2.6
	LD3	BIT	P2.5
	LD4	BIT	P2.4
	LED1	BIT	P2.3
	LED2	BIT	P2.2
	LED3	BIT	P2.1
	LED4	BIT	P2.0
	BEEP	BIT	P3.6

	SUB		BIT	01H		;减位标志位
	BUF_LED1	EQU	24H		;LED1缓存
	BUF_LED2	EQU	25H		;LED2缓存
	BUF_LED3	EQU	26H		;LED3缓存
	BUF_LED4	EQU	27H		;LED4缓存
	BIN_LED1	EQU	28H
	BIN_LED2	EQU	29H
	BIN_LED3	EQU	2AH
	BIN_LED4	EQU	2BH
	BUFF_LP	EQU	2CH


	ORG	0000H
	LJMP	MAIN
	ORG	00BH
	LJMP	TT0
	ORG	0100H

MAIN:	MOV		SP,	#40H
	MOV		A,	#00H
	MOV		IE,	#00H
	MOV		R6,	#50H
	MOV		R0,	#20H
STR0:	MOV		@R0,	A
	INC		R0
	NOP
	DJNZ		R6,	STR0
	MOV		P1,#0FFH
	MOV		P0,#0FFH
	MOV		P2,#80H
	MOV		P3,#0FFH
	MOV		BUFF_LP,#00H
	MOV		TH0,#0FCH		;LED扫描周期1MS
	MOV		TL0,#18H
	MOV		TMOD,#01H
	mov	buf_led1,#90h
	mov	buf_led2,#90h
	mov	buf_led3,#90h
	mov	buf_led4,#90h
	MOV	BIN_LED1,#09H
	MOV	BIN_LED2,#09H
	MOV	BIN_LED3,#09H
	MOV	BIN_LED4,#09H
	SETB		EA			;1MS
	SETB		ET0
	SETB		TR0

WAIT:
        JB     SUB,SUB_L1
        LJMP WAIT
SUB_L1: MOV A,BIN_LED1
	CLR	SUB
	CJNE	A,#00H,SUB_EN
        MOV	BIN_LED1,#09
	LJMP	SUB_LED2
SUB_EN:  DEC	BIN_LED1
	 MOV	A,BIN_LED1
	 MOV	DPTR,#LED_CODE
	 MOVC	A,@A+DPTR
	 MOV	BUF_LED1,A
SUB_EN1: LJMP	WAIT
SUB_LED2:
	   MOV	BUF_LED1,#90H
	   MOV	A,BIN_LED2
	   CJNE	A,#00H,SUB_EN2
           MOV	BIN_LED2,#09
	   LJMP	SUB_LED3
SUB_EN2: DEC	BIN_LED2
	 MOV	A,BIN_LED2
	 MOV	DPTR,#LED_CODE
	 MOVC	A,@A+DPTR
	 MOV	BUF_LED2,A
         LJMP	WAIT
SUB_LED3:
	   MOV	BUF_LED2,#90H
	   MOV	A,BIN_LED3
	   CJNE	A,#00H,SUB_EN3
           MOV	BIN_LED3,#09
	   LJMP	SUB_LED4
SUB_EN3:  DEC	BIN_LED3
	  MOV	A,BIN_LED3
	  MOV	DPTR,#LED_CODE
	  MOVC	A,@A+DPTR
	  MOV	BUF_LED3,A
          LJMP	WAIT
SUB_LED4:
	   MOV	BUF_LED3,#09H
	   MOV	A,BIN_LED4
	   CJNE	A,#00H,SUB_EN4
	   LJMP	SUB_LED5
SUB_EN4: DEC	BIN_LED4
	 MOV	A,BIN_LED4
	 MOV	DPTR,#LED_CODE
	 MOVC	A,@A+DPTR
	 MOV	BUF_LED4,A
         LJMP	WAIT
SUB_LED5:LJMP  MAIN

;================================================定时器0,扫描数码管

TT0:		MOV		TH0,	#0FCH
		MOV		TL0,	#18H
		PUSH		ACC
		PUSH		PSW
		INC		BUFF_LP
		MOV		A,	BUFF_LP
		CJNE		A,	#04H,TT0_01
		MOV		BUFF_LP,#00H
TT0_01: 	MOV	A,	BUFF_LP
		RL		A
		MOV		DPTR,#LED_LOOP
		JMP		@A+DPTR
LED_LOOP:	AJMP		LED_L1
		AJMP		LED_L2
		AJMP		LED_L3
		AJMP		LED_L4
LED_L1:	       MOV P2,#11101111B
		MOV		P0,	BUF_LED4
		JMP		TT0_END
LED_L2:	       MOV P2,#11110111B
		MOV		P0,	BUF_LED3
		JMP		TT0_END
LED_L3:	       MOV P2,#11111011B
		MOV		P0,	BUF_LED2
		JMP		TT0_END
LED_L4:	       MOV P2,#11111101B
		MOV		P0,	BUF_LED1
		JMP		TT0_END
TT0_END:	INC		R2
		CJNE		R2,#100,TT0_END1
		MOV		R2,#00H
		SETB		SUB
TT0_END1:	POP		PSW
		POP      	ACC
		RETI
		NOP
		NOP
		LJMP	000H
DELAY:MOV R5,#0
D1:   MOV R6,#20
D2:   MOV R7,#248
      DJNZ R7,$
      DJNZ R6,D2
      DJNZ R5,D1
      RET

LED_CODE:       DB 0C0H,0F9H,0A4H,0B0H,99H,92H   ;数码管显示字型表
		DB 82H,0F8H,80H,90H,88H,83H,0A7H
		DB 0A1H,86H,8EH,0FFH


END

⌨️ 快捷键说明

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