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

📄 zz.acc

📁 一个小程序
💻 ACC
字号:


		org	0000H
		ajmp	BEGAIN

		org	0003H
;		ljmp	IR_INT		;ex0 interrupt

;		org	0013H
;		ljmp	Key_Interrupt
;-----------------------------------------------------------
		org	0030H

BEGAIN:			
		mov   	IE,#81h     	;IE:   EA	X  ET2 ES   ET1  EX1  ET0  EX0
		mov	psw,#0	        ;      1        0   0	0   0	  0    0    1
		mov	sp,#60H		;
		mov	r0,#00100011b	;初始化R0,
		mov	p2,#00H		;set camera default
	
		clr	a
		setb	acc.5		
		mov	p0,a
		setb	p3.7		;enable 373
		nop
		clr	p3.7		;disable 373
		setb	p3.6		;write protect	AT24c02
;----------------------------------------------------------------------------------------

;-----------------------------------------------------------------------------------------

Key_scan:	mov	r2,#0F8H

key_loop:	mov	p1,r2
		clr	a
		mov	a,p1
		mov	r1,a		;p1 value save in r3
		orl	a,#11000111b
		cpl	a
		jz	next_hor
		acall	delay_10ms
		mov	a,r1                   
		cjne	a,p1,Key_scan	;检测是否有键按下,且是否为同一个键。

		;mov	a,p1	
		ajmp	BRIT_ADD		;跳入键位检测
		ajmp	BRIT_ADD
		
next_hor:	cjne	r2,#0FFH,continue
		ajmp	Key_scan
		nop
		nop
		ajmp	BEGAIN

continue:	inc	r2
		ajmp	key_loop
		nop
		nop
		ajmp	BEGAIN

;----------------------------------------------------------------------------------------------
;延时子程序
;----------------------------------------------------------------------------------------------
delay_30ms:	
		acall	delay_10ms
		acall	delay_10ms
		acall	delay_10ms
		ret

delay_10ms:
		acall	delay5ms
		acall	delay5ms
		ret

delay5ms:	mov	r7,#05h
		
LOOP1:		mov	r6,#0FAH

LOOP2:		nop
		nop
		djnz	r6,LOOP2
		djnz	r7,LOOP1
		ret	
		
;********************************************************************************************

;********************************************************************************************	
		

BRIT_ADD:	cjne	a,#11110000b,BRIT_DEC
		mov	r3,#21H
		mov	r5,#05H
		ajmp	uart

BRIT_DEC:	cjne	a,#11101000b,SHARP_ADD
		mov	r3,#21H
		mov	r5,#0AH
		ajmp	uart

SHARP_ADD:	cjne	a,#11011000b,SHARP_DEC
		mov	r3,#22H
		mov	r5,#05H
		ajmp	uart

SHARP_DEC:	cjne	a,#11110001b,RED_ADD
		mov	r3,#22H
		mov	r5,#0AH
		ajmp	uart

RED_ADD:	cjne	a,#11101001b,RED_DEC
		mov	r3,#23H
		mov	r5,#05H
		ajmp	uart

RED_DEC:	cjne	a,#11011001b,BLUE_ADD
		mov	r3,#23H
		mov	r5,#0AH
		ajmp	uart

BLUE_ADD:	cjne	a,#11110010b,BLUE_DEC
		mov	r3,#24H
		mov	r5,#05H
		ajmp	uart

BLUE_DEC:	cjne	a,#11101010b,FOCUS_FAR
		mov	r3,#24H
		mov	r5,#0AH
		ajmp	uart

FOCUS_FAR:	cjne	a,#11011010b,FOCUS_NEAR
		mov	r3,#25H
		mov	r5,#05H
		ajmp	uart

FOCUS_NEAR:	cjne	a,#11110011b,ZOOM_ADD
		mov	r3,#25H
		mov	r5,#0AH
		ajmp	uart

ZOOM_ADD:	cjne	a,#11101011b,ZOOM_DEC
		mov	r3,#26H
		mov	r5,#05H
		ajmp	uart

ZOOM_DEC:	cjne	a,#11011011b,AWC
		mov	r3,#26H
		mov	r5,#0AH
		ajmp	uart

AWC:		cjne	a,#11110100b,MIRROR
		mov	r3,#01H
		mov	r5,#05H
		ajmp	uart

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

;=======================================================================================
MIRROR:		cjne	a,#11101100b,AF		;R0 TO DEFINE THE FUNCTION OF THE MIRROR
		mov	r3,#19H
		mov	a,r0			;N_P, FREEZE AND READ COAD
		push	acc
		clr	acc.0
		clr	acc.1
		mov	r0,a
		pop	acc
		anl	a,#00000011b

	FULL:	cjne	a,#00000011b,LEFT
		;acall	VALUE_SET		;注解部分程序为R0取值的另一思路,供参考
		dec	a
		orl	a,r0
		xch	a,r0
		mov	r5,#0AH
		ajmp	uart

	LEFT:	cjne	a,#00000010b,RIGHT
		;acall	VALUE_SET
		dec	a
		orl	a,r0
		xch	a,r0
		mov	r5,#5AH
		ajmp	uart

	RIGHT:	cjne	a,#00000001b,NORMAL
		;acall	VALUE_SET
		dec	a
		orl	a,r0
		xch	a,r0
		mov	r5,#0A5H
		ajmp	uart

	NORMAL:	cjne	a,#00000000b,error
		;acall	VALUE_SET
		mov	a,#00000011b
		orl	a,r0
		xch	a,r0
		mov	r5,#05H
		ajmp	uart

	error:	mov	a,#00000011b
		orl	a,r0
		xch	a,r0
;----------------------------------------------------------------------------------
;----------------------------------------------------------------------------------
;VALUE_SET:	jnz	a,DEC_A
;		mov	a,#00000011b
;		ajmp	VALUE_SAVE
	
;DEC_A:		dec	a

;VALUE_SAVE:	orl	a,r0
;		xch	a,r0
;		ret
;----------------------------------------------------------------------------------
;----------------------------------------------------------------------------------

AF:		cjne	a,#11011100b,N_P
		mov	r3,#02H
		mov	r5,#05H
		ajmp	uart

N_P:		cjne	a,#11110101b,FREEZE
		mov	r3,#05H
		mov	a,r0
		rrc	a
		rrc	a
		rrc	a
		jc	nega
		mov	a,#00000100b
		orl	a,r0
		xch	a,r0
		mov	r5,#05H
		ajmp	uart

	nega:	mov	a,#11111011b
		anl	a,r0
		xch	a,r0
		mov	r5,#0AH
		ajmp	uart

FREEZE:		cjne	a,#11101101b,AV_SET
		mov	r3,#12H
		mov	a,r0
	;	rrc	a
	;	rrc	a
	;	rrc	a
	;	rrc	a
		jbc	acc.4,normal_2
		setb	acc.4
		;mov	a,#11110111b
		;anl	a,r0
		xch	a,r0
		mov	r5,#05H
		ajmp	uart

normal_2:	;mov	a,#00001000b
		;orl	a,r0
		xch	a,r0
		mov	r5,#0AH
		ajmp	uart

;-------------------------------------------------------------------------------------------

;-------------------------------------------------------------------------------------------
AV_SET:		cjne	a,#11011101b,LIGHT_SET
		mov	a,p2
		anl	a,#00000011b
		cjne	a,#00000000b,AV2		;检测是否AV1信号
		setb	p0.3
		clr	p0.4
		clr	p0.5
		setb	p3.7
		setb	p2.0
		clr	p3.7
		ajmp	KEY_OPTION

	AV2:	cjne	a,#00000001b,CAMER
		clr	p0.3
		setb	p0.4
		clr	p0.5
		setb	p3.7
		clr	p2.0
		setb	p2.1				;检测是否AV2信号
		clr	p3.7
		ajmp	KEY_OPTION

	CAMER:	cjne	a,#00000010b,error1
		clr	p0.3
		clr	p0.4
		setb	p0.5
		setb	p3.7
		clr	p2.0
		clr	p2.1				;检测是否摄像头信号
		clr	p3.7
		ajmp	KEY_OPTION

error1:		clr	p2.0
		clr	p2.1
		ajmp	Key_scan
;-------------------------------------------------------------------------------------------

;-------------------------------------------------------------------------------------------
LIGHT_SET:	cjne	a,#11110110b,VGA_SET
		mov	a,r0
		push	acc
		clr	acc.6
		clr	acc.5
		mov	r0,a
		pop	acc
		anl	a,#01100000b

TOP_LIGHT:	cjne	a,#00100000b,BOT_LIGHT
		mov	a,#01000000b
		orl	a,r0
		xch	a,r0
		setb	p2.2
		clr	p2.3
		setb	p3.7
		setb	p0.2
		clr	p0.1
		clr	p3.7
		ajmp	KEY_OPTION

BOT_LIGHT:	cjne	a,#01000000b,CLOSE_LIGHT
		mov	a,#00000000b
		orl	a,r0
		xch	a,r0
		setb	p2.3
		clr	p2.2
		setb	p3.7
		setb	p0.1
		clr	p0.2
		clr	p3.7
		ajmp	KEY_OPTION

CLOSE_LIGHT:	cjne	a,#00000000b,error2
		mov	a,#00100000b
		orl	a,r0
		xch	a,r0
		clr	p2.3
		clr	p2.2
		setb	p3.7
		clr	p0.1
		clr	p0.2
		clr	p3.7
		ajmp	KEY_OPTION
		
error2:		mov	a,#00100000b
		orl	a,r0
		xch	a,r0
		clr	p2.3
		clr	p2.2
		setb	p3.7
		clr	p0.1
		clr	p0.2
		clr	p3.7
		ajmp	KEY_OPTION
;---------------------------------------------------------------------------------------------
VGA_SET:	cjne	a,#11101110b,YM_UP	
		setb	p2.5
		lcall	delay_30ms
		clr	p2.5
		ajmp	KEY_OPTION
;---------------------------------------------------------------------------------------------
YM_UP:		cjne	a,#11011110b,YM_DOWN		
		mov	c,p2.6			;直接取端口值进行判断
		jc	STOP			;

		clr	p2.7
		setb	p2.6
		setb	p3.7
		setb	p0.6
		clr	p0.7
		clr	p3.7
		ajmp	KEY_OPTION

	STOP:	clr	p2.6
		setb	p3.7
		clr	p0.6
		clr	p3.7
		ajmp	KEY_OPTION
		
YM_DOWN:	cjne	a,#11110111b,READ_COAD
		mov	c,p2.7			;直接取端口值进行判断
		jc	STOP1

		clr	p2.6
		setb	p2.7
		setb	p3.7
		setb	p0.7
		clr	p0.6
		clr	p3.7
		ajmp	KEY_OPTION

	STOP1:	clr	p2.7
		setb	p3.7
		clr	p0.7
		clr	p3.7
		ajmp	KEY_OPTION

;************************************************************************************

;************************************************************************************

READ_COAD:	cjne	a,#11101111b,PROJ_POWER
		ajmp	Key_scan			;此功能为升级版用

PROJ_POWER:	cjne	a,#11011111b,error3
		ajmp	Key_scan

error3:		ajmp	Key_scan
		ajmp	Key_scan

		
;************************************************************************************

;************************************************************************************


uart:	
		clr	c
		mov	r2,#0B0H
		mov	r4,#00H
		mov	r6,#00H
		mov	r7,#0BFH

		mov	TMOD,#20H	;TMOD:  GATE C/T  M1  M0  GATE  C/T   M1  M0
					;	 0  	0    1    0     0     0     0    0
	        mov	TH1,#0FAH	;设置波特率,9600
		mov	TL1,#0FAH
		
		mov	SCON,#40H	;SCON:     SM0	SM1 SM2 REN TB8 RB8 TI	RI
			    		;            0	 1   0	 0   0	 0  0   0
		mov	PCON,#80H	;PCON	   SMOD   GF1    GF0   PD    IDL	
		setb	TR1
					;	     1	   0       0    0     0


;******************************************************************************************
;发送串口数据
;******************************************************************************************

DATA1:		mov	a,r2
		mov	SBUF,a
wait1:		jbc	TI,DATA2
		ajmp	wait1

DATA2:		mov	a,r3
		mov	SBUF,a
wait2:		jbc	TI,DATA3
		ajmp	wait2

DATA3:		mov	a,r4
		mov	SBUF,a
wait3:		jbc	TI,DATA4
		ajmp	wait3

DATA4:		mov	a,r5
		mov	SBUF,a
wait4:		jbc	TI,DATA5
		ajmp	wait4

DATA5:		mov	a,r6
		mov	SBUF,a
wait5:		jbc	TI,DATA6
		ajmp	wait5

DATA6:		mov	a,r7
		mov	SBUF,a
wait6:		jbc	TI,KEY_OPTION
		ajmp	wait6
;------------------------------------------------------------------------------------------

;------------------------------------------------------------------------------------------
KEY_OPTION:	mov	a,r1
		cjne	a,p1,KEY_OFF
		ajmp	KEY_OPTION

KEY_OFF:	clr	c
		anl	a,#00000111b
		subb	a,#00000100b
		jc	STOP_DATA1

FINISH:		clr	TR1
		clr	c
		ljmp	Key_scan
	
;******************************************************************************************

;*******************************************************************************************	
STOP_DATA1:	mov	a,#0B0H
		mov	SBUF,a
wait_1:		jbc	TI,STOP_DATA2
		ajmp	wait_1

STOP_DATA2:	mov	a,#2FH
		mov	SBUF,a
wait_2:		jbc	TI,STOP_DATA3
		ajmp	wait_2
		
STOP_DATA3:	mov	a,#00H
		mov	SBUF,a
wait_3:		jbc	TI,STOP_DATA4
		ajmp	wait_3

STOP_DATA4:	mov	a,#05H
		mov	SBUF,a
wait_4:		jbc	TI,STOP_DATA5
		ajmp	wait_4

STOP_DATA5:	mov	a,#00H
		mov	SBUF,a
wait_5:		jbc	TI,STOP_DATA6
		ajmp	wait_6

STOP_DATA6:	mov	a,#0BFH
		mov	SBUF,a
wait_6:		jbc	TI,FINISH
		ajmp	wait_6

;******************************************************************************************
;IR_READ:

;OUT_TIME:	clr	TR1
;		clr	c
;		ljmp	Key_scan

		end		

⌨️ 快捷键说明

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