بسم الله الرحمن الرحيم
السلام عليكم ورحمه الله وبركاته
--أولآ-- عمل عداد بعده لغات واخراجه من منفذ الطابعه
يتكون البرنامج من عداد عباره عن حلقه --LOOP -- وكود للتآخير --DELAY -- ثم آخيرا أمر أخراج من منفذ الطابعه -- OUT --
-- يمكن تجربه الرامج بواسطه توصيل 8 ثنائيات ضوئيه الى منفذ الطابعه -- PORT A -- الأطراف
من 2 الى 9 -- أو بواسطه أستخدام برنامج محاكى منفذ الطابعه ونحصل عليه من الرابطه
http://www.geekhideout.com/parmon.shtml
--1- بأستخدام الفيجوال بيسك
فى هذه الحاله سنحتاج الى مكتبه INPOUT.DLL نحصل عليها من هذه الرابطه مع شرح
لأستخدام منفذ الطابعه بواسطه الفيجوال بيسك
http://www.c4arab.com/showlesson.php?lesid=738
Private Declare Sub out Lib "inpout32.dll" Alias "Out32" (ByVal portaddress As Integer, ByVal value As Integer) Private Declare Function inp Lib "inpout32.dll" Alias "Inp32" (ByVal portaddress As Integer) As Integer Dim z As Boolean Private Sub Command1_Click() Do Until z = False For x = 0 To 15 dealy 1 out &H378, x Next x DoEvents Loop End Sub Sub dealy(i As Long) j = Timer + 1 Do Until j <= Timer Loop End Sub Private Sub Command1_KeyDown(KeyCode As Integer, Shift As Integer) z = False End Sub Private Sub Form_Load() z = True End Sub
-- 2--بأستخدام الفيجوال سى
نعمل مشروع من نوع CONSOLE ثم ملف من نوع CPP ثم نكتب هذا الكود فيه
#include "conio.h"
int main()
{
int i,z;
do
{for(i=0;i<=15;i++)
{for(z=0;z<100000;z++)
_outp(0x378,i);}
}while(!kbhit());
return 0;
}-- 3 -- بواسطه دلفى
يوجد طريقتان للتعامل مع منفذ الطابعه فى دلفى
الأولى بواسطه كتابه كود أسمبلى داخل دلفى كالأتى
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure outp(data:byte;add:word);
begin
asm
mov al,data
mov dx,add
out dx,al
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
x:byte;
begin
x:=0;
repeat
outp(x,$378);
sleep(1000);
x:=x+1;
until x=15
end;
end.والثانيه بأستخدام مكتبه IO.DLL ونحصل عليها من الرابطه
http://www.geekhideout.com/iodll.shtml
والكود كالأتى
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure PortOut(Port:Word;Data:Byte);stdcall;external'io.dll';
function PortIn(PowrtWord:Byte):Byte;stdcall;external'io.dll';
procedure TForm1.Button1Click(Sender: TObject);
var
x:byte;
begin
x:=0;
repeat
PortOut(888,x);
sleep(1000);
x:=x+1;
until x=15
end;
end.-- 4 -- بواسطه أسمبلى masm 16_bit
.model small .stack 100h .code main proc far mov bl,00 loop1: mov cx,0fffh loop2: mov ax,0ffffh loop3: dec ax jnz loop3 dec cx jnz loop2 mov dx,378h mov al,bl out dx,al inc bl cmp bl,0ffh jnz loop1 mov ah,4ch int 21h main endp end main
--5-- عمل عداد ثنائى من 00000000 الى 11111111 بواسطه أسمبلى للمتحكم
microcontroller 16f84
processor 16f84 include <p16f84.inc> __config _RC_OSC & _WDT_OFF & _PWRTE_ON J equ H'1F' K equ H'1E' org 0 movlw B'00000000' tris PORTB movlw B'00000001' movwf PORTB bcf STATUS,C mloop: incfsz PORTB,f movlw D'50' movwf J jloop: movwf K kloop: decfsz K,f goto kloop decfsz J,f goto jloop goto mloop end
ويمكن تجربه هذا البرنامج بواسطه MPLAB والدائره كما فى الرابطه












