upside

反病毒 反詐騙 反虐犬

|
分享:
▲
▼
嗯 好多年沒寫 組語了 已經都忘的差不多了 但是這個程度 應該還可以 其實這一段 大致上 都已經註解的很清楚了 樓主大大 應該想要了解它的作用與暫存器的使用法吧
SONG PLAY ROUTINE ;音樂開關程式段
; R4:INDEX R3:LENGH PLAY: ;開始段落 CALL LOAD_VALUE ; 呼叫 LOAD_VALUE 這個定義巨集 CALL SOUND_ON ; 呼叫 SOUND_ON 這個定義巨集 $1: MOV R5,#10 ; 30 ;$1 段落 搬移 #10或30 到 R5 暫存器中 R5為10 或 30 加速算的速度 CALL DELAY ; 呼叫 DELAY 定義巨集 (本程式段 並未看到 DELAY 巨集) DJNZ R3, $1 ; R3減1不等於0跳至 $1 ; PAUSE CALL SOUND_OFF ; 呼叫 SOUND_OFF 這個定義巨集 MOV R5,#3 ;搬移 #3 到 R5 暫存器中 R5為 3 加速算的速度
CALL DELAY ; 呼叫 DELAY 定義巨集 (本程式段 並未看到 DELAY 巨集) ; CALL SOUND_ON ; 呼叫 SOUND_ON 這個定義巨集 RET ; 離開程式
;--------------------- SOUND_ON: ; SETB TR0 ; 將啟動旗標設為1 RET ; 離開程式 ;----------------------- SOUND_OFF: ; CLR TR0 ; CLR 清除 TR0 暫存器的資料 RET ; 離開程式 ;------------------------------- ; LOAD LO HI VALUE FROM TABLE ; ; R4: INDEX LOAD_VALUE: ; LOAD_VALUE MOV DPTR,#HI_LIST ; 搬移 #HI_LIST 暫存器的資料 到 DPTR MOV A,R4 ;搬移 R4 暫存器的資料到 A MOVC A,@A+DPTR ;搬移 ,@A+DPTR 程式記憶體的資料 到 A MOV HI,A ;搬移 A 暫存器的資料 到 HI
MOV DPTR,#LO_LIST ; 搬移 #HO_LIST 暫存器的資料 到 DPTR MOV A,R4 ;搬移 R4 暫存器的資料到 A MOVC A,@A+DPTR ;搬移 ,@A+DPTR 程式記憶體的資料 到 A MOV LO,A ;搬移 A 暫存器的資料 到 LO RET ; 離開 ;---------------------- ; USE TIMER MODE 0
control code : CFOR EQU 0AH ;CFOR定義為 0A 的時間常數 CBACK EQU 05H ;CBACK定義為 05 的時間常數 CLEFT EQU 06H ; CLEFT 定義為 06 的時間常數 CRIGHT EQU 09H ;CRIGHT定義為 09 的時間常數 CSTOP EQU 0 ;CSTOP 定義為 0 的時間常數
;------------------------------------- ; IR decode C0 C1 C2 C3 --> RAM ADDRESS : 30H--33H ; check C2 (32H); ;------------------------------------- CODE_K1 EQU 12H ; FORWARD POWER CODE_K2 EQU 10H ; BACK MUTE CODE_K3 EQU 15H ; LEFT TIMER CODE_K4 EQU 1CH ; RIGHT RECALL
CODE_D1 EQU 01H ; DIG1 IR REMOTER KEY DEFINE CODE_D2 EQU 02H ; DIG2 CODE_D3 EQU 03H ; DIG3 CODE_D4 EQU 04H ; DIG4 CODE_D5 EQU 05H ; DIG5 CODE_D6 EQU 06H ; DIG6 -------------------------------------------------- C0 EQU 30H ; C0 定義為 30 的時間常數 C1 EQU 31H ; C1 定義為 31 的時間常數 COM EQU 32H ; COM 定義為 32 的時間常數 C3 EQU 33H ; C3 定義為 33 的時間常數
LO EQU 34H ; LO 定義為 34 的時間常數 HI EQU 35H ; HI 定義為 35 的時間常數 TC EQU 36H ; TC 定義為 36 的時間常數
|