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

📄 rem.lst

📁 10首儿歌音乐的程序源码
💻 LST
📖 第 1 页 / 共 5 页
字号:
File: REM.ASM       Holtek Cross-Assembler  Version 2.86      Page 1


   1  0000              ;****** MCU: HT48RA0A  ***  Remote 48KEY
   2  0000              ; ** OSC:455K   T1= 4/455KHz = 8.79121 uS       CARRY:38K
   3  0000              ; ** WDT:ENABLE  ; PA: NMOS OUT ;  PB: WAKE-UP INPUT ;   PC0:CARRY OUT  ;
   4  0000              
   5  0000              ; System memory map ==  #include ht48ra0.inc
   6  0000              IAR	EQU	[00H]                      ; Indirect addressing register
   7  0000              MP	EQU	[01H]                      ; Data Memory point
   8  0000              ACC	EQU	[05H]                      ; Accumulator
   9  0000              PCL	EQU	[06H]                      ; Program Counter Lower-order
  10  0000              TBLP	EQU	[07H]                  ; Table Pointer
  11  0000              TBLH	EQU	[08H]                  ; Table Higher-order byte
  12  0000              STATUS	EQU	[0AH]                  ; Micro controll status
  13  0000              PA	EQU	[012H]             		   ; PA I/O register
  14  0000              PB	EQU	[014H]             		   ; PB I/O register
  15  0000              PC	EQU	[016H]                     ; PC Output register
  16  0000              ; --- System FLAG define ---
  17  0000              STA_C	EQU	[0AH].0                ; C Flag
  18  0000              STA_AC	EQU	[0AH].1
  19  0000              STA_Z	EQU	[0AH].2                ; ZERO Flag
  20  0000              STA_OV	EQU	[0AH].3
  21  0000              STA_PDF	EQU	[0AH].4
  22  0000              STA_TO	EQU	[0AH].5
  23  0000              SPK	EQU	[012H].0
  24  0000              PA1	EQU	[012H].1
  25  0000              PA2	EQU	[012H].2
  26  0000              PA3	EQU	[012H].3
  27  0000              PA4	EQU	[012H].4
  28  0000              PA5	EQU	[012H].5
  29  0000              PA6	EQU	[012H].6
  30  0000              PA7	EQU	[012H].7
  31  0000              PB0	EQU	[014H].0
  32  0000              PB1	EQU	[014H].1
  33  0000              PB2	EQU	[014H].2
  34  0000              PB3	EQU	[014H].3
  35  0000              PB4	EQU	[014H].4
  36  0000              PB5	EQU	[014H].5
  37  0000              PB6	EQU	[014H].6
  38  0000              PB7	EQU	[014H].7
  39  0000              REM	EQU	[016H].0                   ; Carry Output Port
  40  0000              STA_RAM EQU       20H              ; HT48RA0A RAM 20H-3FH
  41  0000              NOP2    EQU     JMP  $+1           ; Long NOP Define = NOP+NOP
  42  0000                 ; --- Temp RAM ---
  43  0000              RAMA    EQU     [26H]              ; WORK Temp Register
  44  0000              RAMB    EQU     [27H]
  45  0000              RAMC    EQU     [28H]
  46  0000              RAMD    EQU     [29H]
  47  0000              SCANSTEP   EQU     [2AH]           ; Scan Key Colummn Step Number
  48  0000              PREKEY     EQU     [2BH]           ; Save Previous Key Number
  49  0000              NOWKEY     EQU     [2CH]           ; Scan Key Number
  50  0000              PBVALUE    EQU     [2DH]           ; Read on column value to PBVALUE
  51  0000              KDTIME     EQU     [2EH]           ; Key Debounce Check Times
  52  0000              NKDTIME    EQU     [2FH]           ; Key Release Confirm Times
  53  0000              PASTEP     EQU     [3EH]           ; PA Temp register
  54  0000              SendBIT    EQU     [31H].1         ; VALIDITY KEY Flag
  55  0000              ReckeyBIT  EQU     [32H].1         ; Check Column Multi_Key Flag
  56  0000              REPEATBIT  EQU     [33H].1         ; REPEAT KEY Flag
  57  0000              MultiBIT   EQU     [34H].1         ; INVALID KEY Flag
  58  0000              LSBITA     EQU     [32H].4
  59  0000              LSBITB     EQU     [33H].4
File: REM.ASM       Holtek Cross-Assembler  Version 2.86      Page 2

  60  0000                 ; --- Music  RAM ---
  61  0000              RAMR       EQU     [3AH]
  62  0000              RAMS       EQU     [3BH]
  63  0000              RAMT       EQU     [3CH] 
  64  0000              RAMLS      EQU     [3DH] 
  65  0000                 ; --- M3010 SEND RAM ---
  66  0000              REM_DATCODE    EQU    [36H]        ; M3010 6BIT DATA CODE --- KEY DATA CODE
  67  0000              REM_SYSCODE    EQU    [37H]        ; M3010 5BIT SYS  CODE --- CUSTOMER CODE
  68  0000              CONBIT_DAT     EQU    [38H]        ; 110 OR 111 SAVE CONTROL BIT FLAG
  69  0000              MUSICTIM       EQU    [39H]        ; Choose what music
  70  0000              RAMWA          EQU    [25H]
  71  0000              
  72  0000              ;;====================================================================
  73  0000              ;@========================= Main Program =============================
  74  0000              ;;====================================================================
  75  0000              MAINCODE  .SECTION    'CODE'
  76  0000                      ORG     00H
  77  0000  2800     R          JMP     MAIN
  78  0001              MAIN:
  79  0001  0001                 CLR     WDT
  80  0002  0FFE                 MOV     A,11111110B
  81  0003  0092                 MOV     PA,A              ; PA.0=0   CLR SPK         
  82  0004  1F3E                CLR     PASTEP             ; TEMP TO PA SCAN KEY
  83  0005  1F94                SET     PB                 ; PB: WAKE-UP INPUT PB=FF
  84  0006  0FFF                MOV     A,11111111B        ; PC0:  O  PULL-HIGH
  85  0007  0096                MOV     PC,A               ; REM=PC.0
  86  0008                   ;=== Clear RAM ( HT-48RA0A : 20H-3FH ) ===
  87  0008              CLEAR_RAM:
  88  0008  0F20                MOV     A,STA_RAM          ; RAM Start Address
  89  0009  0081                MOV     MP,A
  90  000A  0F20                MOV     A,032D             ; Amount of RAM 20H-3FH =32
  91  000B              CLEAR_RAM_1:
  92  000B  1F00                CLR     IAR                ; 5X30=150
  93  000C  1481                INC     MP
  94  000D  1785                SDZ     ACC                ; A-1=0?
  95  000E  2800     R          JMP     CLEAR_RAM_1        ; A<>0
  96  000F  1F2A                CLR     SCANSTEP           ; T1=455KHz /4 = 8.79 uS
  97  0010                   ;=== Polling System Event ===
  98  0010              POLLING_EVENT:                     ; Anjian is > TV hujiao             
  99  0010  0001                 CLR     WDT
 100  0011  1F94                 SET     PB                ; PB0=0 ? Hujiao ?         
 101  0012  0714                 MOV     A,PB                 
 102  0013  3805                 SNZ     ACC.0 
 103  0014  2800     R           JMP     REMCALL           ; PB0=0,Hujiao   
 104  0015               YWAKE:                            ; Anjian wake ?
 105  0015  3412             CLR     SPK                   ; STOP  SPK=PA0                   
 106  0016  3492             CLR     PA1                   ; OFFSET TV Call Vcc
 107  0017  2000     R       CALL    SCAN_KEY_MATRIX       ; SCAN KEY PROCEDURE
 108  0018  2000     R       CALL    F_DELAY               ; TIME DELAY PROCEDURE
 109  0019  2000     R       CALL    SEND_REMOTE_CODE      ; SEND CODE PROCEDURE
 110  001A  3CB4             SZ      MultiBIT              ; Check Invalid Key
 111  001B  2800     R       JMP     POLLING_EVENT         ; <>0
 112  001C  3CB1             SZ      SENDBIT               ; =0 Check Validity Key
 113  001D  2800     R       JMP     POLLING_EVENT         ; <>0 FA
 114  001E  10AC             SZ      NOWKEY                ; =0 Check NO Key Press
 115  001F  2800     R       JMP     POLLING_EVENT         ; <>0
 116  0020                SLEEP:                           ; =0
 117  0020  1F12             CLR     PA                    ; NMOS OUTPUT = Ready WakeUp Low Level,SPK=0
 118  0021  0002             HALT                          ; System Halt  PB=WAKEUP INPUT
 119  0022  2800     R       JMP     POLLING_EVENT         ; Any Key WakeUp
File: REM.ASM       Holtek Cross-Assembler  Version 2.86      Page 3

 120  0023                 
 121  0023                   ;===  Scan 64 Key Matrix (8x8) ===
 122  0023              SCAN_KEY_MATRIX:                   ; Anjian No PA7 & PB5
 123  0023                        ; = READ KEY PROCEDURE =
 124  0023  0001                CLR     WDT
 125  0024  1F2C                CLR     NOWKEY             ; THIS LUN KEYNUM=00H
 126  0025  34B2                CLR     ReckeyBIT          ; REC KEY BIT=0
 127  0026  1F2A                CLR     SCANSTEP           ; THIS LUN SCAN 8 LIE PA=1111 1110 RL8
 128  0027  34B4                CLR     MultiBIT           ; MULTI KEY BIT=0        
 129  0028  0F7F                MOV     A,01111111B        ; PA LSTEM RL8
 130  0029  00BE                MOV     PASTEP,A
 131  002A               NEXT_COLUMN:
 132  002A  183E                RLA     PASTEP             ; 1111 1110--STEP
 133  002B  00BE                MOV     PASTEP,A
 134  002C  3405                 CLR     ACC.0             ; PA0=SPK=0(ALL TIMES)
 135  002D  0092                MOV     PA,A               ; Scan Column PA PORT OUTPUT       
 136  002E  0001                CLR     WDT
 137  002F  1F94                SET     PB                 ; PB=FF SET PB0,PB1 Pull-Up
 138  0030  0714                MOV     A,PB               ; Read on column value to PBVALUE
 139  0031  3005                 SET     ACC.0             ; PB0=1 Anjian no pb0
 140  0032  00AD                MOV     PBVALUE,A          ; SAVE AS PBVALUE
 141  0033  0F01                MOV     A,001D
 142  0034  00A7                MOV     RAMB,A             ; KEY CAL LSRAM
 143  0035  0FFE                MOV     A,11111110B
 144  0036  00A6                MOV     RAMA,A             ; KEY CAL LSRAM
 145  0037  072D                MOV     A,PBVALUE          ; READ PB KEY-This column value to ACC
 146  0038  3BAD               SNZ     PBVALUE.7
 147  0039  2800     R         JMP     KEY_ROW_7
 148  003A  3B2D                SNZ     PBVALUE.6
 149  003B  2800     R          JMP     KEY_ROW_6
 150  003C  3AAD               SNZ     PBVALUE.5
 151  003D  2800     R         JMP     KEY_ROW_5
 152  003E  3A2D                SNZ     PBVALUE.4
 153  003F  2800     R          JMP     KEY_ROW_4
 154  0040  39AD               SNZ     PBVALUE.3
 155  0041  2800     R         JMP     KEY_ROW_3
 156  0042  392D                SNZ     PBVALUE.2
 157  0043  2800     R          JMP     KEY_ROW_2
 158  0044  38AD               SNZ     PBVALUE.1
 159  0045  2800     R         JMP     KEY_ROW_1
 160  0046  382D                SNZ     PBVALUE.0
 161  0047  2800     R          JMP     KEY_ROW_0
 162  0048  2800     R          NOP2                       ; =JMP $+1    2 T1
 163  0049  0001                CLR       WDT
 164  004A  2800     R          JMP     COL_WITHOUT_KEY    ; THIS LUN PB=1111 1111 NOKEY
 165  004B                    KEY_ROW_7:
 166  004B  18A6                RL      RAMA               ; RAMA TO END IS "01111111b"
 167  004C  14A7                INC     RAMB               ; KEY NUM CAL
 168  004D                    KEY_ROW_6:
 169  004D  18A6                RL      RAMA               ; RAMA TO END IS "10111111b"
 170  004E  14A7                INC     RAMB
 171  004F                    KEY_ROW_5:
 172  004F  18A6                RL      RAMA               ; RAMA TO END IS "11011111b"
 173  0050  14A7                INC     RAMB
 174  0051                    KEY_ROW_4:
 175  0051  18A6                RL      RAMA               ; RAMA TO END IS "11101111b"
 176  0052  14A7                INC     RAMB
 177  0053                    KEY_ROW_3:
 178  0053  18A6                RL      RAMA               ; RAMA TO END IS "11110111b"
 179  0054  14A7                INC     RAMB
File: REM.ASM       Holtek Cross-Assembler  Version 2.86      Page 4

 180  0055                    KEY_ROW_2:
 181  0055  18A6                RL      RAMA               ; RAMA TO END IS "11111011b"
 182  0056  14A7                INC     RAMB
 183  0057                    KEY_ROW_1:
 184  0057  18A6                RL      RAMA               ; RAMA TO END IS "11111101b"
 185  0058  14A7                INC     RAMB

⌨️ 快捷键说明

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