⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rem.asm

📁 10首儿歌音乐的程序源码
💻 ASM
📖 第 1 页 / 共 3 页
字号:
        RET
 NEWK_D:                           ; KDTIME<>0 -> NO DELAY  New Key No Time Offset Delay
        CLR     KDTIME
        RET
     ; === Send Remote Code ===
SEND_REMOTE_CODE:
        CLR     WDT                ; CHECK VALIDITY KEY
        SZ      SENDBIT
        JMP     READY_SEND
        RET

; ====   M3010 PHILIPS.FORMAT (Remote 64KEY)   OSC:429KHz CARRY:36KHz
;  ** HT48RA0A 455K  T1=4/455K=8.791US 
;  ** 4P30 432K(CAR=1/12Fosc=36K 25%ZKB) 1BIT=3X2(8)X1/432K=1.778MS 
  READY_SEND:
        MOV     A,NOWKEY           ; READ KEY DATA
        MOV     TBLP,A             ; TABLE LOW 8BIT ADR
        TABRDL  REM_DATCODE        ; LAST PAGE 0300H; RL REM_DATCODE; RL REM_DATCODE               
        MOV     A,TBLH             ; UP:REM_DATCODE=6BIT DATA ,THIS IS READ 5BIT SYSTEM CODE
        RL      ACC
        RL      ACC
        RL      ACC
        MOV     REM_SYSCODE,A      ; SAVE AS SYSCODE
        ;      SZ    REM_SYSCODE.0
        ;      JMP   REMOTECAR        ; 4ge 500hz(3/4)&n(REM_DATCODE) ge 1khz(1/2)
        SNZ     RepeatBIT
        INC     CONBIT_DAT         ; CONBIT_DAT.0= 1&0 REPEAT=0(NEW KEY)             
        RL      REM_DATCODE
        RL      REM_DATCODE
     ; == Starting send M3010 Remote code ==
  SEND_M3010:                      ; REPEAT=1 OR 0     110 00000 001101 --> 111 00000 001101
        SIZA    REM_DATCODE        ; +1-> A CHECK NO KEY CODE 0FFH
        JMP     SAT_BIT1
        RET
           ; ***** 4 ge 500hz(3low1high) rem_datcode ge 1k(1/2)  total 6cycle
        ;REMOTECAR:        
        ;           MOV     A,00AH
        ;           SNZ     REM_DATCODE.6  ;  Ge 1Khz fa 4cycle 
        ;           JMP     TOGETH         ; =0 10 Cycle          
        ;           MOV     A,008D         ; 8 cycle
        ; TOGETH: 
        ;           MOV     RAMD,A                   
        ; STACAR:   CLR     WDT
        ;           SZ      RepeatBIT
        ;           JMP     CAREND
        ;           MOV     A,REM_DATCODE
        ;           MOV     RAMB,A         ; n ge 1kHz
        ;           MOV     A,004D         ; 4 ge 500hz
        ;           MOV     RAMC,A  
        ; FA500HZ:
        ;           SET     REM            ; NO Fa
        ;           MOV     A,58D          ; JISHOU 1.5MS  HIGH                                   
        ; YS150MS:                         
        ;           SDZ     ACC
        ;           JMP     YS150MS        ; [3*(A-1)+2+2] * 4/455 =1500  fact=1485.7(56D)  
        ;           CLR     WDT                   
        ;           CLR     REM            ; YES FA  WDT 2048X8.79US=18MS
        ;           MOV     A,16D                                              
        ; YS500MS:                         
        ;           SDZ     ACC
        ;           JMP     YS500MS        ; [3*(A-1)+2+5] * 4/455 =500  fact=509.9+8.79(18D)
        ;           CLR     WDT                                                
        ;           SDZ     RAMC
        ;           JMP     FA500HZ            
        ;  FA1KHZ:
        ;           SET     REM            ; NO FA                 
        ;           MOV     A,20D     
        ; YS500A:                         
        ;           SDZ     ACC
        ;           JMP     YS500A         ; [3*(A-1)+2+1] * 4/455 =500  fact=501.9(19D)
        ;           CLR     WDT 
        ;           CLR     REM            ; YES FA                 
        ;           MOV     A,16D     
        ; YS500B:                         
        ;           SDZ     ACC
        ;           JMP     YS500B         ; [3*(A-1)+2+5] * 4/455 =500  fact=509.9(16D)
        ;           CLR     WDT
        ;           SDZ     RAMB           ; n ge 1kHz
        ;           JMP     FA1KHZ                                                                  
        ;           SDZ     RAMD
        ;           JMP     STACAR         ; 10/8 CYCLES  
        ; CAREND:
        ;           SET     REM            ; END CLOSE REM 
        ;           RET
        ; **** 4P30 SA3010 & PT2210 CODE FA 
 SAT_BIT1:                         ; START BITE 11B
        SET     REM
    SAT_BIT1_PRO:                  ; 1.778/2=888us->101x4/455=888us cycle "LOW"
        MOV     A,033D             ; [(3*32)+2+3]=101
    SAT_BIT1P1:
        SDZ     ACC
        JMP     SAT_BIT1P1
        CLR     WDT        
        NOP
        CLR     REM                ; 888us->102 cycle "HIGH"
        MOV     A,033D             ; [(3*32)+2+3]=101
    SAT_BIT1P2:
        SDZ     ACC
        JMP     SAT_BIT1P2
        CLR     WDT
        NOP
 SAT_BIT2:                         ; START BITE 11B
        SET     REM
    SAT_BIT2_PRO:                  ; 888uS->102 cycle "LOW"
        MOV     A,033D             ; [(3*32)+2+3]=101
    SAT_BIT2P1:
        SDZ     ACC
        JMP     SAT_BIT2P1
        CLR     WDT        
        NOP
        CLR     REM                ; 888uS->102 cycle "HIGH"
        MOV     A,032D             ; [(3*31)+2+6]=101
    SAT_BIT2P2:
        SDZ     ACC
        JMP     SAT_BIT2P2
        CLR     WDT
        NOP
    SEND_CRT:                      ; SEND CONTROL BIT  110 OR 111
        SZ      CONBIT_DAT.0
        JMP     CRT_BIT0_PRO
        SET     REM
        JMP     CRT_BIT1_PRO
    CRT_BIT0_PRO:
        CLR     REM
    CRT_BIT1_PRO:                  ; 888uS->102 cycle "LOW"
        MOV     A,033D             ; [(3*31)+2+6]=101
    CRT_BIT1P1:
        SDZ     ACC
        JMP     CRT_BIT1P1
        CLR     WDT
        NOP
        CPL     PC                 ; /PC0
        MOV     A,031D             ; 888uS->102 cycle   "LOW"[(3*30)+2+8]=101
    CRT_BIT1P2:
        SDZ     ACC
        JMP     CRT_BIT1P2
        CLR     WDT
     ; == Send 5BIT SYSTEM Code ==
        MOV     A,005D
        MOV     RAMD,A             ; SAVE AS LSRAM
  SYS_CODE_PRO:
        RL      REM_SYSCODE
        SZ      REM_SYSCODE.0      ; MSB -->  LSB
        JMP     SYS_CP1
        CLR     REM
        JMP     SYS_CP2
   SYS_CP1:
        SET     REM
   SYS_CP2:                        ; 888uS->102 cycle "LOW"
        MOV     A,32D              ; [(3*32)+2+3]=101
   SYS_BIT1P1:
        SDZ     ACC
        JMP     SYS_BIT1P1        
        NOP
        CLR     WDT                
        CPL     PC                 ; 888uS->102 cycle "LOW"
        MOV     A,29D              ; [(3*28)+2+15]=101
   SYS_BIT1P2:
        SDZ     ACC
        JMP     SYS_BIT1P2
        CLR     WDT
        NOP
        SDZ     RAMD
        JMP     SYS_DELAY
        JMP     SEND_CMD
   SYS_DELAY:
        NOP2                       ; NOP+NOP    JMP $+1
        JMP     SYS_CODE_PRO
   ; == Send COMMAND Code ==
  SEND_CMD:
        MOV     A,006D
        MOV     RAMD,A
        CLR     WDT
  COM_CODE_PRO:
        RL      REM_DATCODE
        SZ      REM_DATCODE.0
        JMP     COM_CP1
        CLR     REM
        JMP     COM_CP2
  COM_CP1:
        SET     REM
  COM_CP2:                         ; 895uS->102 cycle "LOW"
        MOV     A,32D              ; [(3*32)+2+3]=101
 COM_BIT1P1:
        SDZ     ACC
        JMP     COM_BIT1P1
        CLR     WDT
        NOP
        CPL     PC                 ; 895uS->102 cycle "LOW"
        MOV     A,30D              ; [(3*29)+2+12]=101
 COM_BIT1P2:
        SDZ     ACC
        JMP     COM_BIT1P2
        CLR     WDT
        NOP2                       ; NOP+NOP JMP $+1
        SDZ     RAMD
        JMP     COM_CODE_PRO
        SET     REM                ; END CLOSE REM
    ; == Repeat Frame Delay Time Process TOTAL64-2-1-5-6= 50(X1.7777)=88.8888MS
        MOV     A,016D             ; Repetition time=113.77777ms (12288 cycle)
        MOV     RAMD,A             ; Scan Key = 2471 cycle=21.72MS ; Send Repeat Code = 2872 cycle
 REP_DELAY_02:                     ; 12286-2471-2872=6945
        MOV     A,107D             ; [(4*107)+5]*16=6928
        MOV     ACC,A
   REP_DELAY_03:               
        CLR     WDT
        SDZ     ACC
        JMP     REP_DELAY_03
        CLR     WDT
        SDZ     RAMD
        JMP     REP_DELAY_02
        MOV     A,130D              ; origin: 004d
        MOV     ACC,A               ; 129x4+3=15
   REP_DELAY_04:
        CLR     WDT
        SDZ     ACC                 ; [m]
        JMP     REP_DELAY_04
        CLR     WDT
   CODE31_END:
        RET
 ; ***** Up is rem ok,Down is Tv Call  rem ****

 


 ;  =====   ===  TV  CALL  REMOTE   ===      ======    
 
REMCALL:                           ; IF NO,TO Anjian check ,ex-pb1=0 not wake
         CLR     RAMR              ; Jishu
         MOV     A,PB
         MOV     RAMLS,A           ; Ls Save
         MOV     A,030D
         MOV     RAMS,A            ; Ys Ram 3MS/8.79US=341.25
 YS3MS:                            ; 3ms Have 2-7 changes
         MOV     A,PB
         XOR     A,RAMLS           ; Yihuo last time -> A
         SZ      ACC.0             ; = Is 0 ; <> Is 1  
         JMP     BUTONG
         NOP2                      ; 12X(?-1)+11+10 = 342 --> Shiji=3.244MS
         NOP2
         CLR     WDT               ; WDT=2048X8.79US=18MS       
  OVERY:     
         SDZ     RAMS              ; = XIANGTONG [m]
         JMP     YS3MS
  CALT:                            ; Lilun=3-6 changes Fast judge
         MOV     A,RAMR
         SUB     A,001D
         SZ      STA_C             ; C-FLAG=0 A<2 
         JMP     DAYD3             ; C=1 A>=2
         JMP     YWAKE
 BUTONG: 
         INC     RAMR              ; Jishu+1
         CPL     RAMLS             ; /RAMLS.5=PB.5(This time)
         JMP     OVERY
 DAYD3:                            ; >=2 ok!    <=6?
         MOV     A,RAMR
         SUB     A,010D
         SZ      STA_C             ; C=0 A<8
         JMP     YWAKE             ; C=1 A>=8
   ; === Fast judge ok,down is 37MS(2T=36MS) 57+/-4= 53---61   
         SET     PA1               ; Tv Call Vcc Always
         CLR     WDT
         CLR     RAMR              ; Jishu
         MOV     A,PB
         MOV     RAMLS,A           ; Ls Save
         MOV     A,247D
         MOV     RAMS,A            ; Ys Ram 37MS/8.79US=4209
 YS37MS:                           ; 37ms Have 53-61 changes
         MOV     A,PB
         XOR     A,RAMLS           ; Yihuo last time -> A
         SZ      ACC.0             ; = Is 0 ; <> Is 1  
         JMP     BUTONGA
         NOP2                      ; 17X(?-1)+11+10 = 4209 --> Shiji=36.944MS
         NOP2
         NOP2
         NOP2
         NOP
         CLR     WDT               ; WDT=2048X8.79US=18MS       
 OVERYA:     
         SDZ     RAMS              ; = XIANGTONG [m]
         JMP     YS37MS
  CALTA:                           ; Lilun=3-6 changes Fast judge
         MOV     A,RAMR
         SUB     A,040D
         SZ      STA_C             ; C-FLAG=0 A<51 
         JMP     DAYD53            ; C=1 A>=51
         JMP     YWAKE
 BUTONGA: 
         NOP2
         NOP2
         CLR     WDT
         INC     RAMR              ; Jishu+1
         CPL     RAMLS             ; /RAMLS.5=PB.5(This time)
         JMP     OVERYA
 DAYD53:                           ; >=51 ok!    <=63?
         MOV     A,RAMR
         SUB     A,070D
         SZ      STA_C             ; C=0 A<63
         JMP     YWAKE             ; C=1 A>=63 
    ; *** JieMa OK! Down is Music ***       
  STASONG:
         CLR     WDT
         MOV     A,MUSICTIM        ; Which music
          SUB     A,002H            ; MUSIC NUM=2
         SZ      STA_C             ; C-FLAG=0 A<2H
         CLR     MUSICTIM          ; C=1 A>=001H,EXIT TO 0 MUSIC
          MOV    A,0F0H            ; OFSET IS at 02F0H
          ADD    A,MUSICTIM           
         MOV     TBLP,A            ; TABLE LOW 8BIT ADR THIS PAGE = 02XXH 
         TABRDC  RAMR              ; RAMS=LOW   DAT8 == LOW ADR  OFFSET
         MOV     A,TBLH
         MOV     RAMWA,A           ; ZANCUN

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -