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

📄 test12.asm

📁 红外单片机开发基础
💻 ASM
字号:
;=================================================
; 0-9999记数器 sw1 +     sw2 -      sw3 清零
;     按下sw时对应 D9 D8 点亮 
;=================================================
;
;	多功能红外单片机开发板	配套实验板学习例程
;
;	中国DSP网	
;
;	http://www.chinadsp.cn
;	E-mail:ylmcu@163.com
;=================================================

LED1	EQU	08H
LED2	EQU	09H
LED3	EQU	0AH
LED4	EQU	0BH

LedT0	EQU	0CH	;0-3 轮流点亮4个数据管

	ORG 0000H 
	LJMP START;转入主程序


	ORG	000BH			
;定时器0中断入口
INT_TO:
	PUSH	ACC
	PUSH	PSW

	CLR	TF0		;清定时0中断标志
	MOV	TH0,#0F6H	;2.5MS
	MOV	TL0,#03DH	;

	MOV	A,#11110000B	;关数码管
	ORL	P2,A

	MOV	A,LedT0
	CJNE	A,#0,INT_T0_1
	MOV	A,LED1
	MOVC	A,@A+DPTR
	MOV	P0,A
	CLR	P2.7	
	MOV	LedT0,#1
	LJMP	INT_T0_END
 INT_T0_1:
  	
	MOV	A,LedT0
	CJNE	A,#1,INT_T0_2
	MOV	A,LED2
	MOVC	A,@A+DPTR
	MOV	P0,A
	CLR	P2.6	
	MOV	LedT0,#2
	LJMP	INT_T0_END
 INT_T0_2:
  	
 	MOV	A,LedT0
	CJNE	A,#2,INT_T0_3
	MOV	A,LED3
	MOVC	A,@A+DPTR
	MOV	P0,A
	CLR	P2.5	
	MOV	LedT0,#3
	LJMP	INT_T0_END
 INT_T0_3:
  	
	MOV	A,LED4
	MOVC	A,@A+DPTR
	MOV	P0,A
	CLR	P2.4	
	MOV	LedT0,#0
	LJMP	INT_T0_END
  	
 INT_T0_END:

	POP	PSW	
	POP	ACC

RETI

;=============================================

START:
	MOV	SP,#60H
	

	MOV	TMOD,#01H	;设定T0为十六位定时模式。
	MOV	TH0,#0F6H	;2MS
	MOV	TL0,#03DH	;
	SETB	TR0		;开定时器0
	SETB	ET0		;致能定时0中断
	CLR	TF0		;清定时0中断标志
	SETB	EA		;开总中断

	MOV	LedT0,#00H
	MOV	DPTR,#TABLE

	MOV	LED1,#0
	MOV	LED2,#0
	MOV	LED3,#0
	MOV	LED4,#0
;=============================================
SCAN:	
	;按键扫描
	MOV	A,#11100011B
	ORL	A,P3
	CPL	A
	JZ	SCAN
	LCALL	DELAY10MS	;去抖动
	JNB	P3.2,KEY_SW1_INC
	JNB	P3.3,KEY_SW2_DEC
	JNB	P3.4,KEY_SW3_RST
	LJMP	SCAN
;=============================================
KEY_SW1_INC:
	;点灯d9
	CLR	P1.7
	JNB	P3.2,$	;放开按键

	INC	LED4
	MOV	A,LED4
	CJNE	A,#10,KEY_SW1_END	;等于10,进位
	MOV	LED4,#00
	INC	LED3
	MOV	A,LED3
	CJNE	A,#10,KEY_SW1_END
	MOV	LED3,#00
	INC	LED2
	MOV	A,LED2
	CJNE	A,#10,KEY_SW1_END
	MOV	LED2,#00
	INC	LED1
	MOV	A,LED1
	CJNE	A,#10,KEY_SW1_END
	MOV	LED1,#00
	MOV	LED2,#00
	MOV	LED3,#00
	MOV	LED4,#00
KEY_SW1_END:
	;灭灯d9
	SETB	P1.7
	JMP	SCAN
;=============================================
KEY_SW2_DEC:
	;点灯d8
	CLR	P1.6
	JNB	P3.3,$	;放开按键

	CLR	C
	MOV	A,LED4
	SUBB	A,#1
	MOV	LED4,A
	JNC	KEY_SW2_END	;借位,表示已经减到小于0
	MOV	LED4,#09
	CLR	C
	MOV	A,LED3
	SUBB	A,#1
	MOV	LED3,A
	JNC	KEY_SW2_END
	MOV	LED3,#09
	CLR	C
	MOV	A,LED2
	SUBB	A,#1
	MOV	LED2,A
	JNC	KEY_SW2_END
	MOV	LED2,#09
	CLR	C
	MOV	A,LED1
	SUBB	A,#1
	MOV	LED1,A
	JNC	KEY_SW2_END
	MOV	LED1,#09
	MOV	LED2,#09
	MOV	LED3,#09
	MOV	LED4,#09
KEY_SW2_END:
	;灭灯d8
	SETB	P1.6
	JMP	SCAN


;=============================================
KEY_SW3_RST:
	MOV	LED1,#00
	MOV	LED2,#00
	MOV	LED3,#00
	MOV	LED4,#00	
	;检测按键是否放开
	JNB	P3.4,$
	JMP	SCAN

DELAY10MS: 
	MOV R4,#20
DELAY10MSA:
	MOV R5,#247
	DJNZ R5,$
	DJNZ R4,DELAY10MSA
RET

TABLE:
	DB	00101000B	;0
	DB	11101011B	;1
	DB	00110010B	;2
	DB	10100010B	;3
	DB	11100001B	;4
	DB	10100100B	;5
	DB	00100100B	;6
	DB	11101010B	;7
	DB	00100000B	;8
	DB	10100000B	;9
	DB	01100000B	;A
	DB	00100101B	;b
	DB	00111100B	;C
	DB	00100011B	;d
	DB	00110100B	;E
	DB	01110100B	;F
	DB	11110111B	;-
	DB	11111111B	;
END

⌨️ 快捷键说明

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