📄 zz.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 + -