You are on page 1of 1

PROGFAMA

{,.., Codigo gerado automaticamente pelo Delohi ... else


Acima deste ponto, estará a parte do código criado automatica- edContMask.Text :-'$'+ lntToHex(ggo XOR ÍOport.portData,2);
m6Ílte pêlo Delphi: as bibliotecas utilizadas, ó código para criar os end;
componentes que você arrastou para o Íorm, etc,)
procedure TForm'l.spBtnEscreverOlick(Sender: TObiect);

üir begin onde I

Forml: TForml; // Variávet criada pelo Detphi. // Note que a propriedade portData requer uma d
, i : lnteger; /f <- Contador - ïariávet otobal ao Form ll
um valor inteiro, logo, é necessário tanto, I
lmpfementation // Você deve criar a variáíel i (basta digi- // converter o conteúdo do edCont.Text -
// tar a tinha marcada com asierisco - tem lit
{$H
-.OfU} // @igite abaixo da variávet Formil
// o edit que possui o valor que deve ser
// escrito na porta - que é siring bits dl
//... Evento gerado na criação do Íorm lgport.PortData := StrTolnt(edc ont.T|ext);/i edCont.Táxt -> Dada cessá
//(runìime). lOport.Write; // Escreve o dado' tância
// Define o conteúdo do edBase como end;
// o endereço da porta. Co
püoced ure TForm 1 . FormC reate(Sendè r : TObject) píooeduÍe TForm 1 .RGregClick(Sender: TObject) síveis
begin ;
//Como a propriedade Text é uma string, begin
;

tras Ío
//converte-a para intëiro { Defineo enderep da porta a partir do conteúdo do edBase +
lOport. PortAddress := StrTotn(úBãsó.ié*í; o valor do índice selecionado do RGreg: $37g ou $379) e)(tern
lnd; lOport.PortAddress := StrTolnt(edBasó.text; + RGreg.itemlndex; o bam
última
if RGreg.ltemlndex = 1 then // Se o item'Estado'estiver neces
ll ............ Botão'OK'- Fecha a aplicação spBtnEscrever.Enabled := False // selecionado, desabitita o
pfoc+dure TForm1. bitBtnFecharOtick(Sender: TObjeci); else // botão bfrtEscrever, caso toep
hegin spBtnEscrever.Enabled := True; // contrário, habitita muito
Close; // Close: encerra a apticação end; En
thd;
você F
// Ativa/Desativa o timer
plocêdure TForml .spBtnlerOlick(Sender: TObject); procedure TForrh'l.spBtnlEDsClick(Sender: TObject); ça, éi
bègin begin nicas
lOport. PortAddress := $378; na co
ll Para tazer a leitura, deve-se primeiro //
Seta endereço da porta (Dados)
ll detinir qual será o endereço lOport.PortData := g0;
// Seta dado a' ser eàviado' ternos
// Para isto, converte-se o valor lOport.Write; // Escreve dado D7..D0 = nível 0 terfacr
ll da propriedade Tpxt do edBase (que i:=0; // Atribui 0 ao contador No
// contém o endereço base da porta Timerl .Enabled := Not Timerl .Enabled; // Habitita o Timer
ll paralela) e soma-se a ele o índice remG
end;
// do item selecionado no RadioGroup nativo
// Rgreg, pois se o item selecionado' desen
// Íor o primeiro (.Dados'), o valor ltemlndex procedure TForml .Timerl Time(Sender: TObject);
// será igual a zero, que e maÍ
begin
// somado ao endereço base da porta, lOport.PortAddress := 9378;
// dará justamente 9378, ou seja, a // Seta endereço da porta (Dados)
ll leilura será feita no registro de Dados.
// Se o item selecionadofor o segundo case RGmodo.ltemlndex oÍ
// ('Dados'), o valor ltemlndex // Se o ltemlndex do RadioG2 = 0
// será igual a 1, que somado ao 0:.bègin // (se lo. item está selecionado):
// enderéço base ãa porta, dará $979, lOport.lnvBit(i); tt -, lnverte o bÍt ordem'i'
// ou seja, a leitura será feita no registro iÍ i = 8 then i:=-1' 11 *-.., reinicia o contador i
// de Estado. end; // Vide efeito na fig.7
// Efeitol: loop de I passos
eortRUdress = StrTol nt(edBase.Text) + FìG reg. ltem ndex;
l^QOort. : I //2o. Etei|ro:
lOport.Read; // Se RadioG2.ltemlndex = 1
ll Lë vator do registro ($378 ou $379), ll (se 2o. item selecionadd)
// converte p/ Hexa edOont (veja helf // então verifica contador e
// do Delphi para a Íunção lntTõHex) case i of // define máscara de bits:
ll Basta, estando no Códe Editor, 0: lOport.PortData:= $8'1; // 10O0OOO1 0 - LED Off
// pressionar F'l sobre a palavra 't: loport.PoÍtData :=$42; // 01000010
1 -LEDOn
2: lOprt.PortData := $24; // 00lOOlOO NÍ
edCont.Text :='$'+ lntToHex( ( loport. portData),2) ; 3: loport.PortData := $18; // ooollooo 1-t
/l A Íunção lntToHex converte um valor 4: loport.PortData := $24; // 00100100
// inteiro - no caso, o valor inteiro nente
5: lOport.turtData := $42; // 0lOO1O|O
// conespondente aos bits lidos da porta end; portaÍ
ll.paralela. A sintaxe da função é lOport.Write; // Escreve máscara na porta cuida
// lntToHex(Valor_lnteiro, Ne.deDígitos) if i=5 then i:=-1 ; // Reinicia o contador integl
//Veja a *ìsir;riço @mpleta atavés end; // Efeito2: loop de 6 passos
// no llelp do Detphi - tecta Fl checa
end;
// Se a leitura Íor Íeita do registro de nha a
//'Dados', basta apenas bre-se
// converter para Hexa, senãq converte if b10 then i:=-1 ; // Segurança contra estouro proiefi
// e mascara os bits invertidos inc(i); // lncrementa o contador i 2_l
// A máscara XOR é feita deüdo ao fato de end; paÍate
// que alguns bits da porta são lidos procedure TForml.RGmodoClick(Sender: TObject);
// iàvertiãos. (Vide ariigo reÍerente begin Wind(
ll à porÌa paralela) i:= -1; 1J P5 um Reset no contador i do Wi
if (RGreg.ltemlndex = 0) then
edoontMask.Text :=,9'+ lntToHex(loport.portData,2)
end; ieto (
end. // Fim do código opera
4d SABER ELETRÔNICA NE 319/99 SABEI