?? rem.lst
字號:
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 + -