17£®ADC0809ºÍ8255AÁ¬½ÓÈçͼ8.81Ëùʾ¡£8255AµÄA¿Ú¹¤×÷ÓÚ·½Ê½1ÊäÈë¡£µ±ADC0809ת»»½áÊøÊ±£¬EOCµÄÉÏÉýÑØ´¥·¢µ¥ÎÈ̬µç·DW£¬DWÊä³öµÄ¸ºÂö³å×÷ΪѡͨÂö³å£¬½«ADC0809µÄÊä³öÊý¾ÝËø´æ½øA¿Ú¡£ÓÃÖжϷ½Ê½ÒÀ´Î½«IN7¡«IN0²ÉÑùÒ»±é£¬·Åµ½BUFFER¿ªÊ¼µÄÊý¾Ý»º³åÇø£¬ÊÔ±à³Ì¡£Éè8255A¿ÚµØÖ·Îª200H¡«203H£¬8259µÄµØÖ·Îª020H¡¢021H£¬IRQ2ÖжÏÀàÐͺÅΪ0AH£¬8259Òѳõʼ»¯¡£
ͼ8.81 ½â£º
8255µÄPC7Ϊ1Êä³öÆô¶¯Ðźţ¬PC0¡«PC2ʵÏÖͨµÀÑ¡Ôñ£¬A/Dת»»½áÊøÐźſɴÓPC4»ñµÃ£¬PC3Ϊ1Êä³öÖжϡ£ £»Ö÷³ÌÐò
STACK SEGMENT STACK
STA DB 20 DUP£¨£¿£© TOP LABEL WORD STACK ENDS DATA SEGMENT
BUFFER DB 8 DUP£¨£¿£© DATA ENDS CODE SEGMENT
ASSUME CS£ºCODE£¬DS£ºDATA£¬SS£ºSTACK START£º MOV AX£¬DATA MOV DS£¬AX MOV AX£¬STACK MOV SS£¬AX
MOV SP£¬OFFSET TOP
PUSH DS £»ÖжÏÏòÁ¿ËÍÖжÏÏòÁ¿±í MOV AX£¬SEG ADINT MOV DS£¬AX
MOV DX£¬OFFSET ADINT MOV AL£¬0AH MOV AH£¬25H INT 21H POP DS
MOV DX£¬021H £»¿ª·ÅIRQ2ÖÐ¶Ï IN AL£¬DX
AND AL£¬1111 10llB OUT DX£¬AL
MOV DI£¬OFFSET BUFFER £»»º³åÇøÆðʼµØÖ·ËÍDI STD £»DFÖÃ1
STI £»¿ªÖÐ¶Ï MOV CX£¬8 MOV BL£¬90H
NEXT£ºMOV DX£¬202H
MOV AL£¬BL
OUT DX£¬AL £»Æô¶¯0809 AND AL£¬7FH OUT DX£¬AL
WAIT£ºIN AL£¬DX TEST AL£¬10H
JNZ WAIT £»¼ì²âPC4״̬£¬·Ç0£¬A/Dת»»Ã»½áÊø MOV AL£¬07H MOV DX£¬203H
OUT DX£¬AL £»PC3ÖÃ1£¬Êä³öÖÐ¶Ï HLT
INC BL LOOP NEXT
CLI £»²É¼¯Íê8¿Ú£¬½áÊø MOV AH£¬4CH INT 2IH £»ÖжϷþÎñ³ÌÐò
ADINT PROC NEAR
PUSH DX MOV DX£¬200
IN AL£¬DX £»¶Áȡת»»½á¹û STOSB £»ËÍÖ¸¶¨ÄÚ´æµ¥Ôª MOV DX£¬20H £»·¢ÖжϽáÊøÃüÁî MOV AL£¬20H OUT DX£¬AL POP DX
IRET
ADINT ENDP CODE ENDS
END START
18£®ADCµÄÒýÏßͼ¼°¹¤×÷ʱÐòÈçͼ8.82Ëùʾ¡£ÊÔ½«´ËADCÓë8255ÏàÁ¬½Ó£¬²¢±àд°üÀ¨³õʼ»¯³ÌÐòÔÚÄڵġ¢±ä»»Ò»´ÎÊý¾Ý²¢½«Êý¾Ý·ÅÔÚDATAÖеijÌÐò¡£
ͼ8.82
19£® ÊÔÀûÓÃ8255A¡¢ADC0809Éè¼ÆÒ» IBM PC»ú A£¯Dת»»½Ó¿Ú¿¨£¬8255AµÄµØÖ·Îª02C0H¡«02C3H£¬ÓÉϵͳ°åÉϵÄ8253¶¨Ê±Æ÷0¿ØÖÆÃ¿¸ô5Ãë²ÉÑùÒ»±éADC0809µÄ8·ģÄâÊäÈ룬²¢½«²É¼¯µÄÊý×ÖÁ¿ÏÔʾÓÚCRTÆÁÄ»ÉÏ¡£ ½â£º
20£®¼òÊö82380DMA¿ØÖÆÆ÷Óë8237µÄ¼æÈÝÐÔ¡£
21£®82380DMA¿ØÖÆÆ÷ÖУ¬Èç¹ûÉèÖÃΪȫѻ·ÓÅÏȼ¶£¬Í¨µÀ2×îµÍÓÅÏȼ¶£¬Í¨µÀ4×îµÍÓÅÏȼ¶¡£Ôò¿ªÊ¼Ê±¸÷ͨµÀµÄÓÅÏÈ˳ÐòÊÇÔõÑùÅÅÁеģ¿ÈôͨµÀ2Íê³ÉDMA·þÎñºó£¬¸÷ͨµÀµÄÓÅÏÈ˳ÐòÓÖÊÇÈçºÎÅÅÁеģ¿
22£®¼òÊö82380ÖжϿØÖÆÆ÷PICµÄ¹¦ÄÜ¡£