?? 201gd331main.dt
字號:
wdtc
BC ISF,5
;JBC BITF1,0
;JMP MINT6
;JBS FSKSR,2
;JMP MINT6
;COM PORT8,3
;JBC PORT8,3
;JMP $+4
;BS PORT8,3
;JMP $+2
;BC PORT8,3
nop
nop
cyx1:BS PSW,7
MOV A,@256-28 ;32768/28=1200,重裝
IOW C2
BC PSW,7
cyx3:BS BITF1,4
nop
nop
nop
JMP MINT6
FSKDT: wdtc
bc isf,6
BS PSW,7
MOV A,@256-14 ;32768/2/13.65=1200,同步
IOW C2
IOR IMR
OR A,@0B00100000
; AND A,@0B01100000;11111110
IOW IMR
BC PSW,7
inc cidnum
JMP MINT7
;此處要加一個超時,如果沒有收到CD,清來電標志,便于接受下一個來電,而不是到RBELL.
;等待CD
ORG 0X0C00
rx_datafsk:
ringf:WDTC
JBs FSKSR,0 ;等待振鈴消失。
JMp RINGf
; PAGE 3
; mov a,@30
; CALL WAIT10MS
; PAGE $ / 0X400
;;DTMF解碼模塊上電。
BS R5,pwdn
; NOP
; NOP
; NOP
;FSK解碼模塊上電。
;bs port6,6
; PAGE 3
; CALL WAIT1MS
; PAGE $ / 0X400
;bc port6,6
;nop
;nop
MOV A,FSKSR
OR A,@0B01111000
MOV FSKSR,A
; PAGE 3
; CALL WAIT1MS
; PAGE $ / 0X400
fmov OV_SEC,@0x00
RG1:WDTC
disi
FMOV A,OV_SEC
eni
mov r10,a
SUB A,@10;30
JBC R3,0
JMP RG2
; BC BITF1,0;???????????????????
JMP RFSKEND1
rg2:
jbc bitf1,1 ;來鈴后,來DTMF的情況
jmp ringret
JBC FSKSR,1
JMP RG1
PAGE 4
CALL WAIT1MS
PAGE $ / 0X400
JBC FSKSR,1
JMP RG1
;bs port6,6
; PAGE 3
; CALL WAIT1MS
; PAGE $ / 0X400
;bc port6,6
;nop
;nop
BC R5,pwdn
;允許FSK,C2中斷。禁止TCC中斷
IOR IMR
OR A,@0B01000000
AND A,@0B01100000;11111110
IOW IMR
;接收信道占用信號。
nop
nop
FCLR SUM ;計算同步信號的個數。
;FBS BITF1,7 ;FLAG_LCDOFF
;BC BITF1,5 ;接收CID標志。
;
;chhh:jmp chhh
;nop
;nop
; mov count1,@50
; bank 0
; cbank 0
; mov a,@0x00
; mov cira,a
RXTB:wdtc
bc bitf1,4
; call Rx_Data
; JBC BITF1,6 ;用1086,此處總丟失CD.
; JMP ccccc
; mov a,data
; mov cird,a
; inc cira
; djz count1
; jmp rxtb
; jmp ccccc
; ccccc:wdtc
;jmp ccccc
CALL RX_DATA
JBC BITF1,6 ;用1086,此處總丟失CD.
JMP ERR1
MOV A,DATA
SUB A,@0X55
JBS R3,2
JMP RXTB
INC SUM
MOV A,SUM
SUB A,@10
JBC R3,0
JMP RXTB
;收180個標志信號。
RXDBZ: WDTC
CLR SUM ;RFLAG,標志信號的個數寄存器
RXDBZ0:
CALL RX_BIT
JBC BITF1,6
JMP ERR1
RXDBZ1: JBC R3,0
JMP RXDBZ2
CLR SUM
JMP RXDBZ0
RXDBZ2:
INC SUM
MOV A,SUM
SUB A,@150
JBC R3,0 ;C
JMP RXDBZ0
;
RXXLX:nop
CLR SUM
; PAGE 4
CALL RX_DATA ;消息類型
JBC BITF1,6
JMP ERR1
MOV A,DATA
ADD SUM,A
SUB A,@0X04
JBS R3,2 ;Z
; JMP RMDMF
JMP ERR1
RSDMF: ;單數據消息格式。
WDTC
;保存在緩存中。
MOV R4,@0X20
CALL RX_DATA
MOV A,DATA
ADD SUM,A
; BS R4,6
bank 2
MOV R0,A
bank 0
; BC R4,6
MOV COUNT,A ;用來記數。
INC R4
SDLP:
CALL RX_DATA
JBC BITF1,6
JMP ERR1
MOV A,DATA
ADD SUM,A
AND A,@0X0F
BANK 2
; BS R4,6
MOV R0,A
SWAP R0
bank 0
; BC R4,6
DJZ COUNT
JMP SDLP1
JMP CSUM
SDLP1:
CALL RX_DATA
JBC BITF1,6
JMP ERR1
MOV A,DATA
ADD SUM,A
AND A,@0X0F
BANK 2
; BS R4,6
ADD R0,A
; BC R4,6
bank 0
INC R4
DJZ COUNT
JMP SDLP
;求得校驗和。
CSUM:
;判斷是否有出局等異常情況。
COM SUM
INC SUM
;
; BS BITF1,0 ;FLAG_CID
; CLR OV_SEC
CALL RX_DATA ;SUM
MOV A,DATA
SUB A,SUM
JBS R3,2
JMP RFSKEND
mov r4,@0x21
page 5
CALL CDIS
mov r10,@0x0b
mov r4,@0x25
BANK 2
MOV A,@0X08
SUB A,0X20
mov r11,A
page 5
call dispw
PAGE $ / 0X400
BANK 0
JMP RFSKEND1
RFSKEND:
page 5
CALL CDIS
MOV R11,@0X10
MOV A,@0X04
BC BITF1,2
; PAGE 5 ;請撥號
CALL DISHZ112
PAGE $ / 0X400
BANK 0
RFSKEND1:
BC FSKSR,FSKPWR
ior IMR
AND A,@0B00001001
IOW IMR
bc bitf1,3
bs bitf2,3
RET
ringret:
NOP
NOP
BC FSKSR,FSKPWR
; ior IMR
; AND A,@00000001
; IOW IMR
ret
ERR1: nop
nop
ret
RX_DATA: WDTC
CALL RX_BIT
JBC BITF1,6
JMP RXD_END
JBC R3,0 ;C ;起始位
JMP RX_DATA ;略過結束位和標志位
; MOV A,@0X08
; MOV RACE,A
; BANK 0
MOV RACE,@0X08
nop
nop
RX_DATA1:
CALL RX_BIT
nop
nop
; BANK 0
JBC BITF1,6
JMP RXD_END
RX_D2: RRC DATA
DJZ RACE
JMP RX_DATA1
nop
nop
; FMOV A,DATA
RXD_END:
RET
;接收一個位的fsk,out c。
RX_BIT:
WDTC
BC BITF1,6
JBC FSKSR,1 ;判斷/CD是否為低
JMP RXB_END
JBS BITF1,4 ;C8_2是否中斷。
JMP RX_BIT
; BS PSW,7
; MOV A,@256-24 ;32768/2/13.65=1200,重裝
; IOW C2
; BC PSW,7
BC BITF1,4
BC R3,0
JBC FSKSR,2 ;DATA
BS R3,0 ;C
RXBE2: RET
RXB_END: BS BITF1,6
RXBE1: JMP RXBE2
; IOR IMR
; AND A,@0B11011111
; IOW IMR
; RET
HANDFLASH: ;拍叉簧
CLR RTIME
MOV A,@0X60
MOV TITLE,A
MOV A,@0X30
MOV R4,A
MOV A,@0X3E
bank 1
MOV R0,A
bank 0
CALL SEND_BUFF
CALL R_ACK
RET
KEYSDCAN:WDTC ;scan key value
MOV A,@0X00
MOV FREE,A
KEY1: BC PORT6,0
BS PORT6,1
BS PORT6,2
BS PORT6,3
CALL KEYY
MOV A,FREE
SUB A,@0X04
JBS R3,2
JMP KEYSCANRET
KEYS2: BS PORT6,0
BC PORT6,1
BS PORT6,2
BS PORT6,3
CALL KEYY
MOV A,FREE
SUB A,@0X08
JBS R3,2
JMP KEYSCANRET
KEYS3: BS PORT6,0
BS PORT6,1
BC PORT6,2
BS PORT6,3
CALL KEYY
MOV A,FREE
SUB A,@0X0C
JBS R3,2
JMP KEYSCANRET
KEYS4: BS PORT6,0
BS PORT6,1
BS PORT6,2
BC PORT6,3
CALL KEYY
MOV A,FREE
SUB A,@0X10
JBS R3,2
JMP KEYSCANRET
MOV A,@0XFF
MOV KEYVALUE,A
WDTC
KEYSCANRET:RET
KEYY:WDTC
JBS PORT7,4
JMP KEYSCAN
INC FREE
JBS PORT7,5
JMP KEYSCAN
INC FREE
JBS PORT7,6
JMP KEYSCAN
INC FREE
JBS PORT7,7
JMP KEYSCAN
INC FREE
WDTC
RET
KEYSCAN:
WDTC
MOV A,FREE
PAGE 4
CALL KEYTAB
PAGE $ /0X400
MOV KEYVALUE,A
WDTC
RET
SETP65IN: ;p65 in p64 out mode
ior port7
or a,@0x02
iow port7
ior port6
and a,@0xef
IOW PORT6
BS PORT6,4
mov a,@0x01
page 4
call wait10ms
page $ /0x400
RET
SETP64IN:
ior port6
or A,@0X10
IOW PORT6
ior port7
and a,@0xfd
iow port7
BS PORT7,1
mov a,@0x01
page 4
call wait10ms
page $ /0x400
RET
SETAIN:
ior port7
or a,@0x02
iow port7
ior port6
or A,@0X10
IOW PORT6
mov a,@0x01
page 4
call wait10ms
page $ /0x400
ret
SETAOUT:
ior port7
and a,@0xfd
iow port7
BS PORT7,1
ior port6
and a,@0xef
IOW PORT6
BS PORT6,4
BS PORT7,1
RET
SHAKE: WDTC
BC PORT7,1 ;ask for send
SHAKE1: JBC PORT6,4
JMP SHAKE1
WDTC
SHAKE2:
JBS PORT6,4
JMP SHAKE2
RET
RSHAKE2:
WDTC
RSHAKE12:JBC PORT7,1
JMP RSHAKE12
BC PORT6,4
MOV A,@1
page 4
CALL WAIT31MS
page $ /0x400
BS PORT6,4
; MOV A,@1
; page 4
;CALL WAIT31MS
; page $ /0x400
WDTC
RET
RSHAKE:
WDTC
RSHAKE1:JBC PORT7,1
JMP RSHAKE1
BC PORT6,4
MOV A,@1
page 4
CALL WAIT32MS
page $ /0x400
BS PORT6,4
; MOV A,@1
; page 4
;CALL WAIT31MS
; page $ /0x400
WDTC
RET
;main progam end
VCCDOWN:
MOV A,@0XC4
CONTW
CALL SETAOUT
; BC PORT6,7
BC CONFLAG,7
BS PORT5,2
; BC PORT5,0
BC PORT5,1
BC PORT5,3
BC PORT6,4
BC PORT6,5
MOV A,@0X0A;A0 ;
CALL WAIT10MS
VCCDOWN2:JBC PORT5,0 ;max 4s
JMP VCCDOWN1
MOV A,@0X10
CALL WAIT10MS
JBC PORT5,0
JMP VCCDOWN3
MOV A,@0XA0
CALL WAIT10MS
JBC PORT5,0
JMP VCCDOWN3
MOV A,@0XA0
CALL WAIT10MS
JBC PORT5,0
JMP VCCDOWN3
MOV A,@0XA0
CALL WAIT10MS ;may be ring
JMP VCCDOWN3
VCCDOWN1:
MOV A,@0X20
CALL WAIT10MS
VCCDOWN3:FCLR OV_SEC
INC RTIME
BC CONFLAG,5
MOV A,RTIME
SUB A,@0X05
JBC R3,0
JMP VCCEXIT
BS CONFLAG,5
CLR RTIME
VCCEXIT:RET
SEND_ACK:
CALL SETP64IN
CALL SHAKE
CALL SETAOUT
mov a,@1
page 4
CALL WAIT31MS
page $/0X400
MOV A,@0X07
CALL SEND_DATA
RET
SEND_BUFF:disi
CALL SETP64IN
CALL SHAKE
CALL SETAOUT
; page 4
; CALL WAIT1MS
; page $ / 0x400
; MOV A,@0X01
; CALL SEND_DATA
; MOV A,@0X00
; MOV BCC,A
MOV A,TITLE
CALL SEND_DATA
; MOV A,@0X02
; CALL SEND_DATA
MOV A,@0X0B
MOV COUNT,A
CBANK 0
MOV CIRA,@0X40
; MOV A,@0X30
; MOV R4,A
SEND_B1:
;bank 1
; MOV A,R0
; bank 0
MOV A,CIRD
SUB A,@0X3E
JBC R3,2
JMP SEND_B2
;bank 1
;MOV A,R0
;bank 0
MOV A,CIRD
CALL SEND_DATA
INC CIRA
; INC R4
DJZ COUNT
JMP SEND_B1
SEND_B2:
MOV A,@0X3E
CALL SEND_DATA
NOP
ENI
; MOV A,BCC
; CALL SEND_DATA
RET
R_ACK: CALL SETP65IN
CALL RSHAKE
CALL SETAIN
RET
R_DATA: ; receive one frame data
CALL SETP65IN
CALL RSHAKE2
CALL SETAIN
R_DAD0:;JMP R_DATAEND
; CALL RECV_DATA
; MOV A,DATA
; SUB A,@0X01 ;soh or no
; JBC R3,2
; JMP R_DAD1
; MOV A,DATA
; SUB A,@0X07 ;ack or no
; JBC R3,2
; JMP R_DATAEND
; R_DAD2: JMP R_DAD2 ;reset
R_DAD1:
; MOV A,@0X00
; MOV BCC,A
CALL RECV_DATA
MOV TITLE,A
; CALL RECV_DATA
CBANK 0
MOV CIRA,@0X40
; MOV R4,A
MOV A,@0X0A
MOV COUNT,A
R_DATA1:
CALL RECV_DATA
; BANK 1
; MOV R0,A
; BANK 0
MOV CIRD,A
SUB A,@0X3E
JBC R3,2
JMP R_DATAEND1
INC CIRA
DJZ COUNT
JMP R_DATA1
; CALL RECV_DATA ;receive 0x04h
R_DATAEND1:
; CALL RECV_DATA
;R_DATAEND:
NOP
RET
SEND_DATA:
WDTC
MOV DATA,A
MOV A,@0X08
MOV RACE,A
MOV A,DATA
XOR BCC,A
SEND_D0: BS PORT6,4
RLC DATA
JBC R3,0
JMP SEND_D1
BC PORT7,1
JMP SEND_D2
SEND_D1:
BS PORT7,1
SEND_D2: mov a,@1
page 4
call wait32ms
page $ /0x400
BC PORT6,4
mov a,@1
page 4
call wait32ms
page $ /0x400
WDTC
DJZ RACE
JMP SEND_D0
BS PORT6,4
BS PORT7,1
RET
RECV_DATA:
WDTC
MOV A,@0X08
MOV RACE,A
RECV_D0:
JBS PORT6,4
JMP RECV_D0
RECV_D1:
JBC PORT6,4
JMP RECV_D1
JBC PORT7,1
JMP RECV_D2
BC R3,0
JMP RECV_D3
RECV_D2:
BS R3,0
RECV_D3:
RLC DATA
WDTC
DJZ RACE
JMP RECV_D0
MOV A,DATA
XOR BCC,A
RET
WAIT11MS:
MOV A,@0X0C
MOV FREE,A
WAIT1MS1: WDTC ;1+1+2*13+1=29,29*61=1830
DJZ FREE
JMP WAIT1MS1
RET
;WAIT10MS:
; BANK 1
; MOV DELAY1,A ;
;WAIT10M0: ;(3*C2+4)*C1*61=10MS*C1
; MOV A,@40 ;40經示波器測試,為10MS.
; MOV DELAY2,A
;WAIT10M1: WDTC
; DJZ DELAY2
; JMP WAIT10M1
; DJZ DELAY1
; JMP WAIT10M0
; BANK 0
; RET
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -