📄 test.asm
字号:
;----------------constant definit-----------------------
infrad data 25h ; Send cord save
Coderec data 26h
Psetect data 27h
Hrec data 28h
Psnb equ 29h ; 2ah,2bh
codebit bit 05h
Psok bit 06h
Hint bit 07h
Fiveok bit 08h
;--------------bit definit-----------------------------
iscode bit 00h ; if iscode==1 then send singal else send carrier
isguidecode bit 01h ; guide code
isozcode bit 02h ; zero cord or one cord
sendover bit 03h ; ? send over
t0run bit 04h ; if t0run==1 then t0 run now
;--------------------------------------------------------
org 0000h
ajmp Main
org 0003h
clr ex0
org 000bh
jmp T0int ; T0 interupt entry
org 0013h
clr ex1
org 001bh
clr et1
org 0023h
clr es
org 002ch
;------------------------------------------------
T0int: clr tr0 ; Stop T0
clr iscode ; send carrier next
clr T0run ; T0 isn't run
reti
;-------------------------------------------------
Main: mov sp, #60h ; stack point address
acall Sysini ; System initial
loop: acall findcode ; which cord to send
acall Sendcar ; Send carrier
; jb T0run, $+3 ;
jnb T0run, Nloop
jnb Hint, Nloop_1
acall Calculate
clr Hint
Nloop_1: jb T0run , $
Nloop: jb sendover,loop
setb Sendover
setb isguidecode
jnb Fiveok , loop
clr Fiveok
acall P1out
jmp loop
;-----------------Sysini---------------------------
Sysini: CLR Hint
clr P1.3
mov tmod , #10010001b ; T1 gate and 16 bit; T0 16 bit
setb it1 ; high - low is efficiency
mov ie , #10000010b ; enable t0 interupt
setb tr1 ; run T1
mov r7, #43 ; 43 times
mov r6, #05h ; 8 bit
clr iscode ; isn't code
setb isguidecode ; send guide code when begin
setb sendover ; isn't send over
clr T0run ;?????
mov infrad , #10100101b ; Send code
mov r5, #5
mov Psetect, #0feh
mov p1, #00h
clr P3.5
clr P3.4
clr psok
clr Fiveok
mov r3, #02h
mov Hrec , #00h
mov Psnb, #00
mov Psnb+1, #00
mov Psnb+2, #00
ret
;------------------Extrain------------------------
Extrain: clr tr1 ; Stop T1
clr ie1 ; clr Extra interupt flag
mov 23h, th1
mov 24h, tl1
mov th1, #00h
mov tl1, #00h
Setb Hint
setb tr1
cpl p1.3
;cpl p1.1
ret
;-----------------------------------------------------
Sendcar: jnb iscode, carrier ; if iscode==0 then send carrier else send code
jnb isguidecode, isone
clr isguidecode
clr p1.3
mov th0, #high(62535)
mov tl0, #low(62535)
setb tr0
setb t0run
jmp Quit
isone: jnb isozcode, zerocode
clr p1.3
mov th0, #high(63850)
mov tl0, #low(63850)
setb tr0
setb t0run
jmp Quit
zerocode: clr p1.3
mov th0, #high(64575)
mov tl0, #low(64575)
setb tr0
setb t0run
jmp Quit
Carrier: jnb ie1, nointe
acall extrain
nointe: nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cpl p1.3
djnz r7, carrier
mov r7, #43
setb iscode
clr P1.3
Quit: ret
;-----------------------------------------------------------
Findcode:
;setb sendover
jnb iscode, Findquit
jb isguidecode, Findquit
mov a, infrad
rlc a
mov isozcode,c
mov a, infrad
rl a
mov infrad, a
djnz r6, findquit
mov infrad ,#10100101b
mov r6, #5
clr sendover
djnz r3, Findquit
Setb Fiveok
mov r3, #02h
clr PSok
mov a, psetect
rr a
mov Psetect ,a
jb acc.7, acc6_2
setb p1.7
clr p1.6
clr p1.5
jmp Findquit
acc6_2: jb acc.6 , acc5_2
clr p1.7
setb p1.6
clr p1.5
jmp Findquit
acc5_2: clr p1.7
clr p1.6
setb P1.5
mov psetect, #0feh
Findquit: ret
;-----------------------------------------------------------
Calculate: ;cpl p1.4 ;???
mov a, 23h
cjne a, #05h, $+3
jc Zcode
cjne a, #08h, $+3
jnc Gcode
setb Codebit
cpl P3.5 ;????
jmp Codeturn
Gcode: cjne a, #12, $+3
jnc Calquit
cjne a, #10, $+3
cpl p3.4
jnc Codini
;????
jmp Calquit
Zcode: cjne a, #03h, $+3
jc Calquit
clr codebit
cpl p3.2 ;????
Codeturn: mov c, codebit
mov a, Coderec
rlc a
mov Coderec, a
djnz r5, Calquit
mov a, Coderec
cjne a,#00001010b, Clrp
;jb acc.0 ,calquit
;cpl p1.4
inc Hrec
jnb Fiveok, Calquit
; clr Fiveok
;cpl p1.4
mov a, Hrec
cjne a,#2, $+3
mov Hrec, #00
jc clrp
;cjne a, #2,$+3
;jc Clrp
setb Psok
jmp Calquit
Clrp: clr Psok
jmp Calquit
codini: mov r5,#4
mov Coderec, #00
;cpl P1.2
Calquit: ret
;----------------------------------------------------
P1out:
mov a, Psetect
rl a
;jb Psok , p1set
jb acc.0 ,acc6
;clr p1.0
mov a, Psnb
anl a, #11000000b
mov b, a
mov c ,psok
mov a, Psnb
rrc a
mov Psnb, a
mov c, Psok
mov a, b
jc Stok
cjne a, #00h,p1oquit
clr P1.0
jmp P1oquit
Stok: cjne a, #0c0h, P1oquit
Setb P1.0
jmp P1oquit
acc6: jb acc.7, acc5
mov a, Psnb+1
anl a, #11100000b
mov b, a
mov c ,psok
mov a, Psnb+1
rrc a
mov Psnb+1, a
mov c, Psok
mov a, b
jc Stok_1
cjne a, #00h,p1oquit
clr P1.1
jmp P1oquit
Stok_1: cjne a, #0e0h, P1oquit
Setb P1.1
jmp P1oquit
acc5: jb acc.1, P1oquit
mov a, Psnb+2
anl a, #11100000b
mov b, a
mov c ,psok
mov a, Psnb+2
rrc a
mov Psnb+2, a
mov c, Psok
mov a, b
jc Stok_2
cjne a, #00h,p1oquit
clr P1.2
jmp P1oquit
Stok_2: cjne a, #0e0h, P1oquit
Setb P1.2
;jmp P1oquit
P1oquit:
ret
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -