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 的时间常数
|