ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 17.06.2025

Просмотров: 129

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

h[sbc \uah\ b kh[kl\_gguc Z^j_k²b^_glbnbdZpby \ kbkl_f_ jbkmghd

17).

K_fv [blh\ hklZxsb_ky \h \lhjhf [Zcl_ kh^_j`Zl Z^j_k fZkl_jZ Wlhl Z^j_k ^he`_g [ulv jZkihagZg ^jm]bf we_f_glhf gZijbf_j fbdjhdhgljhee_jhf kh_^bg_gguf k rbghc

Jbkmghd I_j_^ZqZ ^Zgguo ba fZkl_jZ ijb h[s_f \uah\_

START BYTE

Fbdjhdhgljhee_ju fh]ml [ulv kh_^bg_gu k rbghc ,2& ^\mfy kihkh- [Zfb

1.Fbdjhdhgljhee_j kh \kljh_gguf ZiiZjZlguf ,2&bgl_jn_ckhf fh`_l [ulv aZijh]jZffbjh\Zg gZ ij_ju\Zgb_ aZijhkZfb rbgu

2.G_ bf_xsbc lZdh]h bgl_jn_ckZ ^he`_g ihklhyggh dhgljhebjh- \Zlv rbgm ijh]jZffgh

Hq_\b^gh \h \lhjhf kemqZ_ dhgljhee_j ^he`_g [hevr__ \j_fy hl- \e_dZlvky gZ fhgblhjbjh\Zgb_ rbgu b f_gvr_ \j_f_gb aZgbfZlvky ^jm]bfb h[yaZgghklyfb

< wlhf kemqZ_ i_j_^Zq_ ^Zgguo fh`_l ij_^r_kl\h\Zlv [he__ ^ebl_evgZy klZjlh\Zy ijhp_^mjZ jbkmghd Ijhp_^mjZ khklhbl ba

khklhygby67$57 6

START BYTE (00000001)

ih^l\_j`^Zxs_]h kbgojhgbabjmxs_]h bfimevkZ $&.

ih\lhj_ggh]h khklhygby67$57 6U

Ihke_ lh]h dZd khklhygb_ 67$57 i_j_^Zgh fZkl_jhf i_j_^Z_lky klZjlh\uc [Zcl

Fbdjhdhgljhee_j fh`_l ke_^h\Zl_evgh hijZrb\Zlv ebgbx 6'$ k gbadhc qZklhlhc ihdZ h^bg ba k_fb ghe_c \ klZjlh\hf [Zcl_ g_ [m^_l h[gZjm`_g Ihke_ h[gZjm`_gby wlh]h gmey gZ ebgbb 6'$ fbdjhdhgljhee_j fh`_l i_j_dexqblvky gZ [he__ \ukhdmx qZklhlm ^bkdj_lbaZpbb qlh[u gZclb ih\lhj_ggh_ khklhygb_67$57 6U

Jbkmghd67$57 %<7(

IH>DEXQ?GB? MKLJHCKL< K J:AGUFB IBL:GBYFB

JZaebqgu_ mkljhckl\Z fh]ml bkihevah\Zlv jZagu_ iblZxsb_ gZijy- `_gby b mjh\gb kb]gZeh\ Ijb wlhf we_f_glu k nbdkbjh\Zggufb \oh^- gufb mjh\gyfb9b9fh]ml bf_lv jZaebqgu_ bklhqgbdb iblZgby b ih^ly]b\Zxsb_ j_abklhju ih^dexq_gguc d bklhqgbdm9jbkmghd

We_f_glu k \oh^gufb mjh\gyfb aZ\bkysbfb hl gZijy`_gby iblZgby ^he`gu bf_lv h[s__ iblZgb_ d dhlhjhfm ih^dexq_gu ih^ly]b\Zxsb_ j_abklhju jbkmghd

?keb we_f_glu k nbdkbjh\Zggufb \oh^gufb mjh\gyfb kf_rZgu k we_f_glZfb k \oh^gufb mjh\gyfb aZ\bkysbfb hl 9 '' g_h[oh^bfh \uihegylv kh_^bg_gby dZd ihdZaZgh gZ jbkmgd_

Jbkmghd We_f_glu k nbdkbjh\Zggufb \oh^gufb mjh\gyfb

Jbkmghd We_f_glu k rbjhdbf ^bZiZahghf iblZxs_]h gZijy`_gby

Jbkmghd We_f_glu k \oh^gufb mjh\gyfb k\yaZggufb k9''kf_-

rZggu_ k we_f_glZfb k nbdkbjh\Zggufb \oh^gufb mjh\gyfb

>ey aZsblu hl \ukhdh\hevlguo ihf_o fh]ml ijbf_gylvky ihke_^h\Z- l_evgu_ j_abklhju jbkmghd

Jbkmghd >h[Z\hqgu_ j_abklhju ^ey aZsblu ijhlb\ \ukhdh\hevlguo

\u[jhkh\

J:KRBJ?GB? RBGU,2C

e_l ki_pbnbdZpby rbgu,2&hklZ\ZeZkv g_baf_gghc kh kdhjhklvx i_j_^Zqb ^Zgguo ^hNELW Vb jZajy^ghc Z^j_kZpb_c Wlh [ueh ijbgylh \h \k_f fbj_ dZd nZdlbq_kdbc klZg^Zjl b khlgb jZaebqguo lbih\ I2&kh\f_klbfuo fbdjhko_f \uimkdZxlky nbjfhc 3KLOLSV b ^jm]bfb < gZklhys__ \j_fy ki_pbnbdZpby rbgu,2&jZkrbj_gZ

[ukljuc j_`bf dhlhjuc iha\hey_l q_luj_odjZlgh_ m\_ebq_gb_ kdhjhklb i_j_^Zqb bgnhjfZpbb ^hNELW V

jZajy^gZy Z^j_kZpby dhlhjZy iha\hey_l bkihevah\Zgb_ ^h

^hihegbl_evguo Z^j_kh\

<k_ gh\u_ ijb[hju k rbghc,2&\uimkdZxlky kh\f_klbfufb k [ukljuf j_`bfhf L _ hgb ^he`gu [ulv kihkh[gu ihemqZlv b beb i_j_^Z\Zlv kh kdhjhklvx ^h NELW V FbgbfZevgh_ lj_[h\Zgb_ kbgojhgbaZpby kh kdhjhklvxNELW VaZl_f hgb fh]ml ijh^e_\Zlv³ ´gZ6&/qlh[u aZf_^eblv i_j_^Zqm We_f_glu k [ukljuf j_`bfhf ^he`gu [ulv h[jZlgh kh\f_klbfu qlh hagZqZ_l qlh hgb ^he`gu [ulv kihkh[gu jZ[hlZlv kh kdhjhklyfb hl ^hNELW Vkh\f_klgh kh klZjufb we_f_glZfb jZkkqblZggufb gZ kdhjhklv hl ^hNELW V


jZajy^gZy :>J?K:PBY

Ijb bkihevah\Zgbb jZajy^ghc Z^j_kZpbb bkihevam_lky dh^ mkljhckl\Z;;;^ey i_j\uo k_fb [bl i_j\h]h [ZclZ dhlhjuc g_ \ha^_ckl- \m_l gZ we_f_glu k h[uqghc jZajy^ghc Z^j_kZpb_c ihwlhfm we_f_glu k jZajy^gufb b jZajy^gufb Z^j_kZfb fh]ml [ulv h[t_^bg_gu \ h^gm rbgm

Ohly bf_xlky \hk_fv \hafh`guo dhf[bgZpbc i_j\h]h [ZclZ Z^j_kZ bkihevamxlky lhevdh q_luj_ dhf[bgZpbb ;; HklZevgu_ aZj_a_j- \bjh\Zgu ^ey ^Zevg_cr_]h jZkrbj_gby ki_pbnbdZpbb rbgu,2C.

Nmgdpbhgbjh\Zgb_ we_f_glh\ k jZajy^ghc Z^j_kZpb_c ZgZeh]bqgh h[uqguf mkljhckl\h ihemqb\ dh^ \ i_j\hf [Zcl_ Z^j_kZ ijh\_jy_l dh^ \lhjh]h [ZclZ Z^j_kZ ijb kh\iZ^_gbb dhlhjh]h k kh[kl\_gguf \u- ^Z_l ih^l\_j`^_gb_ b \uihegy_l khhl\_lkl\mxsb_ ^_ckl\by ^h ihy\e_gby khklhygby6723 Khhl\_lkl\mxsb_ ^bZ]jZffu ihdZaZgu gZ jbkmgdZo

Jbkmghd I_j_^ZqZ fZkl_j i_j_^Zlqbd ih^qbg_gguc ijbfgbd k

jZajy^guf Z^j_khf

Jbkmghd I_j_^ZqZ fZkl_j ijb_fgbd ih^qbg_gguc i_j_^Zlqbd k

jZajy^guf Z^j_khf

Jbkmghd Dhf[bgbjh\Zgguc nhjfZl FZkl_j Z^j_km_l ih^qbg_ggh]h k

jZajy^guf Z^j_khf aZl_f i_j_^Z_l ^Zggu_ d g_fm b qblZ_l ^Zggu_ ba g_]h

Jbkmghd Dhf[bgbjh\Zgguc nhjfZl FZkl_j i_j_^Z_l ^Zggu_ ^\mf

ih^qbg_gguf k jZajy^gufb Z^j_kZfb

Jbkmghd Dhf[bgbjh\Zgguc nhjfZl FZkl_j i_j_^Z_l ^Zgguc ^\mf ih^qbg_gguf h^ghfm k jZajy^guf Z^j_khf b h^ghfm k

jZajy^guf Z^j_khf

IJBF?J J:;HLU K, &MKLJHCKL<HF

GZb[he__ ijhklh ihwdki_jbf_glbjh\Zlv k ,2& mkljhckl\hf fh`gh ih^dexqb\ _]h d ijbgl_jghfm ihjlm i_jkhgZevgh]h dhfivxl_jZ >ey wlh- ]h g_h[oh^bfh \k_]h h^bg fZehfhsguc ljZgabklhj b iZjZ j_abklhjh\Jbkmghd

>Zgguc ijbf_j ij_^gZagZq_g ^ey jZ[hlu k ihke_^h\Zl_evghc wg_j- ]hg_aZ\bkbfhc iZfylvx gh ijb g_agZqbl_evghc fh^bnbdZpbb ijh]jZffu iheguc bkoh^guc l_dkl dhlhjhc gZ Lmj[h IZkdZe_ ijb\_^_g gb`_ >ZggZy ko_fZ b ijh]jZffZ >fbljb_f Hjeh\uf b y\eyxlkyIUHHZDUH

program I2C_LPT;

{ Copyright Dmitry Orlov, 2:461/27 }

uses CRT; var

LPT1: Word; A: Word;

Mode: (mError, mRead, mWrite); FileName: String[80];

Buf : Array[0..2047] of byte; F: File;

procedure Pause; assembler; asm

push ax @@0:

jmp @@1 @@1:

in al, dx pop ax

end;

procedure Start; assembler;

asm

mov dx,

lpt1

mov al,

00000110b {Vcc = 1, SCL = 1, SDA = 1}

out dx,

al

call Pause

mov al,

00000111b {Vcc = 1, SCL = 1, SDA = 0}

out dx,

al

call Pause

mov al,

00000011b {Vcc = 1, SCL = 0, SDA = 0}

out dx,

al

call Pause

end;

procedure Stop; assembler;

asm

mov dx,

lpt1

mov al,

00000111b {Vcc = 1, SCL = 1, SDA = 0}

out dx,

al

call Pause

mov al,

00000110b {Vcc = 1, SCL = 1, SDA = 1}

out dx,

al

call Pause

end;

function

PutByte(B: Byte): boolean; assembler;

asm

mov dx,

lpt1


mov

ah,

B

mov

cx,

8

@@0:

rcl

ah,1

jc @@1

mov

al,

00000011b {Vcc = 1, SCL = 0, SDA = 0}

out

dx,

al

call Pause

mov al,

00000111b {Vcc = 1, SCL = 1, SDA = 0}

out dx,

al

call Pause

mov al,

00000011b {Vcc = 1, SCL = 0, SDA = 0}

out dx,

al

jmp @@2

@@1:

mov al,

00000010b {Vcc = 1, SCL = 0, SDA = 1}

out dx,

al

call Pause

mov al,

00000110b {Vcc = 1, SCL = 1, SDA = 1}

out dx,

al

call Pause

mov al,

00000010b {Vcc = 1, SCL = 0, SDA = 1}

out dx,

al

@@2:

loop @@0

call Pause

mov al,

00000110b {Vcc = 1, SCL = 1, SDA = 1}

out dx,

al

call Pause

inc dx

in al, dx

dec dx

and al,

01000000b

mov ah,

1

je @@3

mov ah,

0

@@3:

mov al,

00000010b {Vcc = 1, SCL = 0, SDA = 1}

out dx,

al

mov al,

ah

end;

function GetByte: byte; assembler;

asm

mov dx,

lpt1

mov cx,

8

@@0:

mov al,

00000110b {Vcc = 1, SCL = 1, SDA = 1}

out dx,

al

call Pause

inc dx

in al, dx

dec dx

and al,

01000000b

shl al,1

shl al,1

rcl ah,

1

mov al,

00000010b {Vcc = 1, SCL = 0, SDA = 1}

out dx,

al

call Pause loop @@0

mov al, 00000110b {Vcc = 1, SCL = 1, SDA = 1} out dx, al

call Pause


mov al, 00000010b {Vcc = 1, SCL = 0, SDA = 1} out dx, al

call Pause mov al, ah

end;

procedure WriteByte(Addr:Word; B : Byte); begin

Start;

PutByte($A0 or ((Hi(Addr) shl 1) and $0e)); PutByte(Lo(Addr));

PutByte(B);

Stop;

Delay(5);

end;

function ReadByte(Addr:Word): Byte; begin

Start;

PutByte($A0 or ((Hi(Addr) shl 1) and $0e)); PutByte(Lo(Addr));

Start;

PutByte($A1 or ((Hi(Addr) shl 1) and $0e)); ReadByte := GetByte;

Stop;

end;

procedure ComStr; var

PCStr : ^String; i: Byte;

begin

PCStr := Ptr(PrefixSeg, $80);

for i := 0 to length(PCStr^) -1 do if PCStr^[i] in ['-', '/'] then begin

case PCStr^[i+1] of

'r', 'R' : Mode := mRead;

'w', 'W' : Mode := mWrite; else Mode := mError;

end;

Delete(PCStr^, i, 2); Break;

end;

if ParamCount = 0 then Mode := mError else FileName := ParamStr(1);

end;

begin

LPT1 :=

$378;

asm

mov dx,

lpt1

mov al,

00000110b {Vcc = 1}

out dx, al end;

ComStr;

Assign(F, FileName); case Mode of

mRead: begin

for A:= 0 to 2047 do Buf[A] := ReadByte(A); Rewrite(F, 1);


if IOResult = 0 then begin

BlockWrite(F, Buf, SizeOf(Buf)); Close(F);

end; end;

mWrite: begin

Reset(F, 1);

if IOResult = 0 then begin

BlockRead(F, Buf, SizeOf(Buf)); Close(F);

for A:= 0 to 2047 do WriteByte(A, Buf[A]); end;

end; mError: begin

WriteLn('24c16 fileName -r|-w'); WriteLn(' -r Read');

WriteLn(' -w Write'); end;

end;

end.

Jbkmghd Ih^dexq_gb_,2&mkljhckl\Z d/37ihjlm

JZamf__lky \ ^Zgghc klZlv_ g_\hafh`gh hibkZlv iheghklvx \k_ gxZgku nmgdpbhgbjh\Zgby rbgu,2&gh ih djZcg_c f_j_ fh`gh ihemqblv h g_c h[s__ ij_^klZ\e_gb_ >ey [he__ ihegh]h bamq_gby fh`gh ihkh- \_lh\Zlv

∙\ bgl_jg_l_

hibkZgby we_f_glh\ k rbghc 2& gZijbf_j ^ZlZrblu ,2& ((3520 k_jbb ;;;

nbjfu

fbdjhko_f nbjfu 3KLOLSV b ^jm]b_

OZjvdh\