?? int.asm
字號:
;************************************************
;Name :InterruptSub
;Function:
;Input :
;Output :
;Register Used:
;*************************************************
InterruptSub:
XCH A,AccBuf
XCH A,PFLAG
B0MOV PflagBuf,A
b0bts0 FTC0IRQ ;//Analyse the Interrupt resourc
jmp TC0INTR
b0bts0 ft0irq
jmp t0intr
b0bts0 FP00IRQ
jmp P00INTR
Interrupt90:
XCH A,PflagBuf
B0MOV PFLAG,A
XCH A,AccBuf ;//For release the Acc And Pflag
RETI
;--------------------------------------------------------
;--------------------------------------------------------
TC0INTR:
;// notbit ptwing
;// jmp TC0INTR90
;----------------------
;左右翼控制
b0bts0 wingstatflag
jmp TC0INTR10
b0bset ptwing
decms wingbuf
jmp TC0INTR20
b0bclr ptwing
b0bset wingstatflag
mov_ winglowbuf,#220 ;set low level 10ms
mov_ wingbuf,wingloadbuf ;set high level
;-----
TC0INTR10:
decms winglowbuf
jmp TC0INTR20
b0bclr wingstatflag
;-----------------------
TC0INTR20:
;尾翼控制
b0bts0 empennagestatflag
jmp TC0INTR30
b0bset ptempennage
decms empennagebuf
jmp TC0INTR40
b0bclr ptempennage
b0bset empennagestatflag
mov_ empennagelowbuf,#230 ;set low level 10ms
mov_ empennagebuf,empennageloadbuf ;set high level
;-----
TC0INTR30:
decms empennagelowbuf
jmp TC0INTR40
b0bclr empennagestatflag
;-----------------------
TC0INTR40:
;螺旋槳控制
b0bts0 screwstatflag
jmp TC0INTR50
b0bset ptscrew
decms screwbuf
jmp TC0INTR60
b0bclr ptscrew
b0bset screwstatflag
mov_ screwlowbuf,#240 ;set low level 10ms
mov_ screwbuf,screwloadbuf ;set high level
;-----
TC0INTR50:
decms screwlowbuf
jmp TC0INTR60
b0bclr screwstatflag
;-----------------------
TC0INTR60:
;擺尾控制
b0bts0 swingstatflag
jmp TC0INTR70
b0bset ptswing
decms swingbuf
jmp TC0INTR80
b0bclr ptswing
b0bset swingstatflag
mov_ swinglowbuf,#250 ;set low level 10ms
mov_ swingbuf,swingloadbuf ;set high level
;-----
TC0INTR70:
decms swinglowbuf
jmp TC0INTR80
b0bclr swingstatflag
;-----
TC0INTR80:
/*
incms timer1000us
nop
mov a,timer1000us
sub a,#5
bts1 fc
jmp TC0INTR10
;// bset t1000usflag
clr timer1000us
TC0INTR10:
incms timer1800us
nop
mov a,timer1800us
sub a,#8
bts1 fc
jmp TC0INTR20
bset t1800usflag
clr timer1800us
TC0INTR20:
incms timer18ms
nop
mov a,timer18ms
sub a,#90
bts1 fc
jmp TC0INTR30
bset t18msflag
clr timer18ms
TC0INTR30:
incms timer5ms
nop
mov a,timer5ms
sub a,#25
bts1 fc
jmp TC0INTR90
bset t5msflag
clr timer5ms
bset t5msflag1
bset t5msflag2
bset t5msflag3
bset t5msflag4
*/
TC0INTR90:
b0bclr FTC0IRQ
jmp Interrupt90
;--------------------------------------------------------
;--------------------------------------------------------
t0intr:
mov a,#6
sub a,levecount
bts0 fc
jmp t0intr10
bset errorflag
jmp t0intr90
t0intr10:
incms levecount
nop
t0intr90:
bclr ft0irq
jmp interrupt90
;--------------------------------------------------------
;--------------------------------------------------------
P00INTR:
bclr fp00irq
bclr ft0enb
mov a,t0c
bts1 singleflag
jmp disasm100
mov level,a ;上升沿進入
jmp disasm200
disasm100:
mov leveh,a ;下降沿進入
jmp disasm200
disasm200:
clr t0c
bset ft0enb
bts0 singleflag
jmp disasm220
jmp disasm210
disasm210:
@p00_edge 1 ;下降沿進入,設(shè)為上升沿中斷
bts0 firstflag
jmp disasm221
mov a,levecount
bts0 fz
jmp disasm80
bset firstflag
clr levecount
clr inputcount
jmp disasm90
disasm220:
@p00_edge 2 ;上升沿進入,設(shè)為下降沿中斷
mov a,#56 ;448us=8x56
sub a,level
bts0 fc
jmp disasm80 ;小于448us,出錯
mov a,#75 ;600us=8x75
sub a,level
bts0 fc
jmp disasm90 ;小于600us,返回
jmp disasm80 ;大于600us,出錯
disasm221:
clr tablecount
incms inputcount
nop
mov a,inputcount
sub a,#5
bts1 fc
jmp chksignaltable
jmp disasm80
chksignaltable: ;查詢控制信號的檔位
b0mov y,#signaltable$m
b0mov z,#signaltable$l
mov a,tablecount
add z,a
mov a,#0
adc y,a
movc
sub a,leveh
bts0 fc
jmp chksignaltableend
jmp signaltableadd
signaltableadd:
incms tablecount
nop
jmp chksignaltable
chksignaltableend:
mov a,tablecount
bts0 fz
jmp disasm80 ;error
sub a,#41
bts0 fc
jmp disasm80 ;error
mov a,tablecount
add a,#18
mov gearbuf,a
mov a,inputcount
@jmp_a 5
jmp disasm90
jmp gearwing
jmp gearempennage
jmp gearscrew
jmp gearswing
gearwing:
mov a,gearbuf
cmprs a,wingbuf1
jmp gearwing10
incms samebuf1
nop
mov a,samebuf1
sub a,samecontant
bts1 fc
jmp disasm90
clr samebuf1
mov a,wingbuf1
mov wingloadbuf,a
jmp disasm90
gearwing10:
mov a,gearbuf
mov wingbuf1,a
clr samebuf1
jmp disasm90
gearempennage:
mov a,gearbuf
cmprs a,empennagebuf1
jmp gearempennage10
incms samebuf2
nop
mov a,samebuf2
sub a,samecontant
bts1 fc
jmp disasm90
mov a,empennagebuf1
mov empennageloadbuf,a
jmp disasm90
gearempennage10:
mov a,gearbuf
mov empennagebuf1,a
clr samebuf2
jmp disasm90
gearscrew:
mov a,gearbuf
cmprs a,screwbuf1
jmp gearscrew10
incms samebuf3
nop
mov a,samebuf3
sub a,samecontant
bts1 fc
jmp disasm90
mov a,screwbuf1
mov screwloadbuf,a
jmp disasm90
gearscrew10:
mov a,gearbuf
mov screwbuf1,a
clr samebuf3
jmp disasm90
gearswing:
mov a,gearbuf
cmprs a,swingbuf1
jmp gearswing10
incms samebuf4
nop
mov a,samebuf4
sub a,samecontant
bts1 fc
jmp disasm90
mov a,swingbuf1
mov swingloadbuf,a
jmp disasm90
gearswing10:
mov a,gearbuf
mov swingbuf1,a
clr samebuf4
jmp disasm90
disasm80:
@p00_edge 2 ;出錯,設(shè)為下降沿中斷
clr inputcount
clr levecount
bclr firstflag
disasm90:
P00INTR90:
jmp Interrupt90
;***********************************************
mnint:
bts1 t5msflag
jmp mnint90
bclr t5msflag
call dkeychat
mnint10:
incms timer500ms
nop
mov a,timer500ms
sub a,#100
bts1 fc
jmp mnint90
clr timer500ms
bset t500msflag
mnint90:
ret
;***********************************************
signaltable:
dw 030h ;0
dw 035h ;1
dw 03ah ;2
dw 03fh ;3
dw 044h ;4
dw 04ah ;5
dw 04fh ;6
dw 054h ;7
dw 059h ;8
dw 05eh ;9
dw 064h ;10
dw 069h ;11
dw 06eh ;12
dw 073h ;13
dw 078h ;14
dw 07eh ;15
dw 083h ;16
dw 088h ;17
dw 08dh ;18
dw 091h ;19
dw 098h ;20
dw 09dh ;21
dw 0a2h ;22
dw 0a7h ;23
dw 0ach ;24
dw 0b3h ;25
dw 0b8h ;26
dw 0bdh ;27
dw 0c2h ;28
dw 0c7h ;29
dw 0cdh ;30
dw 0d2h ;31
dw 0d7h ;32
dw 0ddh ;33
dw 0e1h ;34
dw 0e7h ;35
dw 0ech ;36
dw 0f2h ;37
dw 0f7h ;38
dw 0fch ;39
dw 0ffh ;40
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -