Разумеется, именно в программе для микроконтроллера PIC16C8/i сокрыто большинство "маленьких секретов" вышеописанной схемы.
Исходный текст программы (файл C0UP84. ASK) не слишком объемен и совершенно не похож на исходные тексты для "профессиональных" устройств чтения-записи.
---------colipw.ash--------
Чтение-запись чип-карт на микроконтроллере PIC16C84
copyright (с}1997 Patrick GUEULLE
Биты конфигурации ■ Ose XT, WDT ОН
org 0 |
|||
goto тії |
|||
org 4 |
|||
init |
bsf |
3,5 |
I Выбор стр. 1 |
ITOVlW |
b"10000' |
, ЙА4 - вход. |
|
irovwf |
' .^фигурирование порта А |
||
movlw |
b110011000- |
||
movwf |
Конф-тур/ропание перта В. |
||
")VlW |
b"11111000" |
||
")VWf |
Конфигурирование МОТ. |
||
bef |
3.5 |
Возврат на стр. 0 |
|
movlw |
b* 11111000 |
Инициализация порта В. |
|
ITDV'Wf |
№ |
||
mc lw |
b'11010 |
Инициализация порта А |
|
de ja |
btfss |
6,3 |
Ждать удаления карты |
goto |
err |
Снять питание со вставленной карты |
|
wait |
clrwdt |
||
btfsc |
6,3 |
. Ждать вставки карты |
goto |
wait |
|
btfsc |
6,4 |
Если последовательный порт неактивен. |
goto |
err |
снять питание с карты |
call |
tempo |
|
bcf |
5,3 |
Подать на карту Усе. |
call |
tempo |
|
bsf |
6.2 |
Подать нг карту Урр. |
call |
tempo |
|
bsf |
5,0 |
Подать на карту тактовые импульсы. |
bcf |
5,1 |
Погасить СИД. |
bsf |
5.2 |
Сбросить карту в 1 |
loop btfss |
5,3 |
Если карта вставлена, |
clrwdt |
обнулить Ш |
|
btfsc |
6.4 |
Если последовательный порт неактивен. |
goto |
err |
снять питание с карты. |
bsf |
3.5 |
Выбрать стр. 1. |
movlw |
b'10000 |
ПА4 - вход, 1/0 карты в 1 {пуста}. |
movwf |
Конфигурирование порта А. |
|
bcf |
3,5 |
Возврат на стр. 0. |
testio btfsc |
5.4 |
, Если 1/0 карты в 1. |
goto |
testrs |
, читать НБ232. |
bcf |
6,6 |
Если 1/0 карты в 0, |
goto |
testio |
послать 0 в ЯБ2Э2. |
zeroca bsf |
3,5 |
; Если 1/0 карты в 1 |
ir.ovlw |
b'00000 |
. ПА4 - выход. |
movwf |
. Конфигурирование порта А |
|
bcf |
3.5 |
, Возврат на стр. 0. |
bcf |
5.4 |
, Послать 0 в карту. |
btfsc |
6.7 |
. Если ($232 в 1, |
goto |
lDDp |
, освободить 1/0 карты- |
goto |
zeroca |
. Продолжить запись 0 в карту |
test rs bsf |
6.6 |
. Держать НБ232 в 1. |
btfss |
6.3 |
. Если карта вставлена, |
clrwdt |
, сбросить ИОТ. |
|
btfss |
6,7 |
, Если НБ232 в 0 |
goto |
zeroca |
; записать 0 в карту. |
goto |
loop |
| Если НБ232 в 1, освободить 1/0 карты |
goto |
loop |
|
tempo movlw |
.200 |
, Задержка на 200 ЭТЕ (ЕТи> |
movwf |
||
loopa call |
bit |
|
btfss |
6.3 |
. Если карта вставлена, |
clrwdt |
, сбросить Ш\ |
|
decfsz |
10.1 |
|
goto |
loopa |
|
return |
||
bit |
movlw 28 |
. ЭТЕ (£Ти> длительностью 101 мке |
time movwf |
OF |
redo decfsz OF. 1 goto redo return
err goto err ; Снять питание с карты по переполнении WOT. end
Результат ассемблирования с помощью средств из набора PIC-START 16В компании Microchip - файл C0UP84.0BJ, который может непосредственно служить для программирования микроконтрол лера при условии, что биты режимов тактового генератора (режим XT) и аварийного таймера (WDT ON) будут программироваться вручную.
Файл C0UP84.08J: :020000000428D2
:10000800B316103085009B30B600F83081008312FE : 10001800F8308E001А308500861D472B6400B61916 :1000280012280БШ7283А2085113А2006153А2040 :1О00380005148510051586Ю640006 Ш7288316С1 :10004800103085008312051А332В06132728831603 :100058000030850083120512861B1F282B280dT7DF :1OO068O0861D64O0861F2B2B1F2B1F28C83O9O0073 :1O0078004220861D6400900B3C2808O01C30BF002D 080088008F0B44280E0D472BF3 :00000001FF
Более содержательный файл C0UP84.HEX позволяет "прошить PIC16C84 с помощью программатора, описанного в книге автора "Composants électroniques programmables sur PC". В таком случае биты режимов автоматически обрабатываются специальной программой, которая представлена на дискете, прилагаемой к названной книге. Файл C0UP84.HEX:
:100000000428FF3FFF3FFF3F8316103085009830E4 :100010008600F83081008312FB30B6001A3085009F :10002000B6TD"7286400B619122B061M7283A2098 :10003C0085113A2006153A20051485100515861DFO ■.100D40006400061A4728831610308500B312051AAB :100050003328D6132728B3160030860083120512E3 :10006000861B1F282B280617861D6400861F2B2839 :100070001F281F28C83090004220B61D6400900B66 :100080003C2B08001C30BF008FOB442B080D472BAC :1O0O9O000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F7 :1O0OAO0DFF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F6O :1000BDOOFF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F50 :1O00C000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F40 :1O0ODO0OFF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F3O
1O0OE000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F20 1OOOFO00FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F10 10010000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FFF 10011000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FEF 10012000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FDF 1O013O00FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FCF 10014000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FBF :1OO15O0OFF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FAF :10016O00FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F9F :1O0170O0FF3FFF3FFF3FFF3FPF3FFF3FFF3FFF3F8F :1O018O00FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F7F : 100190MFF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F6F :1OO1A0O0FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F5F :1001BOOOFF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F4F :1OO1C000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F3F :1O0lD0O0FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F2F :1001E000FF3FFF3FFP3FFF3FFF3FFF3FFF3FFF3F1F .1O01FO0OFF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FOF .1O020OOOFF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FFE :10021O00FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FEE :10022000PF3PFF3FFF3FFF3FFF3FFF3FFP3FFF3FDE :10023000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FCE .10O240O0FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FBE :10025000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FAE ■.100Z60WIFF3FFF3FFF3FFF3FFF3FFT3FFF3FFF3F9E :1O02/O0OFF3FFF3FFF3FFF3FPF3FFF3FFF3FFF3F8E .1O028OOOFF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F7E .10029000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F6E ■1OO2AO0OFF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F5E :1O02BO0OFF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F4E :1OO2C0O0FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F3E 10020000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F2E :1O02E0OOFF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F1E :1002F000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F0E :10030000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FFD :1O0310O0FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FED :10032000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FDD :10033000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FCD :10034000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FBD :1OO35OOOFF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FA0 :1OO36O0OFF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F9D :1OO37OO0FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F8D :10O3BO00FF3FFF3FFF3FFF3FFF3FFF3FFF3FPF3F7D :10039000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F60 :1003AOOOFF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F5D :1O03BOO0FF3FFF3PFF3FFF3FFF3FFF3FFF3FFF3F4D :1003C0OOFF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F3D :1OO3DO0OPF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F2D
:1CO3EO0OFF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F1D :1003FOOOFF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FOD :10D40000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FFC :10041000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FEC :10042000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FDC .1 1 FF3FFF3 Fp F3FFF3FFF3FFP3FF F3FFF3FCC .10044000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FBC :10045000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FAC :1OO46O0OFF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F9C :10D47000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F8C :10D48000FF3FFF3FPF3FFF3FFF3FFF3FFF3FFF3F7C :10D49000FF3FFF3FPF3FFF3FFF3FFF3FFF3FFF3F6C :1O04AO00FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F5C :1O04BO00FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F4C :1OO4COO0FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F3C :1O04D0O0FF3FFF3FFF3FFF3FFF3FFF3FFF3PFF3F2C :1004EOOOFF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F1C :1O04FOO0FF3FFF3FFF3FFF3FFF3FFF3FFF3FPF3FDC .10050000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FFB :10051000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FEB :1O0520O0FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FDB :10053000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FC8 :10054000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FBB :10055000FF3FPF3FFF3FFF3FFF3FFF3FFF3FFF3FAB :10056000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F9B :10057000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F8B :10058000FF3FFF3FFF3FFF3FFF3FFF3FFF3PFF3F7B ■10059000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F6E 1005AOOOFF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F5B 1005BOOOFF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F4B :1OO5CO0OFF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F3B :1005D000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F2B 1005E000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F1B 1005F000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F0B 10O6CO0CFF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FFA 10061000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FEA .10062000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FOA :10063000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FCA .10064000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FBA :10065000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FAA :10066000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F9A :10067CO0FF3FFF3FFF3FFF3FFF3FPF3FFF3FFF3F6A :10068000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F7A :10069000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F6A :1006AOOOFF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F5A :1006B000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F4A
.1006COOOFF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F3A
:1006DOOOFF3FFF3FPF3FFF3FFF3FFF3FFF3FFF3F2A
:1006EOOOFF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F1A
:1006FOOOFF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FOA
:1O07O00OFF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FFS
:1O071O0OFF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FE9
:10072000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F09
:10073000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FC9
:10074000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FB9
:10075000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3FA9
:10076OO0FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F99
:10077000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F89
:10078000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F79
■10079000FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F69
:1OO7A0O0FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F59
.1OO7BOO0FF3FFF3PFF3FFF3FFF3FFF3FFF3FFF3F49
:1OO7C0O0FF3FPF3FFF3FFF3FFF3FFF3FFF3FFF3F39
11007DOOOFF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F29
■.1007EO00FF3FFF3FFF3FFF3FFF3FFF3FFF3FFF3F19
:1OO7FOO0FF3FFF3FFF3FFF'FFF3FFF3FFF2FFF3FO9
:O84000O0FF3FFF3FFF3FFF3FC0
:02400EOOED3F84
:10420O00FF00FFOOFF00FFO0FFO0FF00FF00FFO0B6 :10421000FF00FFO0FF00FF00FFO0FF00FF00FFO0A6 :1O4220O0FFOOFFOOFFO0FFO0FF00FFOOFFOOFFOO96 :10423O00FF00FFO0FF00FFOOFF00FF00FF00FFO086 : 104240WFTOOFFOOFF№OOFFOOFFOOFFOOFF№ :1W250O0FFOOFFO0FF0OFFOOFFOOFFOOFFO0FFOO6E :10428000FFOOFFOOFFOOFFCOFFOOFFOOFFOOFF0056 :10427000FFOOFFOOFFOOFFCCFFOOFFOOFFOOFF0046 : 00000001FF
⇐Упрощенное устройство чтения-записи || Оглавление || Чтение ответа на сброс⇒