📄 yanchen.asm
字号:
; 盐城鑫艺电动门 tel:13905107690 0515-7229356 4094 8 WORD第 3 口,只用一个口
;HAND SIGNAL=55,AA,CC
;CHINESE 8 WORDS
;NO TIMER, OLD HARDWARE
CS EQU 1
HS EQU 16
HS1 EQU 15
ZJS EQU 16
ZJS1 EQU 15
;R0 --PAGES=(0000H)=30H
;R1---PAGE=31H
;R2---MODE
;R3---TIME
;R4--TEMP
;(0100H)----DATA
ORG 0000H
SJMP MAIN
ORG 000BH
LJMP INTER0 ;jump the time0 interrupter subroutine
ORG 0023H
CLR ES
LJMP COMM
ORG 0040H
MAIN:
MOV IE,#90H ;set register IE
MOV IP,#10H ;set register IP ,COMM priority
CLR RS0 ;set register III
CLR RS1
MOV SP, #60H ;initiate the SP
MOV SCON,#60H ;SBUF mode I ,sm0=0,sm1=1,sm2=1,scon=#60h
MOV TMOD,#21H ;TIME1 mode II,Time0 mode I
MOV TCON,#00H ;inter1 low level trig,inter0 low level trig
MOV TL1,#0F3H ;9600 pbs,clk=24mhz ,smode=1,#0F3h
MOV TH1,#0F3H ;9600 pbs clk=40mhz smode=1 #0EAh
MOV PCON,#80H ;smod=1(#80h)
SETB TR1 ;make the time1 work
SETB REN
CLR ET0
CLR TR0
CLR P3.4 ;close LOE
CLR P1.0 ;CLOCK
CLR P1.1
LCALL CLEAR
MOV R7,#100
AA:
LCALL DELAY
DJNZ R7,AA
BEGIN:
CLR P1.6 ;ARR16
MOV DPTR,#0000H
MOV 40H,DPL
MOV 41H,DPH ;__
CLR P3.5 ;CS=0
MOVX A,@DPTR
MOV R0,A ;R0=PAGES
MOV 30H,A ;30H=PAGES
MOV R1,#0 ;R1=PAGE
MOV DPTR,#0100H;;;;;;;;;;;;;;;300H ;_
MOV 42H ,DPL
MOV 43H ,DPH ;42H,43H PRE PAGE
MOV 44H ,DPL
MOV 45H ,DPH ;44H,45H POST PAGE
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
B0: MOV DPL,40H
MOV DPH,41H
INC DPTR
CLR P3.5 ;CS=0
MOVX A,@DPTR
MOV R2,A ;MODE
; MOV R2,#01
INC DPTR
MOVX A,@DPTR
MOV R3,A ;TIME
; MOV R3,#5
SETB P3.5
MOV 40H,DPL
MOV 41H,DPH ;;;;;40H,41H=PARAM
;;;;;;;;;;;;;;;;;;; DATA;;;;;;;;;
MOV A,R1
JZ BE5
MOV A,45H
ADD A, #01h;;;;;;;;;;;;;2H ; LOW BYTE 1536=600H
MOV 45H ,A ; 44H,45H POST PAGE
;;;;;;;;;;;;;;;;;;;;;;;;
BE5: CJNE R2,#00,B1
ACALL PAGE1 ;AT ONCE
MOV 42H ,44H
MOV 43H ,45H ;42H,43H PRE PAGE
SJMP BB
B1: CJNE R2,#01,B2
ACALL UP
MOV 42H ,44H
MOV 43H ,45H ;42H,43H PRE PAGE
SJMP BB
B2: CJNE R2,#02,B3
ACALL DOWN
MOV 42H ,44H
MOV 43H ,45H ;42H,43H PRE PAGE
SJMP BB
B3: CJNE R2,#03,B4
ACALL RIGHT
MOV 42H ,44H
MOV 43H ,45H ;42H,43H PRE PAGE
SJMP BB
B4: CJNE R2,#04,B5
ACALL LEFT
MOV 42H ,44H
MOV 43H ,45H ;42H,43H PRE PAGE
SJMP BB
B5: CJNE R2,#05,B6
;ACALL OPEN
ACALL UP
MOV 42H ,44H
MOV 43H ,45H ;42H,43H PRE PAGE
; ACALL PAGE1
SJMP BB
B6: CJNE R2,#06,B7
;ACALL CLOSE
ACALL DOWN
MOV 42H ,44H
MOV 43H ,45H ;42H,43H PRE PAGE
SJMP BB
B7: CJNE R2,#07,B8
;ACALL OPEN1
ACALL RIGHT
MOV 42H ,44H
MOV 43H ,45H ;42H,43H PRE PAGE
SJMP BB
B8: CJNE R2,#08,B9
;ACALL CLOSE1
ACALL LEFT
MOV 42H ,44H
MOV 43H ,45H ;42H,43H PRE PAGE
SJMP BB
B9: CJNE R2,#09,B10
ACALL UP
MOV 42H ,44H
MOV 43H ,45H ;42H,43H PRE PAGE
BB: MOV A ,R3
JZ B10
CLR ET0
CLR TR0
MOV TH0,#15H ; 30ms
MOV TL0,#0A0H ;
MOV R4,#33
SETB TR0
SETB ET0
B13: CJNE R3,#00,B12 ;TIME
B10: CLR ET0
CLR TR0
INC R1
DJNZ R0,B11
MOV R0,30H
MOV DPTR,#0000H
MOV 40H,DPL
MOV 41H,DPH ;__
MOV R1,#0 ;R1=PAGE
MOV DPTR,#0100H;;;;;;;;;;;;;300H ;_
MOV 44H ,DPL
MOV 45H ,DPH ;44H,45H POST PAGE
B11: AJMP B0
B12: ACALL PAGE1
AJMP B13
;;;;;;;;;;TICKET;;;;;;;;;;;;;;;;;;;
TICKET: ACALL PAGE1
AJMP TICKET
;----SETDATA--------------------------------
SETDATA:
CLR P3.5 ;CS=0
MOVX A,@DPTR
SETB P3.5
CLR P1.3 ;SELETE THIRD ROW
MOVX @DPTR,A
CLR P1.5 ;SET DATA
SETB P1.3
SETB P1.5
; PUSH DPH
; MOV A,DPH
; ADD A,#01;;;;;;;2 ;32*16=512=200H
; MOV DPH,A
; CLR P3.5 ;CS=0
; MOVX A,@DPTR
; SETB P3.5
; CLR P1.3 ;SELETE SECOND ROW
; MOVX @DPTR,A
; CLR P1.5 ;SET DATA
; SETB P1.3
; SETB P1.5
; MOV A,DPH
; ADD A,#02 ;32*16=512=200H
; MOV DPH,A
; CLR P3.5 ;CS=0
; MOVX A,@DPTR
; SETB P3.5
; CLR P1.3 ;SELETE FIRST ROW
; MOVX @DPTR,A
; CLR P1.5 ;SET DATA
; SETB P1.3
; SETB P1.5
; POP DPH
RET
;;;;;;;;;COMPLETE PAGE;;;;;;;;;;;;;;;;;
PAGE1: CLR P3.4 ;close LOE
MOV R7,#HS
CLR P3.2
MOV DPL,44H ;POST PAGE
MOV DPH,45H
PP3: MOV R6,#ZJS
PP2: ACALL SETDATA
MOV R5,#08H
PP4: SETB P1.0 ;lclk
CLR P1.0
DJNZ R5,PP4
INC DPTR
SETB P3.4 ;open LOE
DJNZ R6,PP2
CLR P3.4 ;close LOE
NOP
NOP
NOP
NOP
SETB P1.1 ;LSTR invalid
NOP
CLR P1.1
NOP
NOP
NOP
NOP
NOP
NOP
NOP
; CLR P3.4 ;open LOE
SETB P3.2 ;HD invalid
DJNZ R7,PP3
CLR P3.2 ;HD valid
MOV R5,#20H
PP5: NOP
DJNZ R5,PP5
RET
;;;;;;;GEGIN LEFT;;;;;;;;;;
LEFT:
MOV 31H,R1
MOV 32H,R2
MOV 33H,R3
MOV 34H,R4
MOV 35H,R5
MOV 36H,R6
MOV 37H,R7
MOV 38H,R0
;;;;;;;;;;; BEGIN ;;;;;;;;;
MOV 3CH,#ZJS1 ; PRE PAGE ZANZJS 3CH=31--
MOV 3DH,#1 ; 3DH=1+++
LE1: MOV 3AH,#7 ;3AH=R6=7
MOV 3BH,#1 ;3BH=R5=1
LE2: CLR P3.4
MOV 46H,42H ; 46H,47H =PRE PAGE TEMP
MOV 47H,43H
MOV 49H,45H
MOV A,44H ;POST PAGE 44H,45H TAIL
ADD A,3CH
MOV 48H,A
JNC LE01
INC 49H ;POST PAGE
LE01:
mov r0,#8
mov 50h,46h
mov 51h,47h
mov 52h,48h
mov 53h,49h
LE300: MOV DPL,48H ;POST PAGE
MOV DPH,49H
MOV R7,#HS
CLR P3.4 ;close LOE
;;;;;;;;;;;;POST PAGE FIRST;;;;;;;;;;;;
;;;;;POST PAGE UNCOMPLETE BYTE;;;;;;
LE3: MOV A,3AH ;R6=3AH=7--
JZ LE6
MOV R6,A
CLR P3.5
MOVX A,@DPTR
SETB P3.5
LE4: RR A
DJNZ R6,LE4
CLR P1.3 ;SELETE THIRD ROW
MOVX @DPTR,A ;SET DATA
CLR P1.5 ;SET DATA
SETB P1.3
SETB P1.5
; PUSH DPH
; MOV A,DPH
; ADD A,#01;;;;;;;;;;;2 ;32*16=512=200H
; MOV DPH,A
; CLR P3.5 ;CS=0
; MOVX A,@DPTR
; SETB P3.5
; MOV R6,3AH ;R6=3AH=7--
;LE04: RR A
; DJNZ R6,LE04
; CLR P1.3 ;SELETE SECOND ROW
; MOVX @DPTR,A ;SET DATA
; CLR P1.5 ;SET DATA
; SETB P1.3
; SETB P1.5
; MOV A,DPH
; ADD A,#02 ;32*16=512=200H
; MOV DPH,A
; CLR P3.5 ;CS=0
; MOVX A,@DPTR
; SETB P3.5
; MOV R6,3AH ;R6=3AH=7--
;LE004: RR A
; DJNZ R6,LE004
; CLR P1.3 ;SELETE FIRST ROW
; MOVX @DPTR,A ;SET DATA
; CLR P1.5 ;SET DATA
; SETB P1.3
; SETB P1.5
;;;;;;;;;;;;;;;;;;;;;
MOV R5,3BH ;R5=3BH=1++
LE5: SETB P1.0 ;lclk
CLR P1.0
DJNZ R5,LE5
; POP DPH
INC DPTR
;;;;;;;;;;;POST PAGE;;;COMPLETE BYTE;;;;;;
LE6: MOV R2,3DH ;R2=3DH=1++
MOV A,3AH
JZ LE7
DEC R2
CJNE R2,#0, LE7
AJMP LE10 ;ONLY UNCOMPLETE BYTE;
LE7: ACALL SETDATA
MOV R4,#08H
LE8: SETB P1.0 ;lclk
CLR P1.0
DJNZ R4,LE8
INC DPTR
SETB P3.4 ;open LOE
DJNZ R2,LE7 ;R2=3DH
MOV A,DPL ; POST PAGE NEXT H
ADD A,3CH ;3CH=31---
MOV 48H,A
MOV 49H, DPH ; 48H,49H POST PAGE NEXT H
JNC LE10
INC 49H
;;;;;;;;PRE PAGE COMPLETE BYTE;;;;;;;
LE10: MOV DPL,46H ;PRE PAGE NEXT H
MOV DPH,47H
MOV A,3CH ;R3=3CH=31--
JZ LE13 ;ONLY UNCOMPLETE BYTE;
MOV R3,A ; PRE PAGE ZANZJS 3CH=R3=31--
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LE11: ACALL SETDATA
MOV R4,#08H
LE12: SETB P1.0 ;lclk
CLR P1.0
DJNZ R4,LE12
INC DPTR
SETB P3.4 ;open LOE
DJNZ R3,LE11; ;R3=31--
;;;;;;;;;PRE PAGE UNCOMPLETE BYTE;;;
LE13: MOV A,3AH ;R6=3AH=7--
JZ LE140
MOV R6,A
ACALL SETDATA
LE14: SETB P1.0 ;lclk
CLR P1.0
DJNZ R6,LE14
LE140: MOV A ,DPL
ADD A ,3DH ;3DH=1++
MOV 46H ,A
MOV 47H ,DPH ;46H,47H PRE PAGE NEXT H
JNC LE15
INC 47H
LE15: MOV DPL,48H ;48H,49H POST PAGE
MOV DPH ,49H
CLR P3.4 ;close LOE
NOP
NOP
NOP
NOP
SETB P1.1 ;LSTR invalid
NOP
CLR P1.1
NOP
NOP
NOP
NOP
NOP
NOP
NOP
; CLR P3.4 ;open LOE
SETB P3.2 ;HD invalid
DJNZ R7, LE18
CLR P3.2 ;HD valid
mov 46h,50h
mov 47h,51h
mov 48h,52h
mov 49h,53h
djnz r0,le200
CLR P3.4
INC 3BH ;3BH=1++
DEC 3AH
MOV A,3AH
CJNE A,#0FFH,LE19 ;3AH=7--
INC 3DH ; 3DH=1+++
DEC 3CH ; 3CH=31--
MOV A,3CH
CJNE A ,#0FFH, LE20
; JNZ LE20 ;NEXT POST PAGE
; MOV R5,#20H
;LE22: NOP
; DJNZ R5,LE22
SETB P3.4 ;open LOE
MOV R1, 31H
MOV R2 , 32H
MOV R3 , 33H
MOV R4 , 34H
MOV R5 , 35H
MOV R6 , 36H
MOV R7 , 37H
MOV R0,38H
RET
LE18: AJMP LE3
LE19: AJMP LE2
LE20: AJMP LE1
LE200: AJMP LE300
;;;;;;;;;;;;RIGHT;;;;;;;;;;;
RIGHT:
MOV 31H,R1
MOV 32H,R2
MOV 33H,R3
MOV 34H,R4
MOV 35H,R5
MOV 36H,R6
MOV 37H,R7
;;;;;;;;;;; BEGIN ;;;;;;;;;
MOV 3CH,#ZJS1 ; PRE PAGE ZANZJS 3CH=31--
MOV 3DH,#1 ; 3DH=1++++
RI1: MOV 3AH,#7 ;3AH=R6=7--
MOV 3BH,#1 ;3BH=R5=1++
RI2: CLR P3.4 ;close LOE
MOV 46H,44H ; 46H,47H =POST PAGE TEMP
MOV 47H,45H
MOV DPL,42H ;PRE PAGE
MOV DPH,43H
MOV R7,#HS
;;;;;;;;;PRE PAGE NOT COMPLETE BYTE;;;
RI3: MOV A ,3AH
JZ RI50
CLR P3.5
MOVX A,@DPTR
SETB P3.5
MOV R5,3BH ;R5=3BH=1++
RI4: RR A
DJNZ R5,RI4
CLR P1.3 ;SELETE THIRD ROW
MOVX @DPTR,A ;SET DATA
CLR P1.5 ;SET DATA
SETB P1.3
SETB P1.5
PUSH DPH
MOV A,DPH
ADD A,#01;;;;;;;;;;;;;;;2 ;32*16=512=200H
MOV DPH,A
CLR P3.5 ;CS=0
MOVX A,@DPTR
SETB P3.5
MOV R5,3BH ;R5=3BH=1++
RI04: RR A
DJNZ R5,RI04
CLR P1.2 ;SELETE SECOND ROW
MOVX @DPTR,A ;SET DATA
CLR P1.5 ;SET DATA
SETB P1.2
SETB P1.5
; MOV A,DPH
; ADD A,#02 ;32*16=512=200H
; MOV DPH,A
; CLR P3.5 ;CS=0
; MOVX A,@DPTR
; SETB P3.5
; MOV R5,3BH ;R5=3BH=1++
;RI004: RR A
; DJNZ R5,RI004
; CLR P1.3 ;SELETE FIRST ROW
; MOVX @DPTR,A ;SET DATA
; CLR P1.5 ;SET DATA
; SETB P1.3
; SETB P1.5
MOV R6,3AH ;R6=3AH=7--
RI5: SETB P1.0 ;lclk
CLR P1.0
DJNZ R6,RI5
POP DPH
;;;;;;;;PRE PAGE COMPLETE BYTE;;;;;;;
RI50: MOV A,3CH
JZ RI8 ;ONLY POST PAGE
MOV R3,A ; PRE PAGE ZANZJS 3CH=R3=31--
RI6: INC DPTR
ACALL SETDATA
MOV R4,#08H
RI7: SETB P1.0 ;lclk
CLR P1.0
DJNZ R4,RI7
SETB P3.4 ;open LOE
DJNZ R3,RI6 ;R3=31--
RI07: MOV A,DPL ; PRE PAGE NEXT H
ADD A,3DH ;3DH=1++
MOV 48H,A
MOV 49H,DPH
JNC RI8
INC 49H ; 48H,49H PRE PAGE NEXT H
;;;;;;;;;;;;;;;;;;;;;POST PAGE;;;;;;;;;;;;;
RI8: MOV DPL,46H ;POST PAGE NEXT H
MOV DPH,47H
MOV R2,3DH ;R2=3DH=1++(-1)
MOV A,3AH ;
JZ RI9
DEC R2
CJNE R2,#0, RI9
AJMP RI11 ;ONLY UNCOMPLETE BYTE;
;;;;;;;;;;;;;;; COMPLETE BYTE;;;;;;
RI9: ACALL SETDATA
MOV R4,#08H
RI10: SETB P1.0 ;lclk
CLR P1.0
DJNZ R4,RI10
INC DPTR
SETB P3.4 ;open LOE
DJNZ R2,RI9 ;R2=3DH
;;;;;;;NOT COMPLETE BYTE;;;;;;
RI11: MOV A ,3AH
JZ RI120 ; ONLY COMPLETE BYTE;
ACALL SETDATA
MOV R5,3BH ;R5=3BH=1++
RI12: SETB P1.0 ;lclk
CLR P1.0
DJNZ R5,RI12
INC DPTR
RI120: MOV A ,DPL
ADD A ,3CH ;3CH=31--
MOV 46H ,A
MOV 47H ,DPH ;46H,47H POST PAGE NEXT H
JNC RI13
INC 47H
RI13: CLR P3.4 ;close LOE
NOP
NOP
NOP
NOP
NOP
SETB P1.1 ;LSTR invalid
NOP
CLR P1.1
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
; CLR P3.4 ;open LOE
SETB P3.2 ;HD invalid
MOV DPL,48H ; PRE PAGE NEXT H
MOV DPH,49H
DJNZ R7, RI14
CLR P3.2 ;HD valid
CLR P3.4 ;close LOE
INC 3BH ;3BH=1++
DEC 3AH
MOV A,3AH
CJNE A,#0FFH,RI15 ;3AH=7--
INC 42H
MOV A,42H
JNZ RI17
INC 43H
RI17: INC 3DH ; 3DH=1+++
DEC 3CH ; 3CH=31--
MOV A,3CH
CJNE A ,#0FFH, RI16 ; NEXT PRE PAGE
MOV R5,#08H
RI22: NOP
DJNZ R5,RI22
SETB P3.4 ;open LOE
MOV R1, 31H
MOV R2 , 32H
MOV R3 , 33H
MOV R4 , 34H
MOV R5 , 35H
MOV R6 , 36H
MOV R7 , 37H
RET
RI14: AJMP RI3
RI15: AJMP RI2
RI16: AJMP RI1
;;;;;;;;;;;;;;;;UP;;;;;;;;;;;;
UP:
MOV 3AH,#31;;;;;;;;;;;;47;;;;47----
MOV 3BH,#1
U7: MOV 46H,42H
MOV 47H,43H
MOV A,3AH
MOV B,#ZJS
MUL AB
ADD A ,44H
MOV 48H,A
XCH A,B
ADDC A ,45H
MOV 49H,A
MOV DPTR,#0100H
MOV 4AH,DPL
MOV 4BH,DPH
;;;;;;;;;;;POST;;;;;;;;;;;;;
CLR P3.5
MOV R7,3BH;;;;1++
U1: MOV R6,#ZJS
U2: MOV DPL ,48H
MOV DPH,49H
MOVX A,@DPTR
INC DPTR
MOV 48H,DPL
MOV 49H,DPH
MOV DPL ,4AH
MOV DPH,4BH
MOVX @DPTR,A
INC DPTR
MOV 4AH,DPL
MOV 4BH,DPH
DJNZ R6,U2
DJNZ R7,U1
;;;;;;;;;;;;;;;PRE;;;;;;;
MOV A,3AH
JZ U8
MOV R7,3AH;;;;;47---
U3: MOV R6,#ZJS
U4: MOV DPL ,46H
MOV DPH,47H
MOVX A,@DPTR
INC DPTR
MOV 46H,DPL
MOV 47H,DPH
MOV DPL ,4AH
MOV DPH,4BH
MOVX @DPTR,A
INC DPTR
MOV 4AH,DPL
MOV 4BH,DPH
DJNZ R6,U4
DJNZ R7,U3
U8: SETB P3.5
PUSH 44H
PUSH 45H
MOV 44H,#00
MOV 45H,#01H
MOV R4,#CS
U5: LCALL PAGE1
DJNZ R4,U5
POP 45H
POP 44H
INC 3BH
DEC 3AH
MOV A,3AH
; CLR P3.4 ;open LOE
CJNE A,#0FFH,U6
RET
U6: AJMP U7
;;;;;;;;;;;;;;;;DOWN;;;;;;;;;;;;
DOWN:
MOV 3AH,#31;;;;;;;;;;;;;;;;;;47;;;;47----
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -