📄 zg高频头接收.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 + -