?? xl032_szgs01.dt
字號:
jbs Sound_Time_Counter+1,7
jmp Tcc_End
clr Sound_Time_Counter+1
;------;
bs System_Status,Lamp_Off
clr System_Clock+2
jmp Tcc_End
;------;
No_Di___Sound_Event:
; bc Lamp_Port,Lamp
inc Sound_Time_Counter+1
jbs status,z
jmp Tcc_End
clr Sound_Event_Counter
bc System_Status,Lamp_Off
; bc System_Status,Lamp_Enable
bc Sound_Control_Port,Sound_Control
bs System_Status,Warm_Initialize
jmp Tcc_End
Di___Sound_Event_Tcc_Set:
bc System_Status,Warm_Initialize
clr Sound_Time_Counter+1
clr Sound_Time_Counter+2
clr Sound_Time_Counter+3
ret
;======;
*/
/*
Wu_Wu_Wu_Sound_Event:
jbc System_Status,Warm_Initialize
call Wu_Wu_Wu_Sound_Event_Tcc_Set
;------;
jbs System_RF_Status,No_Sound ;無聲標志
jbc Warm_Port,Warm
jmp Wu_Wu_Wu_Sound_High_Status
Wu_Wu_Wu_Sound_Low_Status:
bs Warm_Port,Warm
add tcc,@256-13 ;延時110uS
jmp Tcc_End
Wu_Wu_Wu_Sound_High_Status:
bc Warm_Port,Warm
mov a,Sound_Time_Counter+2
add a,@13
add tcc,a
;------;
inc Sound_Time_Counter+1 ;聲音變化速度
mov a,Sound_Time_Counter+1
add a,@256-6
jbs status,c
jmp Tcc_End
clr Sound_Time_Counter+1
;------;
jbc System_Status,Sound_Status_Flag
jmp Add_Wu_Wu_Wu_Sound
Sub_Wu_Wu_Wu_Sound:
inc Sound_Time_Counter+2
mov a,Sound_Time_Counter+2
sub a,@256-31-1 ;260uS=(31+2)*8uS
jbc status,c
jmp Tcc_End
bs System_Status,Sound_Status_Flag
jmp Tcc_End
Add_Wu_Wu_Wu_Sound:
dec Sound_Time_Counter+2
mov a,Sound_Time_Counter+2
sub a,@256-66-1 ;544uS=(68+2)*8uS
jbs status,c
jmp Tcc_End
bc System_Status,Sound_Status_Flag
;------;
inc Sound_Time_Counter+3 ;聲音次數
jbs Sound_Time_Counter+3,4
jmp Tcc_End
Wu_Wu_Wu_Sound_End:
clr Sound_Time_Counter+3
clr Sound_Event_Counter
bs System_Status,Warm_Initialize
clr System_Clock+2
jmp Tcc_End
Wu_Wu_Wu_Sound_Event_Tcc_Set:
bc System_Status,Warm_Initialize
mov Sound_Time_Counter+2,@256-66 ;544uS=(68+2)*8uS
clr Sound_Time_Counter+1
clr Sound_Time_Counter+3
ret
;======;
/*
jbc System_Status,Warm_Initialize
call Wu_Wu_Wu_Sound_Event_Tcc_Set
jbc System_RF_Status,Warm_No_Sound_Flag
jmp No_Wu_Wu_Wu_Sound
;------;
jbc Warm_Port,Warm
jmp Wu_Wu_Wu_Sound_High_Status
Wu_Wu_Wu_Sound_Low_Status:
bs Warm_Port,Warm
add tcc,@256-13 ;延時110uS
jmp Tcc_End
Wu_Wu_Wu_Sound_High_Status:
bc Warm_Port,Warm
mov a,Sound_Time_Counter+2
add a,@13
add tcc,a
;------;
inc Sound_Time_Counter+1 ;聲音變化速度
mov a,Sound_Time_Counter+1
add a,@256-6
jbs status,c
jmp Tcc_End
clr Sound_Time_Counter+1
;------;
jbc System_Status,Sound_Status_Flag
jmp Add_Wu_Wu_Wu_Sound
Sub_Wu_Wu_Wu_Sound:
inc Sound_Time_Counter+2
mov a,Sound_Time_Counter+2
sub a,@256-25;31-1 ;260uS=(31+2)*8uS
jbc status,c
jmp Tcc_End
bs System_Status,Sound_Status_Flag
jmp Tcc_End
Add_Wu_Wu_Wu_Sound:
dec Sound_Time_Counter+2
mov a,Sound_Time_Counter+2
sub a,@256-66-1 ;544uS=(68+2)*8uS
jbs status,c
jmp Tcc_End
bc System_Status,Sound_Status_Flag
;------;
bs System_RF_Status,Warm_No_Sound_Flag
mov Sound_Time_Counter+1,@255
jmp Tcc_End
No_Wu_Wu_Wu_Sound:
clr tcc
djz Sound_Time_Counter+1
jmp Tcc_End
bc System_RF_Status,Warm_No_Sound_Flag
;------;
inc Sound_Time_Counter+3 ;聲音次數
mov a,Sound_Time_Counter+3
add a,@256-3
jbs status,c
jmp Tcc_End
clr Sound_Time_Counter+3
clr Sound_Event_Counter
clr System_Clock+2
bs System_Status,Warm_Initialize
jmp Tcc_End
Wu_Wu_Wu_Sound_Event_Tcc_Set:
bc System_Status,Warm_Initialize
mov Sound_Time_Counter+2,@256-66 ;544uS=(68+2)*8uS
clr Sound_Time_Counter+1
clr Sound_Time_Counter+3
ret
*/
;======;
Tcc_End:
Restore_Environment
;}
Delay_uS:
; wdtc
djz Sound_Time_Counter
jmp Delay_uS
ret
;===========================================;
Get_Code:
mov a,@16
mov User_Id+3,a
clr User_Id+2
Get_Code_1:
wdtc
bc status,c
rlc User_Id+0
rlc User_Id+1
rlc User_Id+2
jbc status,c
jmp Get_Code_2
mov a,@0x3
sub a,User_Id+2
jbs status,c
jmp Get_Code_3
Get_Code_2:
mov a,@0x3
sub User_Id+2,a
inc User_Id+0
Get_Code_3:
djz User_Id+3
jmp Get_Code_1
ret
;===========================================;
;-----------------上電初始化----------------;
;===========================================;
System_Initialize: ;系統初始化
;{
contw @Contw_Data
mov r5,@R5_Data
iow ioc5,@IOC5_Data
mov r6,@R6_Data
iow ioc6,@IOC6_Data
iow iocb,@IOCB_Data
iow iocd,@IOCD_Data
iow ioce,@0b10000000 ;開看門狗
iow iocf,@0b00000001 ;開Tcc中斷標置
;------;
mov a,@15
mov rsr,a
Initial_User_Ram: ;初始化清空變量
wdtc
inc rsr
clr iar
mov a,rsr
and a,@0b00111111
xor a,@0b00111111
jbs status,z
jmp Initial_User_Ram
clr rsr
;------;
call Userid_Table0
mov User_Id+0,a
call Userid_Table1
mov User_Id+1,a
Get_User_Code_Loop:
call Get_Code
mov a,User_Id+2
call Get_Data
mov User_Id+2,a
rrc User_Id+2
rrc Send_Buffer+0
rrc Send_Buffer+1
rrc User_Id+2
rrc Send_Buffer+0
rrc Send_Buffer+1
inc User_Id+4
mov a,User_Id+4
xor a,@0x8
jbs status,z
jmp Get_User_Code_Loop
mov a,Send_Buffer+0
mov User_Id+1,a
mov a,Send_Buffer+1
mov User_Id+0,a
;------;
clr User_Id+2
clr User_Id+3
clr User_Id+4
clr Send_Buffer+0
clr Send_Buffer+1
mov Quiver_Edit_Event,@1
;------;
bs System_Status,Warm_Initialize
call Delay_200mS
;===========================================;
; 程序名: Code_Send
; 功能: 內碼發射
;===========================================;
Code_Send:
mov User_Id+2,@30
; bs Code_Port,Code
; call Delay_6000us
; bc Code_Port,Code
; call Delay_6000us
Code_Send_Loop:
;=======1
mov a,User_Id+0 ;發送用戶碼1
mov Send_Buffer,a
call Send_Data
;=======
mov a,User_Id+1 ;發送用戶碼2
mov Send_Buffer,a
call Send_Data
;=======
bs Code_Port,Code
call Delay_500us
bc Code_Port,Code
call Delay_6000us
djz User_Id+2
jmp Code_Send_Loop
jmp Main_Loop
;=======================================;
Send_Data:
call Send_Bit ;D0
call Send_Bit ;D1
call Send_Bit ;D2
call Send_Bit ;D3
call Send_Bit ;D4
call Send_Bit ;D5
call Send_Bit ;D6
call Send_Bit ;D7
ret
;=======================================;
Send_Bit:
jbc Send_Buffer,0
call Send_Bit1
jbs Send_Buffer,0
call Send_Bit0
rrc Send_Buffer ;發送順序控制
ret
;=======================================;
Send_Bit1:
bs Code_Port,Code
call Delay_500us
call Delay_500us
call Delay_500us
bc Code_Port,Code
call Delay_500us
ret
;=======================================;
Send_Bit0:
bs Code_Port,Code
call Delay_500us
bc Code_Port,Code
call Delay_500us
call Delay_500us
call Delay_500us
ret
;===========================================;
;-----------子程序RF_Send結束---------------;
;===========================================;
;===========================================;
; 程序名: Delay
; 功能: 延時程序
;===========================================;
Delay_300mS:
mov Delay_Counter+1,@100
Delay_300ms_Loop:
call Delay_6000us
djz Delay_Counter+1
jmp Delay_300ms_Loop
ret
;===========================================;
Delay_200mS:
mov Delay_Counter+1,@66
disi
jmp Delay_300ms_Loop
;===========================================;
Delay_50mS:
mov Delay_Counter+1,@16;18
jmp Delay_300ms_Loop
;===========================================;
Delay_6000us:
mov Delay_Counter,@240
Delay_6000us_Loop:
call Delay_12_5us
djz Delay_Counter
jmp Delay_6000us_Loop
ret
;===========================================;
Delay_500us:
mov Delay_Counter,@40
Delay_500us_Loop:
call Delay_12_5us
djz Delay_Counter
jmp Delay_500us_Loop
ret
;===========================================;
Delay_12_5us:;4M/4Clock
wdtc
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
jmp $+1
nop;24
ret;26
;===========================================;
;------------子程序Delay結束----------------;
;===========================================;
;==========================================;
;==========================================;
;******************宏定義******************;
;==========================================;
imov macro dReg,@Value
mov a,@Value/256
mov dReg,a
mov a,@Value%256
mov dReg+1,a
endm
;==========================================;
imov macro dReg,sReg ;整數移動
mov dReg+1,sReg+1
mov dReg,sReg
endm
;==========================================;
iow macro Reg,@Value
mov a,@Value
iow Reg
endm
;==========================================;
iinc macro Reg ;int inc
inc Reg+1
jbc status,z
inc Reg
endm
;==========================================;
idec macro Reg ;int dec
mov Reg+1,Reg+1
jbc status,z
dec Reg
dec Reg+1
endm
;==========================================;
ineg macro Reg
com Reg+1
inc Reg+1
jbc status,z
dec Reg+0
com Reg+0
endm
;==========================================;
iadd macro dReg,sReg
mov a,sReg+1
add dReg+1,a
jbc status,c
inc dReg+0
mov a,sReg
add dReg+0,a
endm
;==========================================;
isub macro dReg,sReg
ineg dReg
iadd dReg,sReg
endm
;==========================================;
jnz macro Reg
mov Reg,Reg
jbc status,z
endm
;==========================================;
jez macro Reg
mov Reg,Reg
jbs status,z
endm
;==========================================;
ijnz macro Reg
mov a,Reg+1
or a,Reg
jbc status,z
endm
;==========================================;
je macro sReg1,sReg2 ;相等
mov a,sReg1
xor a,sReg2
jbs status,z
endm
;==========================================;
je macro Reg,@Value
mov a,@Value
xor a,Reg
jbs status,z
endm
;==========================================;
jne macro sReg1,sReg2 ;不相等
mov a,sReg1
xor a,sReg2
jbc status,z
endm
;==========================================;
jne macro sReg,@Value ;<>Const
mov a,@Value
xor a,sReg
jbc status,z
endm
;==========================================;
ije macro Reg1,Reg2
mov a,Reg2+1
xor a,Reg1+1
jbs status,z
jmp $+4
mov a,Reg2+0
xor a,Reg1+0
jbs status,z
endm
;==========================================;
ijne macro Reg1,Reg2
mov a,Reg2+1
xor a,Reg1+1
jbs status,z
jmp $+5
mov a,Reg2+0
xor a,Reg1+0
jbc status,z
endm
;==========================================;
jh macro Reg1,Reg2 ;Reg1>Reg2?
mov a,Reg2
sub a,Reg1
jbs status,c
endm
;==========================================;
jl macro Reg1,Reg2 ;Reg1<Reg2?
mov a,Reg1
sub a,Reg2
jbs status,c
endm
;==========================================;
jl macro Reg,@Value ;Reg<=@Value?
mov a,@Value
sub a,Reg
jbc status,c
endm
;==========================================;
Table macro Reg
mov a,Reg
add pc,a
endm
;==========================================;
mov macro Reg1,@Value
mov a,@Value
mov Reg1,a
endm
;==========================================;
mov macro Reg1,Reg2
if Reg1 != Reg2
mov a,Reg2
mov Reg1,a
endif
endm
;==========================================;
contw macro @Value
mov a,@Value
contw
endm
;==========================================;
sub macro Reg1,@Value
mov a,@Value
sub Reg1,a
endm
;==========================================;
sub macro Reg1,Reg2
mov a,Reg2
sub Reg1,a
endm
;==========================================;
or macro Reg1,@Value
mov a,@Value
or Reg1,a
endm
;==========================================;
or macro Reg1,Reg2
mov a,Reg2
or Reg1,a
endm
;==========================================;
and macro Reg1,@Value
mov a,@Value
and Reg1,a
endm
;==========================================;
and macro Reg1,Reg2
mov a,Reg2
and Reg1,a
endm
;==========================================;
xor macro Reg1,@Value
mov a,@Value
xor Reg1,a
endm
;==========================================;
xor macro Reg1,Reg2
mov a,Reg2
xor Reg1,a
endm
;==========================================;
add macro Reg1,Reg2
mov a,Reg2
add Reg1,a
endm
;==========================================;
add macro Reg,@Value
mov a,@Value
add Reg,a
endm
;==========================================;
END
;==========================================;
;==========================================;
;==========================================;
;==========================================;
;=================================
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -