1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
|
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 1
MCS-51 Family Macro Assembler A S E M - 5 1 V 1.3
=====================================================
Source File: pins.asm
Object File: pins.hex
List File: pins.lst
Line I Addr Code Source
1: ; Firmware pre testovanie kontaktov patice AT89Cx051 zariadenia pre
2: ; programovanie mikrokontrolerov AT89Cx051 seriovym ISP programatorom
3:
4: ; Verzia 1.0
5:
6: ; Copyright (C) 2012 Jan Sucan <sucan@runbox.com>
7:
8: ; Permission is hereby granted, free of charge, to any person obtaining
9: ; a copy of this software and associated documentation files (the
10: ; "Software"), to deal in the Software without restriction, including
11: ; without limitation the rights to use, copy, modify, merge, publish,
12: ; distribute, sublicense, and/or sell copies of the Software, and to
13: ; permit persons to whom the Software is furnished to do so, subject to
14: ; the following conditions:
15:
16: ; The above copyright notice and this permission notice shall be
17: ; included in all copies or substantial portions of the Software.
18:
19: ; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
20: ; EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
21: ; MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
22: ; IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
23: ; CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
24: ; TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
25: ; SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
26:
27: ; ------------------------------------------------------------------------------
28: ; hardware
29: ; ------------------------------------------------------------------------------
30: B 0081 grnled equ p0.1 ; zelena LED
31: B 0080 redled equ p0.0 ; cervena LED
32: B 0090 button equ p1.0 ; ovladacie tlacidlo
33:
34: B 0082 rdy equ p0.2 ; signaly pre AT89Cx051
35: B 0083 xtal equ p0.3
36: B 0084 prog equ p0.4
37: B 0085 m0 equ p0.5
38: B 0086 m1 equ p0.6
39: B 0087 m2 equ p0.7
40: D 00A0 pdata equ p2
41: B 00B5 rstsw equ p3.5 ; spinanie RST napatia
42: B 00B6 vccsw equ p3.6 ; spinanie napajacieho napatia
43:
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 2
Line I Addr Code Source
44: ; ------------------------------------------------------------------------------
45: ; konstanty a premenne
46: ; ------------------------------------------------------------------------------
47: N 01F4 dtctlim equ 500 ; hranicny pocet dobrych stavov pre vyhodnotenie
48: ; stlacenia alebo uvolnenia tlacidla
49:
50: ; konstanty casovacov pri taktovacej frekvencii 24 MHz v jednotkach 0,5 us
51: N 0212 period equ 530 ; perioda PWM signalu
52: N 0012 volt equ 18 ; aktivna polperioda PWM signalu (pre 5 V)
53: ; odmeranie casu 0,5 ms
54: N 0017 halfmsl equ low (0ffffh - 1000)
55: N 00FC halfmsh equ high (0ffffh - 1000)
56:
57: ; ------------------------------------------------------------------------------
58: ; kod programu
59: ; ------------------------------------------------------------------------------
60: cseg
61:
62: N 0000 org 00h
63: 0000 01 0D ajmp main ; hlavny program
64:
65: N 000B org 0bh
66: 000B 01 50 ajmp rstpwm ; obsluha casovaca PWM generatoru
67:
68: ; ------------------------------------------------------------------------------
69: ; hlavny program
70: ; ------------------------------------------------------------------------------
71: 000D D2 81 main: setb grnled ; zhasni obe LED
72: 000F D2 80 setb redled
73:
74: 0011 75 89 11 mov tmod,#00010001b ; dva 16 bitove casovace
75:
76: 0014 D2 AF setb ea ; povol vsetky prerusenia
77:
78: 0016 D2 80 loop: setb redled ; 1. stav testovania
79: 0018 C2 81 clr grnled
80:
81: 001A D2 B6 setb vccsw
82: 001C 74 55 mov a,#01010101b
83: 001E 11 BF acall putbyte
84: 0020 C2 87 clr m2
85: 0022 D2 86 setb m1
86: 0024 C2 85 clr m0
87: 0026 D2 84 setb prog
88: 0028 C2 83 clr xtal
89: 002A D2 82 setb rdy
90: 002C 11 68 acall rst0v
91:
92: 002E 11 C4 acall press ; cakaj na stlacenie tlacidla
93: 0030 11 C8 acall release ; cakaj na uvolnenie tlacidla
94:
95: 0032 C2 80 clr redled ; 2. stav testovania
96: 0034 D2 81 setb grnled
97:
98: 0036 C2 B6 clr vccsw
99: 0038 74 AA mov a,#10101010b
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 3
Line I Addr Code Source
100: 003A 11 BF acall putbyte
101: 003C D2 87 setb m2
102: 003E C2 86 clr m1
103: 0040 D2 85 setb m0
104: 0042 C2 84 clr prog
105: 0044 D2 83 setb xtal
106: 0046 C2 82 clr rdy
107: 0048 11 8D acall rst12v
108:
109: 004A 11 C4 acall press ; cakaj na stlacenie tlacidla
110: 004C 11 C8 acall release ; cakaj na uvolnenie tlacidla
111:
112: 004E 01 16 ajmp loop
113:
114: ; ------------------------------------------------------------------------------
115: ; obsluzne podprogramy
116: ; ------------------------------------------------------------------------------
117: ; obsluha casovaca PWM generatoru
118: 0050 C2 8C rstpwm: clr tr0 ; zastav casovac pre konzistentnu zmenu hodnoty
119: 0052 10 B5 0B jbc rstsw,rstpwm_low
120: 0055 D2 B5 setb rstsw
121: 0057 75 8A ED mov tl0,#low (0ffffh - volt)
122: 005A 75 8C FF mov th0,#high (0ffffh - volt)
123: 005D rstpwm_exit:
124: 005D D2 8C setb tr0 ; znovu spust casovac
125: 005F 32 reti
126: 0060 rstpwm_low:
127: 0060 75 8A FF mov tl0,#low (0ffffh - period + volt)
128: 0063 75 8C FD mov th0,#high (0ffffh - period + volt)
129: 0066 01 5D ajmp rstpwm_exit
130:
131: ; nastavenie RST = 0 V
132: 0068 C2 A9 rst0v: clr et0 ; nepotrebuje obsluhu casovaca 0
133: 006A C2 B5 clr rstsw
134: 006C 78 44 mov r0,#low (580) ; cakaj >286,5 ms na dosiahnutie napatia 0,5 V
135: 006E 79 02 mov r1,#high (580)
136: 0070 01 95 ajmp rstwait
137:
138: ; nastavenie RST = 5 V
139: 0072 10 B5 08 rst5v: jbc rstsw,rst5v_down
140: 0075 D2 B5 setb rstsw ; pull-up impulz
141: 0077 78 0B mov r0,#low (11) ; cakaj 5,5 ms
142: 0079 79 00 mov r1,#high (11)
143: 007B 01 81 ajmp rst5v_l0
144: 007D rst5v_down: ; pull-down impulz
145: 007D 78 9F mov r0,#low (159) ; cakaj 79,5 ms
146: 007F 79 00 mov r1,#high (159)
147: 0081 rst5v_l0:
148: 0081 11 98 acall wait
149: 0083 D2 A9 setb et0 ; povol prerusenie od casovaca 0
150: 0085 D2 8D setb tf0 ; vyvolaj obsluhu prerusenia od casovaca 0
151: 0087 78 28 mov r0,#low (40) ; cakaj 20 ms na ustalenie napatia 5 V
152: 0089 79 00 mov r1,#high (40)
153: 008B 01 95 ajmp rstwait
154:
155: ; nastavenie RST = 12 V
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 4
Line I Addr Code Source
156: 008D C2 A9 rst12v: clr et0 ; nepotrebuje obsluhu casovaca 0
157: 008F D2 B5 setb rstsw
158: 0091 78 64 mov r0,#low (100) ; cakaj >44 ms na dosiahnutie napatia 12 V
159: 0093 79 00 mov r1,#high (100)
160: 0095 rstwait:
161: 0095 11 98 acall wait
162: 0097 22 ret
163:
164: ; ------------------------------------------------------------------------------
165: ; cakanie zadaneho poctu 0,5 ms
166: 0098 B8 00 04 wait: cjne r0,#0,wait_next ; detekuj koniec cakania
167: 009B B9 00 01 cjne r1,#0,wait_next
168: 009E 22 ret
169: 009F wait_next:
170: 009F 18 dec r0 ; zniz 16 bitove pocitadlo
171: 00A0 B8 FF 01 cjne r0,#0ffh,$+4 ; detekuj vypozicku
172: 00A3 19 dec r1
173: 00A4 C2 8E clr tr1 ; zastav casovac pre konzistentnu zmenu hodnoty
174: 00A6 C2 8F clr tf1
175: 00A8 75 8B 17 mov tl1,#halfmsl ; cakaj 0,5 ms
176: 00AB 75 8D FC mov th1,#halfmsh
177: 00AE D2 8E setb tr1 ; znovu spust casovac
178: 00B0 30 8F FD jnb tf1,$
179: 00B3 01 98 ajmp wait
180:
181: ; bitove otocenie bajtu v ACC
182: 00B5 rotatebyte:
183: 00B5 7F 08 mov r7,#8 ; pocet bitov
184: 00B7 rotatebyte_l0:
185: 00B7 33 rlc a ; MSB do C
186: 00B8 CE xch a,r6 ; vymen A s R6
187: 00B9 13 rrc a ; C do LSB
188: 00BA CE xch a,r6 ; vymen A s R6
189: 00BB DF FA djnz r7,rotatebyte_l0
190: 00BD CE xch a,r6 ; otoceny bajt do A
191: 00BE 22 ret
192:
193: ; zapisanie bajtu na datovy port AT89Cx051
194: 00BF putbyte:
195: 00BF 11 B5 acall rotatebyte ; korekcia bitoveho otocenia datovej zbernice
196: 00C1 F5 A0 mov pdata,a
197: 00C3 22 ret
198:
199: ; detekovanie stlacenia tlacidla
200: 00C4 C2 D5 press: clr f0
201: 00C6 01 CA ajmp noise
202: ; detekovanie uvolnenia tlacidla
203: 00C8 release:
204: 00C8 D2 D5 setb f0
205: 00CA 90 00 00 noise: mov dptr,#0 ; pouzi DPTR ako 16 bitove pocitadlo
206: 00CD C2 8F clr tf1 ; analyzuj 10 ms interval
207: 00CF 75 8B DF mov tl1,#low (65535 - 20000)
208: 00D2 75 8D B1 mov th1,#high (65535 - 20000)
209: 00D5 A2 90 detect: mov c,button ; porovnaj aktualny stav tlacidla s
210: ; predpokladanym stavom
211: 00D7 33 rlc a
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 5
Line I Addr Code Source
212: 00D8 C5 F0 xch a,b
213: 00DA A2 D5 mov c,f0
214: 00DC 33 rlc a
215: 00DD 65 F0 xrl a,b
216: 00DF 20 E0 01 jb acc.0,$+4
217: 00E2 A3 inc dptr ; ak sa rovnaju, zapocitaj dobry stav
218: 00E3 30 8F EF jnb tf1,detect ; opakuj do skoncenia intervalu
219:
220: 00E6 C3 clr c ; porovnaj pocet dobrych stavov s hranicnou
221: 00E7 E5 82 mov a,dpl ; hodnotou
222: 00E9 94 F4 subb a,#low (dtctlim)
223: 00EB E5 83 mov a,dph
224: 00ED 94 01 subb a,#high (dtctlim)
225: 00EF 50 D9 jnc noise ; ak nebola prekrocena hranicna hodnota
226: 00F1 22 ret ; analyzuj dalsi interval
227:
228: end
register banks used: ---
no errors
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 6
L I S T O F S Y M B O L S
=============================
SYMBOL TYPE VALUE LINE
------------------------------------------------------------
??ASEM_51 NUMBER 8051
??VERSION NUMBER 0130
AC BIT D6
ACC DATA E0
B DATA F0
BUTTON NUMBER 0090 32
CY BIT D7
DETECT CODE 00D5 209
DPH DATA 83
DPL DATA 82
DTCTLIM NUMBER 01F4 47
EA BIT AF
ES BIT AC
ET0 BIT A9
ET1 BIT AB
EX0 BIT A8
EX1 BIT AA
EXTI0 CODE 0003
EXTI1 CODE 0013
F0 BIT D5
GRNLED NUMBER 0081 30
HALFMSH NUMBER 00FC 55
HALFMSL NUMBER 0017 54
IE DATA A8
IE0 BIT 89
IE1 BIT 8B
INT0 BIT B2
INT1 BIT B3
IP DATA B8
IT0 BIT 88
IT1 BIT 8A
LOOP CODE 0016 78
M0 NUMBER 0085 37
M1 NUMBER 0086 38
M2 NUMBER 0087 39
MAIN CODE 000D 71
NOISE CODE 00CA 205
OV BIT D2
P BIT D0
P0 DATA 80
P1 DATA 90
P2 DATA A0
P3 DATA B0
PCON DATA 87
PDATA NUMBER 00A0 40
PERIOD NUMBER 0212 51
PRESS CODE 00C4 200
PROG NUMBER 0084 36
PS BIT BC
PSW DATA D0
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 7
SYMBOL TYPE VALUE LINE
------------------------------------------------------------
PT0 BIT B9
PT1 BIT BB
PUTBYTE CODE 00BF 194
PX0 BIT B8
PX1 BIT BA
RB8 BIT 9A
RD BIT B7
RDY NUMBER 0082 34
REDLED NUMBER 0080 31
RELEASE CODE 00C8 203
REN BIT 9C
RESET CODE 0000
RI BIT 98
ROTATEBYTE CODE 00B5 182
ROTATEBYTE_L0 CODE 00B7 184
RS0 BIT D3
RS1 BIT D4
RST0V CODE 0068 132
RST12V CODE 008D 156
RST5V CODE 0072 139
RST5V_DOWN CODE 007D 144
RST5V_L0 CODE 0081 147
RSTPWM CODE 0050 118
RSTPWM_EXIT CODE 005D 123
RSTPWM_LOW CODE 0060 126
RSTSW NUMBER 00B5 41
RSTWAIT CODE 0095 160
RXD BIT B0
SBUF DATA 99
SCON DATA 98
SINT CODE 0023
SM0 BIT 9F
SM1 BIT 9E
SM2 BIT 9D
SP DATA 81
T0 BIT B4
T1 BIT B5
TB8 BIT 9B
TCON DATA 88
TF0 BIT 8D
TF1 BIT 8F
TH0 DATA 8C
TH1 DATA 8D
TI BIT 99
TIMER0 CODE 000B
TIMER1 CODE 001B
TL0 DATA 8A
TL1 DATA 8B
TMOD DATA 89
TR0 BIT 8C
TR1 BIT 8E
TXD BIT B1
VCCSW NUMBER 00B6 42
VOLT NUMBER 0012 52
WAIT CODE 0098 166
WAIT_NEXT CODE 009F 169
ASEM-51 V1.3 Copyright (c) 2002 by W.W. Heinz PAGE 8
SYMBOL TYPE VALUE LINE
------------------------------------------------------------
WR BIT B6
XTAL NUMBER 0083 35
|