ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 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\