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

📄 zg高频头接收.dt

📁 2.4G婴儿监护器模块频点设置程序,EM78P153S开发
💻 DT
字号:
/*==============================================
	ZW01	数字调谐视频监控器 
	RCT=Internal  Frequency=High WDT=Enable
	OSC=RC,Frequency=4MHz/2Clock
	Checksum=5CB4
================================================*/
Channel_No	equ	16	;频道号 
Key_Time	equ	18	;按键时间,无键时间,2Bytes
System_Status	equ	20	;系统状态 
	Key_Hold	equ	0	;持续按键 
	Key_Hold2	equ	1
Time_Counter	equ	22	;自动扫描计时,2Bytes
Image_r5	equ	24
Image_r6	equ	25
Txd_Bits	equ	26
Temp_Var	equ	27
Scan_Channel	equ	28
Txd_Buffer	equ	32	;发送缓冲区 
;================================================;
	org	0x3ff
	jmp	System_Initial
	org	0
	jmp	System_Initial
;================================================;
Channel_Index_Table:		;频道指示 
	add	pc,a
	retl	@0b11101111	;0
	retl	@0b11011111	;1
	retl	@0b10111111	;2
	retl	@0b01111111	;3
;================================================;
org	8			;Int_Svr_Entrance
;================================================;
;	{					 ;16msTCC定时中断处理 
	clr	intf
	mov	a,Channel_No+0
	and	a,@3
	call	Channel_Index_Table;显示频道 
	mov	Channel_No+1,a
	;============================================
	jbs	r6,0
		jmp	switch_Mode
	mov	a,r6			;读工作模式 
	and	a,@0x08		 ;
	xor	a,Image_r6	  ;
	jbc	status,z		;模式改变?
		jmp	Exec_Mode   ;
	;============================================
	xor	Image_r6,a
	bc	System_Status,Key_Hold2
	clr	Key_Time+0	  ;是 
	clr	Time_Counter+0  ;
	clr	Time_Counter+1  ;
	;mov	a,@0xff
	;mov	r6,a			;关闭显示 
	reti
	;============================================		
Exec_Mode:
	;============================================
	jbc	Image_r6,3	  ;自动模式?
			jmp	Normal_Mode
	jbs	System_Status,Key_Hold2
		jmp	Fore_Channel
	;============================================
	inc	Time_Counter+1
	mov	a,@0xff
	jbs	Time_Counter+1,4
		mov	a,Channel_No+1
	;mov	r6,a
	iow	ioc6
	jbs	Time_Counter+1,5
		jmp	Read_Key
	bc	Time_Counter+1,5
	inc	Time_Counter+0
	mov	a,@246
	add	a,Time_Counter+0
	jbs	status,c
		jmp	Read_Key
	clr	Time_Counter+0
	inca	Channel_No+0
	and	a,@3
	mov	Channel_No+0,a
	call	Channel_Index_Table
	;mov	r6,a
	iow	ioc6
	call	Set_PLL_Parameter
	jmp	Read_Key		
	;============================================
Switch_Mode:
	swapa	r6
	xor	a,@0x0f
	and	a,@0x0f
	call	Channel_No_Table
	add	pc,a
	jmp	Save_Channel;0
	jmp	Save_Channel;1
	jmp	Save_Channel;2
	jmp	Save_Channel;3
	jmp	Auto_Channel;4
	mov	a,@0x0f
	mov	Image_r6,a
	reti				;5
Auto_Channel:
	inc	Time_Counter+1
	jbs	Time_Counter+1,5
		reti
	bc	Time_Counter+1,5
	inc	Time_Counter+0
	mov	a,@246
	add	a,Time_Counter+0
	jbs	status,c
		reti
	clr	Time_Counter+0
Next_Auto_Channel:
	inca	Channel_No+0
	and	a,@3
	mov	Channel_No+0,a
	call	Channel_Index_Table
	xor	a,@0xf0
	and	a,r6
	and	a,@0xf0
	jbs	status,z
			jmp	Next_Auto_Channel
	mov	a,Channel_No
	call	Set_PLL_Parameter	
	reti
Save_Channel:
	xor	a,Image_r6
	jbc	status,z
		reti
	xor	Image_r6,a
	mov	a,Image_r6
	mov	Channel_No+0,a
	call	Set_PLL_Parameter
	reti
	;============================================
Normal_Mode:
	mov	a,Channel_No+1
	;mov	r6,a
	iow	ioc6
	;============================================
Read_Key:
	clra
	jbc	r5,3
	mov	a,@8
	xor	a,Image_r5
	jbc	status,z		;按键状态改变 
		   jmp	Same_Key
	xor	Image_r5,a
	clr	Key_Time+0	  ;
	clr	Time_Counter+0
	clr	Time_Counter+1
	bc	System_Status,Key_Hold
	mov	a,@0xff
	;mov	r6,a
	iow	ioc6
	reti	
	;============================================			
Same_Key:				  ;相同按键 
	jbc	r5,3
		reti
	jbs	System_Status,Key_Hold
		jmp	Next_Channel
	inc	Key_Time+0	  ;
	reti
	;============================================
Next_Channel:
	inc	Channel_No+0
Change_Channel:
	mov	a,@0x03
	and	Channel_No+0,a
	mov	a,Channel_No+0
	call	Set_PLL_Parameter
	bs	System_Status,Key_Hold
	bs	System_Status,Key_Hold2
	reti
Fore_Channel:
	Dec	Channel_No+0
	jmp	Change_Channel
	;============================================

	;============================================;
System_Initial:
;	{
	mov	a,@0B00001000
	mov	r5,a
	mov	a,@0b11111000
	iow	ioc5
	;mov	r6,a
	;mov	a,@0b00001111
	;iow	ioc6
	clr	r6
	mov	a,@0xff
	iow	ioc6
	;=========================================
	mov	a,@0xfe
	iow	iocd;enable p60 pul up
	
	mov	a,@16
	mov	rsr,a
Initial_User_Ram:
	;	{
	clr	iar
	inc	rsr
	mov	a,rsr
	xor	a,@0b11101111
	jbs	status,z
		jmp	Initial_User_Ram
	;	}		
	clr	rsr
	mov	a,@0x01
	mov	Scan_Channel,a	
	jbs	r6,0
		call	Get_Channel_Code
		
	call	Set_PLL_Parameter
	jbs	r6,0
		jmp	Set_Tcc
	jbc	r5,3
		bs	Image_r5,3
	mov	a,r6
	and	a,@0x08
	mov	Image_r6,a
	mov	a,@0B11101111
	mov	Channel_No+1,a
	;mov	r6,a
	jbc	r6,0
		iow	ioc6	
Set_Tcc:
	mov	a,@0x06
	contw
	mov	a,@0x80
	iow	wdtcon	;Enable wdt
	mov	a,@1
	iow	intc
	eni	
;}
Main:
;	{
	nop
	wdtc
	nop
	jmp	Main
;	}
Set_PLL_Parameter:
	;===================================
	mov	a,@0xa0
	mov	Txd_Buffer,a
	mov	a,@8
	mov	Txd_Bits,a
	call	Txd_Byte
	;===================================
	mov	a,@0x32
	mov	Txd_Buffer,a
	mov	a,@8
	mov	Txd_Bits,a
	call	Txd_Byte
	;===================================
	mov	a,@0x20
	mov	Txd_Buffer,a
	mov	a,@3
	mov	Txd_Bits,a
	call	Txd_Byte
	;===================================
	bs	r5,1	
	call	Delay_us
	bc	r5,1	
	call	Delay_us
	;===================================
	mov	a,Channel_No
	add	a,Channel_No
	add	a,Channel_No
	add	a,Channel_No
	mov	Temp_Var,a	
	call	Param_Table
	mov	Txd_Buffer,a
	inc	Temp_Var
	mov	a,@8
	mov	Txd_Bits,a
	call	Txd_Byte
	;==================================
	mov	a,Temp_Var
	call	Param_Table
	mov	Txd_Buffer,a
	inc	Temp_Var
	mov	a,@8
	mov	Txd_Bits,a
	call	Txd_Byte
	;==================================
	mov	a,Temp_Var
	call	Param_Table
	mov	Txd_Buffer,a
	mov	a,@3
	mov	Txd_Bits,a
	call	Txd_Byte
	;==================================
	bs	r5,1		
	call	Delay_us
	bc	r5,1	
	call	Delay_us
	ret
;==============================================;

;==============================================;
Param_Table:
	add	pc,a
	;===================
	retl	@0x2A	;0 1934mhz+480MhZ
	retl	@0x8c	;1
	retl	@0xc0	;2
	retl	@0	;3
	;===================
	retl	@0x2A	;0
	retl	@0xef	;1
	retl	@0x80	;2
	retl	@0	;3	
	;===================
	retl	@0x2B	;0
	retl	@0x52	;1
	retl	@0x40	;2
	retl	@0	;3
	;==================
	retl	@0x2B	;0
	retl	@0xC5	;1
	retl	@0x00	;2
	retl	@0	;3	
Channel_No_Table:
	add	pc,a
	retl	@5	;0
	retl	@0	;1
	retl	@1	;2
	retl	@4	;3
	retl	@2	;4
	retl	@4	;5
	retl	@4	;6
	retl	@4	;7
	retl	@3	;8
	retl	@4	;9
	retl	@4	;a
	retl	@4	;b
	retl	@4	;c
	retl	@4	;d
	retl	@4	;e
	retl	@4	;f	
	;===================================
Delay_us:
	wdtc
	wdtc
	ret
	;===================================
Txd_Byte:
	bc	status,c
	rlc	Txd_Buffer
	bc	r5,2
	jbc	status,c
		bs	r5,2
	call	Delay_us
	bs	r5,0
	call	Delay_us
	bc	r5,0
	call	Delay_us
	djz	Txd_Bits
		jmp	Txd_Byte
	ret
	;====================================
Get_Channel_Code:
	swapa	r6
	xor	a,@0x0f
	and	a,@0x0f
	call	Channel_No_Table
	mov	channel_No,a
	mov	Image_r6,a
	ret
;-----------------------------------------------
;定义EM78P153器,RAM:0X10-0X2F
;-----------------------------------------------
iar     EQU 0  ;R0
TCC    EQU 1  ;R1
;-----------------------------------------------
pc     EQU 2  ;PC
;-----------------------------------------------
STATUS EQU 3  ;R3,STATUS REG
;===============================================
	RST	EQU 7  ;SET 1:WAKE UP FROM PIN CHANGE,0:OTHER
	GP1    EQU 6  ;
	GP0    EQU 5  ;
	T      EQU 4  ;WDT OVERFLOW
	P      EQU 3  ;POWER DOWN BIT
	Z      EQU 2  ;ZERO BIT
	DC     EQU 1  ;Aux CARRY BIT
	C      EQU 0  ;CARRY BIT
;-----------------------------------------------
RSR    EQU 4  ;REG SELECT REG---B0-B5,B6-B7:General Bit
;-----------------------------------------------
R5  	EQU 5  ;IO PORT 5
R6  	EQU 6  ;IO PORT 6
;-----------------------------------------------
;------------------------------------------------
INTF==0X0F	;INT FLAG REG
;================================================
	EXIF   EQU 2  ;EXTERNAL /INT FLAG
	ICIF   EQU 1  ;PORT6 INPUT CHANGE INT FLAG
	TCIF   EQU 0  ;TCC COUNT OVERFLOW INT FLAG
;-----------------------------------------------
;CONT REG,(OPTION REG),CONT WRITE IT
;===============================================
	INTEF  EQU 6  ;INT ENABLE FLAG
	TS     EQU 5  ;TMR0(TCC) CLOCK SOURCE SELECT
	TE     EQU 4  ;TCC COUNT EDGE,0-RISE EDGE,1-DOWN EDGE
	PAB    EQU 3  ;PRESCALER ASIGN BIT,0-TCC,1-WDT
	PSR2   EQU 2  ;PRESCALER b2:0-/2,1-/4,2-/8,3-/16,4-/32,5-/64,6-/128,7-/256(TCC)
	PSR1   EQU 1  ;PRESCALER b1:0-/1,1-/2,2-/4,3-/8, 4-/16,5-/32,6-/64, 7-/128(WDT)
	PSR0   EQU 0  ;PRESCALER b0
IOC5 	  EQU 5
IOC6 	  EQU 6
IOCA	   EQU 10  ;PRESCALER COUNTER REG,READONLY
IOCB	   EQU 0x0B;Enable P62-P60,P52-P50 PullDown:0-Enable,1-Disable
IOCC 	  EQU 0x0C;D7-D4,D2-D0 P6 OC OutPut,0:Enable OC
IOCD 	  EQU 0x0D;P67-P60(Ecept P63) Pull Up 0-Enable
IOCE 	  EQU 0x0E;WDTCON
WDTCON	 EQU 0X0E
	WDTE   EQU 7  ;WDT ENABLE
	EIS    EQU 6  ;1-PORT6.0 AS /INT PIN,0-PORT60 AS GENERAL PIN
;------------------------------------------------
INTC       EQU 0X0F;IOCF0,INT MASK REG(INT CONTROL REG)
;================================================
	EXIE   EQU 2  ;EXT  INT ENABLE
	ICIE   EQU 1  ;PORT6 INPUT CHANGE ENABLE
	TCIE   EQU 0  ;TCC COUNT OVERFLOW INT ENABLE	
	
Image_a		equ	0x2e	;
Image_status	equ	0x2f	;
;Save_Environment_Mac	macro
;	{
;	mov	Image_a,a	
;	swap	Image_a		   
;	swapa	status		    
;	mov	Image_Status,a     
;	endm	 	
;	}
;Restore_Environment_Mac	macro
;	{
;	swapa	Image_Status	  
;	mov	status,a
;	swapa	image_a
;	 reti
;	 endm
;	}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -