?? function.asm.bak
字號(hào):
;**************************************************************************
;F: File Name: function.asm.
;F: Build Name: 2006/11/6.
;F:
;F:
;**************************************************************************
;*****************************************************************
;F: Function Name: F_ClrAllRAM.
;F:
;F:
;F:
;F:
;******************************************************************
F_ClrAllRAM:
lds R_WrkReg1,0;
mvl R_WrkReg1;
mvh R_WrkReg1;
mvu R_WrkReg1;
L_LoopClr:
lds R_WrkReg1,0;
sta# @HL;
cphl 0ffh;
jmp L_LoopClr;
rts;
;******************************************************************
;F: Function Name: F_InitalPort.
;F:
;F:
;F:
;F:
;F:
;*******************************************************************
F_InitalPort:
lds R_WrkReg1,0;
opa R_WrkReg1;
spa 0;
lds R_WrkReg1,0;
opb R_WrkReg1;
spb 1000b;
opc R_WrkReg1;
spc 11000b;
opd R_WrkReg1;
spd 10000b;
tmsx 001111111b; 15.625ms interrupt.
sf 80h; Enable the re-load function.
rts;
;***********************************************************************
;F: File Name: F_InitContrlPin.
;F:
;F:
;F:
;F:
;***********************************************************************
F_InitContrlPin:
lds R_WrkReg1,0001b;
lcp 1,R_WrkReg1;
lcp 2,R_WrkReg1;
lcp 3,R_WrkReg1;
lcp 4,R_WrkReg1;
lcp 5,R_WrkReg1;
lcp 6,R_WrkReg1;
lcp 7,R_WrkReg1;
lcp 8,R_WrkReg1;
lcp 9,R_WrkReg1;
lcp 10,R_WrkReg1;
lcp 11,R_WrkReg1;
lcp 12,R_WrkReg1;
lcp 13,R_WrkReg1;
lcp 14,R_WrkReg1;
lcp 15,R_WrkReg1;
lcp 16,R_WrkReg1;
lds R_WrkReg1,0;
lcp 17,R_WrkReg1;
rts;
;*********************************************************************
;F: Function Name: F_ScanKey.
;F:
;F:
;F:
;F:
;*********************************************************************
F_ScanKey:
subi R_KeyStep,D_DelStep;
jz L_DelStepPro;
subi R_KeyStep,D_WaitStep;
jz L_WaitStepPro;
subi R_KeyStep,D_RelaseStep;
jz L_RelaseStepPro;
L_ChkStepPro:
ipc R_IntWrk;
jz L_ScanKeyRet;
lds R_KeyStep,D_DelStep;
jmp L_ScanKeyRet;
;=============================================
;=============================================
L_DelStepPro:
lds R_KeyStep,D_WaitStep;
ipc R_IntWrk;
jb0 L_K1Is;
jb1 L_K2Is;
jb2 L_K3Is;
jmp L_ErrKey;
L_K1Is:
lds R_KeyVal,1;
jmp L_ScanKeyRet;
L_K2Is:
lds R_KeyVal,2;
jmp L_ScanKeyRet;
L_K3Is:
lds R_KeyVal,4;
jmp L_ScanKeyRet;
;=============================================
;=============================================
L_WaitStepPro:
ipc R_IntWrk;
jnz L_ScanKeyRet;
lds R_KeyStep,D_RelaseStep;
jmp L_ScanKeyRet;
;=============================================
;=============================================
L_RelaseStepPro:
ipc R_IntWrk;
jz L_ErrKey;
lds R_KeyStep,D_WaitStep;
jmp L_ScanKeyRet;
L_ErrKey:
lds R_KeyStep,0;
L_ScanKeyRet:
rts;
;*****************************************************************
;F: Function Name: F_ProKeyVal.
;F:
;F:
;F:
;F:
;******************************************************************
F_ProKeyVal:
subi R_KeyVal,D_SelKey;
jz L_ProSelKey;
subi R_KeyVal,D_RecorderKey;
jz L_ProRecordKey;
subi R_KeyVal,D_PlayKey;
jz L_ProPlayKey;
jmp L_ProKeyValRet;
;=========================================
;=========================================
L_ProSelKey:
lds R_CountTimeLow,0;
lds R_CountTimeHigh,0;
call F_StopAll;
lds R_WrkReg1,3;
sub R_CurrentMusic;
jc L_ResetFirtMusic;
inc* R_CurrentMusic;
jmp L_TotalLighLedSel;
L_ResetFirtMusic:
lds R_CurrentMusic,0;
L_TotalLighLedSel:
call F_CloseLED1;
call F_LighLEDSel;
jmp L_ProKeyValRet;
;=========================================
;=========================================
L_ProRecordKey:
lds R_CountTimeLow,0;
lds R_CountTimeHigh,0;
lda R_Flags1;
jb1 L_CloseRecord;
L_OpenRecord:
call F_OpenVoicePW;
ori* R_Flags1,B_Recording;
andi* R_Flags1,1011b;
call F_CloseSelPin;
call F_RecordStart;
call F_LighLEDSel;
lds R_DelChk,15;
jmp L_ProKeyValRet;
;=================================
L_CloseRecord:
andi* R_Flags1,1001b;
call F_StopAll;
call F_CloseLED1;
call F_CloseVoicePW;
jmp L_ProKeyValRet;
;=========================================
;=========================================
L_ProPlayKey:
lds R_CountTimeLow,0;
lds R_CountTimeHigh,0;
lda R_Flags1;
jb2 L_ClosePlay;
L_OpenPlay:
call F_OpenVoicePW;
andi* R_Flags1,1101b;
call F_CloseSelPin;
call F_PlayStart;
call F_CloseSelPin;
call F_LighLEDSel;
ori* R_Flags1,B_Playing;
lds R_DelChk,15;
jmp L_ProKeyValRet;
;=================================
L_ClosePlay:
andi* R_Flags1,1001b;
call F_StopAll;
call F_CloseLED1;
call F_CloseVoicePW;
L_ProKeyValRet:
lds R_KeyVal,0;
rts;
;****************************************************************
;F: Function Name: F_RecordStart.
;F:
;F:
;F:
;F:
;****************************************************************
F_RecordStart:
lds R_WrkReg1,0;
lcp R_REnBuf,R_WrkReg1;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_WrkReg1,0;
lcp R_CEnBuf,R_WrkReg1;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
call F_StrobeSel;
lds R_WrkReg1,0001;
lcp R_PlayLEDBuf,R_WrkReg1;
lds R_WrkReg1,0;
lcp R_RecLEDBuf,R_WrkReg1;
L_StaRedRet:
rts;
;****************************************************************
;F: Function Name: F_PlayStart.
;F:
;F:
;F:
;F:
;****************************************************************
F_PlayStart:
lds R_WrkReg1,D_REn;
lcp R_REnBuf,R_WrkReg1;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_WrkReg1,0;
lcp R_CEnBuf,R_WrkReg1;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
call F_StrobeSel;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_WrkReg1,0;
lcp R_PlayLEDBuf,R_WrkReg1;
lds R_WrkReg1,D_RecorderLED;
lcp R_RecLEDBuf,R_WrkReg1;
L_PlayStaRet:
rts;
;*****************************************************************
;F: Function Name: F_StrobeSel.
;F:
;F:
;F:
;*****************************************************************
F_StrobeSel:
lds R_WrkReg1,0001B;
lcp R_M1Buf,R_WrkReg1;
lcp R_M2Buf,R_WrkReg1;
lcp R_M3Buf,R_WrkReg1;
lcp R_M4Buf,R_WrkReg1;
subi R_CurrentMusic,0;
jz L_SelSeg1;
subi R_CurrentMusic,1;
jz L_SelSeg2;
subi R_CurrentMusic,2;
jz L_SelSeg3;
L_SelSeg4:
lds R_CurrentMusic,3;
lds R_WrkReg1,0;
lcp R_M4Buf,R_WrkReg1;
jmp L_StrobeRet;
;=====================================
L_SelSeg3:
lds R_WrkReg1,0;
lcp R_M3Buf,R_WrkReg1;
jmp L_StrobeRet;
;=====================================
L_SelSeg2:
lds R_WrkReg1,0;
lcp R_M2Buf,R_WrkReg1;
jmp L_StrobeRet;
;=====================================
L_SelSeg1:
lds R_WrkReg1,0;
lcp R_M1Buf,R_WrkReg1;
L_StrobeRet:
rts;
;*****************************************************************
;F: Function Name: F_ChkSNDStatus.
;F:
;F:
;F:
;*****************************************************************
F_ChkSNDStatus:
lda R_DelChk;
jz L_DelLaterChk;
dec* R_DelChk;
jmp L_ChkStatusRet;
L_DelLaterChk:
lda R_Flags1;
jb1 L_ResetSleepTime;
jb2 L_ResetSleepTime;
jmp L_ChkStatusRet;
L_ResetSleepTime:
lds R_KeyWakeDel,D_KeyWakeDel;
ipa R_WrkReg1;
jb3 L_ChkCountHigh;
jmp L_ClrLowCount;
L_ChkCountHigh:
inc* R_CountTimeLow;
jnz L_CmpLowOvr;
inc* R_CountTimeHigh;
L_CmpLowOvr:
lds R_IntWrk,80%16;
sub R_CountTimeLow;
lds R_IntWrk,80/16;
sbc R_CountTimeHigh;
jc L_RandomStop;
jmp L_ChkStatusRet;
L_ClrLowCount:
lds R_CountTimeLow,0;
lds R_CountTimeHigh,0;
jmp L_ChkStatusRet;
L_RandomStop:
call F_StopAll;
call F_CloseLED1;
call F_CloseVoicePW;
L_ChkStatusRet:
rts;
;*****************************************************************
;F: Function Name: F_LighLEDSel.
;F:
;F:
;F:
;F:
;*****************************************************************
F_LighLEDSel:
call F_CloseLED;
subi R_CurrentMusic,0;
jz L_LighLED1;
subi R_CurrentMusic,1;
jz L_LighLED2;
subi R_CurrentMusic,2;
jz L_LighLED3;
L_LighLED4:
lds R_CurrentMusic,3;
lds R_WrkReg1,0;
lcp R_LED4Buf,R_WrkReg1;
jmp L_LighLEDRet;
;=====================================
L_LighLED3:
lds R_WrkReg1,0;
lcp R_LED3Buf,R_WrkReg1;
jmp L_LighLEDRet;
;=====================================
L_LighLED2:
lds R_WrkReg1,0;
lcp R_LED2Buf,R_WrkReg1;
jmp L_LighLEDRet;
;=====================================
L_LighLED1:
lds R_WrkReg1,0;
lcp R_LED1Buf,R_WrkReg1;
L_LighLEDRet:
rts;
;************************************************************
;F: Function Name: F_CloseLED.
;F:
;F:
;F:
;F:
;************************************************************
F_CloseLED1:
lds R_WrkReg1,D_RecorderLED;
lcp R_PlayLEDBuf,R_WrkReg1;
lcp R_RecLEDBuf,R_WrkReg1;
F_CloseLED:
lds R_WrkReg1,0001b;
lcp R_LED1Buf,R_WrkReg1;
lcp R_LED2Buf,R_WrkReg1;
lcp R_LED3Buf,R_WrkReg1;
lcp R_LED4Buf,R_WrkReg1;
rts;
;************************************************************
;F: Function Name: F_StopAll.
;F:
;F:
;F:
;F:
;F:
;*************************************************************
F_StopAll:
andi* R_Flags1,1001b;
lds R_WrkReg1,D_CEn;
lcp R_CEnBuf,R_WrkReg1;
lcp R_REnBuf,R_WrkReg1;
F_CloseSelPin:
lds R_WrkReg1,0001B;
lcp R_M1Buf,R_WrkReg1;
lcp R_M2Buf,R_WrkReg1;
lcp R_M3Buf,R_WrkReg1;
lcp R_M4Buf,R_WrkReg1;
rts;
;*************************************************************
;F: Function Name: F_ChkRFCMD.
;F:
;F:
;F:
;F:
;*************************************************************
F_ChkRFCMD:
lda R_Flags2;
jb0 L_ProRFCMD;
jmp L_ChkRFCMDRet;
L_ProRFCMD:
andi* R_Flags2,1110b;
lda R_RecCommandHigh;
jnz L_ChkRFCMDRet;
subi R_RecCommandLow,D_K1Command;
jz L_ProRFK1;
subi R_RecCommandLow,D_K2Command;
jz L_ProRFK2;
subi R_RecCommandLow,D_K3Command;
jz L_ProRFK3;
subi R_RecCommandLow,D_K4Command;
jnz L_ChkRFCMDRet;
L_ProRFK4:
lds R_CurrentMusic,3;
jmp L_TotalRFPlay;
;=============================================
;=============================================
L_ProRFK3:
lds R_CurrentMusic,2;
jmp L_TotalRFPlay;
;=============================================
;=============================================
L_ProRFK2:
lds R_CurrentMusic,1;
jmp L_TotalRFPlay;
;=============================================
;=============================================
L_ProRFK1:
lds R_CurrentMusic,0;
L_TotalRFPlay:
jmp L_ProPlayKey;
L_ChkRFCMDRet:
rts;
;*********************************************************
;F; Function Name: F_CloseVoicePW.
;F:
;F:
;F:
;F:
;*********************************************************
F_CloseVoicePW:
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_Delay,15;
call F_DelxxUS;
lds R_WrkReg1,0;
lcp R_VoicePWBuf,R_WrkReg1;
rts;
;**********************************************************
;F: Function Name: F_OpenVoicePW.
;F:
;F:
;F:
;F:
;**********************************************************
F_OpenVoicePW:
lds R_WrkReg1,1;
lcp R_VoicePWBuf,R_WrkReg1;
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -