?? password clock3.lst
字號:
文件:PASSWORD CLOCK3.ASM 盛群編譯器版本 2.86 頁次1
1 0000
2 0000 ;************************************************************
3 0000 ;控制口的結(jié)構(gòu):
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定義區(qū)間
16 0000 scl equ pb.1 ;時鐘信號引腳定義
17 0000 sda equ pb.0 ;串行數(shù)據(jù)引腳定義
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 CLOCK3.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 2131 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 CLOCK3.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 2131 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 205F CALL SCAN_KEY_PROC ;SCAN KEY PROCEDURE
137 002A ;CALL F_DELAY ;TIME DELAY PROCEDURE
138 002A
139 002A 3C00 R sz fg_repeat
140 002B 2829 jmp MAIN_PROC
141 002C
142 002C 3C00 R SZ fg_Multi_Key ;Check Invalid Key
143 002D 2829 JMP MAIN_PROC ;
144 002E
145 002E 0F0B mov a,0bh ;* key
146 002F 0400 R xor a,key_code
147 0030 1085 sz acc
148 0031 2834 jmp $+3
149 0032 3000 R set release_flg
150 0033 2829 jmp main_proc
151 0034
152 0034 0F0C mov a,0ch ;red key
153 0035 0400 R xor a,key_code
154 0036 1085 sz acc
155 0037 283A jmp judge_personal
156 0038 203F call judge_red_key
157 0039 2829 jmp main_proc
158 003A
159 003A judge_personal:
160 003A 3C00 R sz manage_code_end
161 003B 28E8 jmp chang_personal_proc
162 003C
163 003C 1080 R SZ KEY_CODE ;Check NO Key Press
164 003D 2849 jmp judge
165 003E 2854 jmp sleep
166 003F
167 003F judge_red_key:
168 003F 3C00 R sz red_key_1
169 0040 2843 jmp $+3
170 0041 3000 R set flg_chang_key
171 0042 2845 jmp $+3
172 0043 3400 R clr flg_chang_key
173 0044 2847 jmp $+3
174 0045 3000 R set red_key_1
175 0046 2848 jmp $+2
文件:PASSWORD CLOCK3.ASM 盛群編譯器版本 2.86 頁次4
176 0047 3400 R clr red_key_1
177 0048 0003 ret
178 0049 judge:
179 0049 0F70 mov a,070h
180 004A 0080 R mov t_count,a
181 004B 0F50 mov a,050h
182 004C 0080 R mov t_count1,a
183 004D
184 004D 3C00 R sz release_flg
185 004E 2930 jmp release_proc
186 004F 3C00 R sz flg_chang_key
187 0050 28FE jmp manage_code
188 0051 3C00 R sz manage_code_end
189 0052 291A jmp chang_manage_proc
190 0053 28CE JMP personal_code
191 0054 ;
192 0054 SLEEP:
193 0054 1F12 clr PA ;Ready WakeUp Low Level
194 0055 1F00 R clr KEY_DATA
195 0056
196 0056 1780 R sdz t_count1 ;\
197 0057 2829 JMP MAIN_PROC ; \
198 0058 1780 R sdz t_count ; /if no key code wait 1s
199 0059 2856 JMP $-3 ;/
200 005A
201 005A ; mov A,0
202 005A ; mov PA,A
203 005A
204 005A 3E94 sz PB.5
205 005B 0002 halt ;System Halt
206 005C 0F00 mov a,0
207 005D 0F00 R mov a, offset array_data
208 005E
209 005E 2829 JMP MAIN_PROC ;Any Key WakeUp
210 005F ;@************* SUBROUTINE[xx]: Scan 12 Key Matrix (3x4) ************
211 005F
212 005F SCAN_KEY_PROC:
213 005F ;;--- READ KEY PROCEDURE ---
214 005F ;;Initiate Process
215 005F 1F00 R clr KEY_CODE ;
216 0060 3400 R clr fg_PressRec ;
217 0061 1F00 R clr COLUMMN ;
218 0062 3400 R clr fg_Multi_Key ;
219 0063
220 0063 0FF7 mov a,0f7h
221 0064 0080 R mov key_data1,a
222 0065 0F06 mov a,06h
223 0066 NEXT_COLUMN:
224 0066 0400 R xor a,key_data1
225 0067 0080 R mov key_data,a
226 0068 1880 R rl key_data1
227 0069
228 0069 0092 mov PA,A ;Scan Column PA PORT OUTPUT
229 006A 0080 R mov KEY_DATA,A ;
230 006B 0000 NOP ;
231 006C ;;--- READ PB PORT ---
232 006C ;mov a,0e3h
233 006C ;AND a,PB
234 006C ;MOV KEY_DATA1,A
235 006C ;MOV A,01CH
文件:PASSWORD CLOCK3.ASM 盛群編譯器版本 2.86 頁次5
236 006C ;XORM A,KEY_DATA1
237 006C ;SET PB ;;SET PB0,PB1 Pull-Up
238 006C 0714 MOV A,PB ;;Read on column value to a_COL_VALUE
239 006D 0080 R mov COL_VALUE,A ;;
240 006E
241 006E 0F01 mov A,1
242 006F 0080 R mov a_SR11,A
243 0070 0FFB mov A,11111011b ;;
244 0071 0080 R mov a_SR10,A
245 0072 ; mov A,COL_VALUE ;; This column value to ACC
246 0072 ; SNZ COL_VALUE.7
247 0072 ; JMP KEY_ROW_7
248 0072 ; SNZ COL_VALUE.6
249 0072 ; JMP KEY_ROW_6
250 0072 ; SNZ COL_VALUE.5
251 0072 ; JMP KEY_ROW_5
252 0072 3800 R SNZ COL_VALUE.4
253 0073 287B JMP KEY_ROW_4
254 0074 3800 R SNZ COL_VALUE.3
255 0075 287D JMP KEY_ROW_3
256 0076 3800 R SNZ COL_VALUE.2
257 0077 287F JMP KEY_ROW_2
258 0078 ; SNZ a_COL_VALUE.1
259 0078 ; JMP KEY_ROW_1
260 0078 ; SNZ a_COL_VALUE.0
261 0078 ; JMP KEY_ROW_0
262 0078 2879 jmp $+1
263 0079 0000 nop
264 007A 2886 JMP COL_WITHOUT_KEY
265 007B ; KEY_ROW_7:
266 007B ; rl a_SR10 ;; a_SR10 rotate to "01111111b"
267 007B ; inc a_SR11
268 007B ; KEY_ROW_6:
269 007B ; rl a_SR10 ;; a_SR10 rotate to "10111111b"
270 007B ; inc a_SR11
271 007B ; KEY_ROW_5:
272 007B ; rl a_SR10 ;; a_SR10 rotate to "11011111b"
273 007B ; inc a_SR11
274 007B KEY_ROW_4:
275 007B 1880 R rl a_SR10 ;; a_SR10 rotate to "11101111b"
276 007C 1480 R inc a_SR11
277 007D KEY_ROW_3:
278 007D 1880 R rl a_SR10 ;; a_SR10 rotate to "11110111b"
279 007E 1480 R inc a_SR11
280 007F ; KEY_ROW_2:
281 007F ; rl a_SR10 ;; a_SR10 rotate to "11111011b"
282 007F ; inc a_SR11
283 007F ; KEY_ROW_1:
284 007F ; rl a_SR10 ;; a_SR10 rotate to "11111101b"
285 007F ; inc a_SR11
286 007F KEY_ROW_2:
287 007F 0F1C mov a,01ch
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -