⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 201gd331main.dt

📁 201话机源程序 201话机源程序
💻 DT
📖 第 1 页 / 共 3 页
字号:
        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 + -