?? password clock2.lst
字號:
文件:PASSWORD CLOCK2.ASM 盛群編譯器版本 2.86 頁次1
1 0000
2 0000 ;************************************************************
3 0000 ;控制口的結構:
4 0000 ; PB1 -- SCL
5 0000 ; PB0 -- SDA
6 0000 ;;4 scan line for output PA3~PA6
7 0000 ;;3 data line for input PB2~PB4
8 0000 ;;key matrix=3x4 12keys
9 0000 ;;PB5 is for "#" input
10 0000 ;*************************************************************
11 0000
12 0000 # include ht48ra0-2.inc
13 0000
14 0000 ;----------------------------
15 0000 ;equ定義區間
16 0000 scl equ pb.1 ;時鐘信號引腳定義
17 0000 sda equ pb.0 ;串行數據引腳定義
18 0000 read_out equ [30h] ;寫暫存器
19 0000 write_in equ [31h] ;讀暫存器
20 0000 word_address equ [32h]
21 0000 data_8 equ [33h]
22 0000 ;---------------------------
23 0000
24 0000 ;---------------------------
25 0000 ;宏定義
26 0000 ;延遲宏,延遲100微秒
27 0000 d_1 macro
28 0000 local label
29 0000 mov a,64h
30 0000 mov delay,a
31 0000 label:
32 0000 sdz delay
33 0000 jmp label
34 0000 endm
35 0000 ;*************************************************************
36 0000 SAMPLE .SECTION 'DATA'
37 0000
38 0000 ;; --- Temp RAM ---
39 0000 00 a_SR10 DB ? ;;WORK Temp Register
40 0001 00 a_SR11 DB ? ;;
41 0002 00 a_SR12 DB ? ;;
42 0003 00 a_SR13 DB ? ;;
43 0004 00 temp_num DB ?
44 0005
45 0005 ;;------CODE RAM---------
46 0005
47 0005 0008[ array_data db 8 dup (?)
00
]
48 000D
49 000D ;;--------- Program RAM --------
50 000D 00 COLUMMN DB ? ;;Scan Key Colummn Step Number
51 000E 00 KEY_CODE0 DB ? ;;Save Previous Key Number
52 000F 00 KEY_CODE DB ? ;;Scan Key Number
53 0010 00 COL_VALUE DB ? ;;Read on column value to a_COL_VALUE
54 0011 00 KD_TEMP DB ? ;;Key Debounce Check Times
55 0012 00 NKD_TEMP DB ? ;;Key Release Confirm Times
文件:PASSWORD CLOCK2.ASM 盛群編譯器版本 2.86 頁次2
56 0013 00 KEY_DATA DB ? ;;PA temp register
57 0014 00 KEY_DATA1 DB ?
58 0015 00 delay db ?
59 0016 00 delay0 db ?
60 0017 00 delay1 db ?
61 0018 00 t_count db ?
62 0019 00 t_count1 db ?
63 001A 00 wrrite_in db ?
64 001B 00 code_num db ?
65 001C ;;--- User FLAG define ---
66 001C 00 fg_SendActive DBIT ;;VALIDITY KEY Flag
67 001C fg_PressRec DBIT ;;Check Column Multi_Key Flag
68 001C fg_REPEAT DBIT ;;REPEAT KEY Flag
69 001C fg_Multi_Key DBIT ;;INVALID KEY Flag
70 001C release_flg DBIT
71 001C flg_chang_key DBIT
72 001C manage_code_end DBIT
73 001C red_key_1 DBIT
74 001D ;*************************************************************
75 001D
76 0000 code .section at 0 'code'
77 0000
78 0000
79 0000 org 00h
80 0000 START:
81 0000 1F92 SET PA
82 0001 ;SET PB
83 0001 3492 CLR PA.1
84 0002 3512 CLR PA.2
85 0003
86 0003 0F20 MOV a, 20H
87 0004 0081 MOV MP0, a
88 0005 0F50 mov a, 50H
89 0006 CLR_RAM:
90 0006 1F00 CLR R0
91 0007 1481 INC MP0
92 0008 1785 SDZ ACC
93 0009 2806 JMP CLR_RAM
94 000A
95 000A 0F70 mov a,070h
96 000B 0080 R mov t_count,a
97 000C 0F50 mov a,050h
98 000D 0080 R mov t_count1,a
99 000E
100 000E ini_clock:
101 000E 0FF0 MOV a, offset personal_clock
102 000F 0087 mov tblp,a
103 0010 0F00 mov a,00h ;寫入14H為要操作的eeprom的地址
104 0011 00B2 mov word_address,a
105 0012 ini_personal_clock:
106 0012 1DB1 tabrdl write_in
107 0013 2132 call ht24_write
108 0014 1487 inc TBLP
109 0015 1480 R inc code_num
110 0016 14B2 inc word_address
111 0017 0FF8 mov a,offset personal_clock+8
112 0018 0407 xor a,TBLP
113 0019 1085 sz acc
114 001A 2812 jmp ini_personal_clock
115 001B
文件:PASSWORD CLOCK2.ASM 盛群編譯器版本 2.86 頁次3
116 001B
117 001B 0FE0 MOV a, offset manage_clock
118 001C 0087 mov tblp,a
119 001D 0F10 mov a,010h ;寫入10H為要操作的eeprom的地址
120 001E 00B2 mov word_address,a
121 001F ini_manage_clock:
122 001F 1DB1 tabrdl write_in
123 0020 2132 call ht24_write
124 0021 1487 inc TBLP
125 0022 14B2 inc word_address
126 0023 0FE8 mov a,offset manage_clock+8
127 0024 0407 xor a,TBLP
128 0025 1085 sz acc
129 0026 281F jmp ini_manage_clock
130 0027
131 0027 0F00 R mov a, offset array_data
132 0028 0081 mov mp0, a
133 0029
134 0029 ;@*********** Polling System Event ***********
135 0029 MAIN_PROC:
136 0029 205D CALL SCAN_KEY_PROC ;SCAN KEY PROCEDURE
137 002A ;CALL F_DELAY ;TIME DELAY PROCEDURE
138 002A 3C00 R SZ fg_Multi_Key ;Check Invalid Key
139 002B 2829 JMP MAIN_PROC ;
140 002C
141 002C 0F0B mov a,0bh ;* key
142 002D 0400 R xor a,key_code
143 002E 1085 sz acc
144 002F 2832 jmp $+3
145 0030 3000 R set release_flg
146 0031 2829 jmp main_proc
147 0032
148 0032 0F0C mov a,0ch ;red key
149 0033 0400 R xor a,key_code
150 0034 1085 sz acc
151 0035 2838 jmp $+3
152 0036 203B call judge_red_key
153 0037 2829 jmp main_proc
154 0038
155 0038 1080 R SZ KEY_CODE ;Check NO Key Press
156 0039 2845 jmp judge
157 003A 2852 jmp sleep
158 003B
159 003B judge_red_key:
160 003B 3C00 R sz red_key_1
161 003C 283F jmp $+3
162 003D 3000 R set flg_chang_key
163 003E 2841 jmp $+3
164 003F 3400 R clr flg_chang_key
165 0040 2843 jmp $+3
166 0041 3000 R set red_key_1
167 0042 2844 jmp $+2
168 0043 3400 R clr red_key_1
169 0044 0003 ret
170 0045 judge:
171 0045 0F70 mov a,070h
172 0046 0080 R mov t_count,a
173 0047 0F50 mov a,050h
174 0048 0080 R mov t_count1,a
175 0049
文件:PASSWORD CLOCK2.ASM 盛群編譯器版本 2.86 頁次4
176 0049 3C00 R sz fg_repeat
177 004A 2829 jmp MAIN_PROC
178 004B 3C00 R sz release_flg
179 004C 2931 jmp release_proc
180 004D 3C00 R sz flg_chang_key
181 004E 28FF jmp manage_code
182 004F 3C00 R sz manage_code_end
183 0050 291B jmp chang_manage_proc
184 0051 28CC JMP personal_code
185 0052 ;
186 0052 SLEEP:
187 0052 1F12 clr PA ;Ready WakeUp Low Level
188 0053 1F00 R clr KEY_DATA
189 0054
190 0054 1780 R sdz t_count1 ;\
191 0055 2829 JMP MAIN_PROC ; \
192 0056 1780 R sdz t_count ; /if no key code wait 1s
193 0057 2854 JMP $-3 ;/
194 0058
195 0058 ; mov A,0
196 0058 ; mov PA,A
197 0058
198 0058 3E94 sz PB.5
199 0059 0002 halt ;System Halt
200 005A 0F00 mov a,0
201 005B 0F00 R mov a, offset array_data
202 005C
203 005C 2829 JMP MAIN_PROC ;Any Key WakeUp
204 005D ;@************* SUBROUTINE[xx]: Scan 12 Key Matrix (3x4) ************
205 005D
206 005D SCAN_KEY_PROC:
207 005D ;;--- READ KEY PROCEDURE ---
208 005D ;;Initiate Process
209 005D 1F00 R clr KEY_CODE ;
210 005E 3400 R clr fg_PressRec ;
211 005F 1F00 R clr COLUMMN ;
212 0060 3400 R clr fg_Multi_Key ;
213 0061
214 0061 0FF7 mov a,0f7h
215 0062 0080 R mov key_data1,a
216 0063 0F06 mov a,06h
217 0064 NEXT_COLUMN:
218 0064 0400 R xor a,key_data1
219 0065 0080 R mov key_data,a
220 0066 1880 R rl key_data1
221 0067
222 0067 0092 mov PA,A ;Scan Column PA PORT OUTPUT
223 0068 0080 R mov KEY_DATA,A ;
224 0069 0000 NOP ;
225 006A ;;--- READ PB PORT ---
226 006A ;mov a,0e3h
227 006A ;AND a,PB
228 006A ;MOV KEY_DATA1,A
229 006A ;MOV A,01CH
230 006A ;XORM A,KEY_DATA1
231 006A ;SET PB ;;SET PB0,PB1 Pull-Up
232 006A 0714 MOV A,PB ;;Read on column value to a_COL_VALUE
233 006B 0080 R mov COL_VALUE,A ;;
234 006C
235 006C 0F01 mov A,1
文件:PASSWORD CLOCK2.ASM 盛群編譯器版本 2.86 頁次5
236 006D 0080 R mov a_SR11,A
237 006E 0FFB mov A,11111011b ;;
238 006F 0080 R mov a_SR10,A
239 0070 ; mov A,COL_VALUE ;; This column value to ACC
240 0070 ; SNZ COL_VALUE.7
241 0070 ; JMP KEY_ROW_7
242 0070 ; SNZ COL_VALUE.6
243 0070 ; JMP KEY_ROW_6
244 0070 ; SNZ COL_VALUE.5
245 0070 ; JMP KEY_ROW_5
246 0070 3800 R SNZ COL_VALUE.4
247 0071 2879 JMP KEY_ROW_4
248 0072 3800 R SNZ COL_VALUE.3
249 0073 287B JMP KEY_ROW_3
250 0074 3800 R SNZ COL_VALUE.2
251 0075 287D JMP KEY_ROW_2
252 0076 ; SNZ a_COL_VALUE.1
253 0076 ; JMP KEY_ROW_1
254 0076 ; SNZ a_COL_VALUE.0
255 0076 ; JMP KEY_ROW_0
256 0076 2877 jmp $+1
257 0077 0000 nop
258 0078 2884 JMP COL_WITHOUT_KEY
259 0079 ; KEY_ROW_7:
260 0079 ; rl a_SR10 ;; a_SR10 rotate to "01111111b"
261 0079 ; inc a_SR11
262 0079 ; KEY_ROW_6:
263 0079 ; rl a_SR10 ;; a_SR10 rotate to "10111111b"
264 0079 ; inc a_SR11
265 0079 ; KEY_ROW_5:
266 0079 ; rl a_SR10 ;; a_SR10 rotate to "11011111b"
267 0079 ; inc a_SR11
268 0079 KEY_ROW_4:
269 0079 1880 R rl a_SR10 ;; a_SR10 rotate to "11101111b"
270 007A 1480 R inc a_SR11
271 007B KEY_ROW_3:
272 007B 1880 R rl a_SR10 ;; a_SR10 rotate to "11110111b"
273 007C 1480 R inc a_SR11
274 007D ; KEY_ROW_2:
275 007D ; rl a_SR10 ;; a_SR10 rotate to "11111011b"
276 007D ; inc a_SR11
277 007D ; KEY_ROW_1:
278 007D ; rl a_SR10 ;; a_SR10 rotate to "11111101b"
279 007D ; inc a_SR11
280 007D KEY_ROW_2:
281 007D 0F1C mov a,01ch
282 007E 0680 R andm a,a_SR10
283 007F 0600 R AND a,COL_VALUE
284 0080
285 0080 0400 R xor A,a_SR10 ;;Check ROW Multi-Key
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -