begin process at 2008 08 07 22:30:14
1 223 143 membres
483 nouveaux aujourd'hui
14 227 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

EMISSION-RÉCEPTION DE CARACTÈRES PAR LIAISON SÉRIE SUR PC [TASM;PORT 3F8H-3FFH;IRQ4]


Information sur la source

Catégorie :Systeme Niveau : Initié Date de création : 29/10/2002 Date de mise à jour : 08/12/2002 15:10:58 Vu / téléchargé: 5 710 / 273

Note :
Aucune note

Commentaire sur cette source (9)
Ajouter un commentaire et/ou une note

Description

Ce programme doit être exécuter sur le serveur. Un terminal doit être lancé sur le client à 9600 bits/s, 8 bits de données, 1 bit d'arrêt, aucune parité. Et entre deux, un câble série relié sur COM1.
Pour compiler :
TASM COMV2.ASM
TLINK COMV2

Source

  • .386
  • code segment use16
  • assume cs:code,ds:code
  • prog:
  • cli
  • xor ax,ax
  • mov fs,ax
  • in al,21h ;démasque l'IRQ4
  • and al,0EFh
  • out 21h,al
  • mov ax,cs ;détourne l'IRQ4
  • shl eax,16
  • mov ax,offset irq4
  • mov fs:[0Ch*4],eax
  • mov al,80h ;DLAB=1
  • mov dx,3FBh
  • out dx,al
  • mov dx,3F8h ;9600 bits/s
  • mov al,0Ch
  • out dx,al
  • xor al,al
  • inc dx
  • out dx,al
  • mov dx,3FBh ;8 bits de données, 1 bit d'arrêt, aucune parité, DLAB=0
  • mov al,03h
  • out dx,al
  • mov dx,3FCh ;active l'irq
  • mov al,8
  • out dx,al
  • mov dx,3F9h ;active l'interruption en réception de données
  • mov al,1
  • out dx,al
  • dec dx
  • sti
  • loop1:
  • xor ax,ax
  • int 16h
  • out dx,al ;envoie un caractère
  • cmp ah,01h ;quitte si la touche ESC est pressé
  • jnz loop1
  • mov ax,4C00h
  • int 21h
  • irq4: ;écrit le caractère reçu
  • push ax
  • push dx
  • mov dx,3F8h ;lit un caractère du tampon de réception
  • in al,dx
  • mov ah,0Eh ;l'affiche à l'écran
  • int 10h
  • mov al,20h ;EOI
  • out 20h,al
  • pop dx
  • pop ax
  • iret
  • code ends
  • end prog
.386
code	segment use16
assume cs:code,ds:code
prog:
	cli
	xor	ax,ax
	mov	fs,ax
	
	in	al,21h		;démasque l'IRQ4
	and	al,0EFh
	out	21h,al
	
	mov	ax,cs		;détourne l'IRQ4
	shl	eax,16
	mov	ax,offset irq4
	mov	fs:[0Ch*4],eax
	
	mov	al,80h		;DLAB=1
	mov	dx,3FBh
	out	dx,al
	
	mov	dx,3F8h		;9600 bits/s
	mov	al,0Ch
	out	dx,al
	xor	al,al
	inc	dx
	out	dx,al
	
	mov	dx,3FBh		;8 bits de données, 1 bit d'arrêt, aucune parité, DLAB=0
	mov	al,03h
	out	dx,al
	
	mov	dx,3FCh		;active l'irq
	mov	al,8
	out	dx,al
	
	mov	dx,3F9h		;active l'interruption en réception de données
	mov	al,1
	out	dx,al

	dec	dx

	sti
loop1:
	xor	ax,ax
	int	16h
	out	dx,al		;envoie un caractère
	
	cmp	ah,01h		;quitte si la touche ESC est pressé
	jnz	loop1
	mov	ax,4C00h
	int	21h
	
irq4:				;écrit le caractère reçu
	push	ax
	push	dx
	mov	dx,3F8h		;lit un caractère du tampon de réception
	in	al,dx
	mov	ah,0Eh		;l'affiche à l'écran
	int	10h
	mov	al,20h		;EOI
	out	20h,al
	pop	dx
	pop	ax
	iret

code	ends
end	prog

Conclusion

Mis à jour pour l'emission de caractères, je n'ai pas jugé utile d'en faire une nouvelle source vu que seulement quelques lignes sont à ajouter.
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

  • signaler à un administrateur
    Commentaire de nassimux le 10/05/2004 16:32:28

    Bonjour;

    Beau travail ce protocole, mais je voudrais si c'est possible savoir le cablage adéquat de la liaison série de ce protocole
    Merci
    Nassimux

  • signaler à un administrateur
    Commentaire de GuruMeditation le 10/05/2004 22:19:52

    Bon après avoir posté cette source, j'en ai appris davantage sur la liaison rs232.
    Il faut un cable croisé "null-modem" pour relier 2 PC par exemple. Si les 2 connecteurs du cable sont de 9 broches (non normalisés) alors il faut relier
    3 -> 2
    2 -> 3
    7 -> 8
    8 -> 7
    5 -> 5
    6 -> 4
    4 -> 6

    Il existe également le cable "3 fils" et le cablage "5 fils" qui sont croisés aussi mais non normalisés et qui shunte en faite les contrôles de flux matérielles.

    lien utile : www.beyondlogic.org

  • signaler à un administrateur
    Commentaire de nassimux le 13/05/2004 20:05:24

    Je te remercie, pour ce protocole, mais dis moi, puisque les connecteurs ont 9 broches, comment faire pour les autres broches, c-à-d, N°1 et N°9.
    Bref, dernière question, est ce que ce protocole est valable pour l'émission et la récéption, ou bien l'une d'elle
    Merci d'avance
    Nassimux

  • signaler à un administrateur
    Commentaire de GuruMeditation le 13/05/2004 20:22:07

    le 1 et 9 ne servent pas pour faire un cable croisé, ils ne servent qu'avec un modem. Sinon ce cable est bidirectionnel.

  • signaler à un administrateur
    Commentaire de nassimux le 13/05/2004 20:25:53

    Je te remercie, pour m'avoir répondu, mais j'aimerai avoir une réponse à ma deuxième question :-) en ce qui concerne le protocole s'il est déstiné à l'émission ou la récéption oubien les deux en même temps.
    Merci
    Nassimux

  • signaler à un administrateur
    Commentaire de GuruMeditation le 13/05/2004 20:30:59

    les 2

  • signaler à un administrateur
    Commentaire de nassimux le 13/05/2004 20:35:50

    Ha d'accord maintenant, je commence à y voir plus claire, mais en faisant confiance à mes connaissance, je crois que l'émission a besoin d'it récéption, mais pour la récéption c'est l'it récéption et l'it modem, donc je te demande s'il n'y a pas d'autre fonctions à ajouter?
    Merci
    Nassimux

  • signaler à un administrateur
    Commentaire de GuruMeditation le 13/05/2004 20:51:31

    ça fait longtemps que j'ai pas touché a ce code ci dessus, mais il me semble qu'il marche en émission et en réception. Ensuite pour emettre, je ne voit pas trop l'utilité des it. Dans ce code j'ai juste utilisé l'it de réception pour recevoir, rien pour emettre.

  • signaler à un administrateur
    Commentaire de nassimux le 16/05/2004 19:42:21

    Bonjour;

    Je te remercie, pour toutes les informations que tu m'as donné, j'aimerai te demander si c'est possible de me donner d'avantages informations sur les lignes de code de ce programme Assembleur.
    Je te remercie d'avance.
    Nassimux

Ajouter un commentaire

Pub



Appels d'offres

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Boutique

Boutique de goodies CodeS-SourceS