80x86΢»úÔ­ÀíÓë½Ó¿Ú¼¼ÊõʵÑéÖ¸µ¼Êé ÏÂÔØ±¾ÎÄ

MOV [SI], AX ;ÌîIRQ7µÄ¶ÎµØÖ·Ê¸Á¿ CLI POP DS

;³õʼ»¯Ö÷Ƭ8259

MOV AL, 11H OUT 20H, AL ;ICW1 MOV AL, 08H OUT 21H, AL ;ICW2 MOV AL, 04H OUT 21H, AL ;ICW3 MOV AL, 01H OUT 21H, AL ;ICW4 MOV AL, 6FH ;OCW1 OUT 21H, AL

;8254

MOV DX, CON8254

MOV AL, 10H ;¼ÆÊýÆ÷0£¬·½Ê½0 OUT DX, AL MOV DX, A8254 MOV AL, 04H OUT DX, AL STI

AA1: JMP AA1 IRQ7: MOV DX, A8254

MOV AL, 04H OUT DX, AL MOV AX, 014DH INT 10H ;ÏÔʾ×Ö·ûM MOV AX, 0120H INT 10H MOV AL, 20H

OUT 20H, AL ;ÖжϽáÊøÃüÁî IRET

CODE ENDS

END START

2. ¶¨Ê±Ó¦ÓÃʵÑé

±àд³ÌÐò£¬½«8254 µÄ¼ÆÊýÆ÷0 ÉèÖÃΪ·½Ê½3£¬ÓÃÐźÅÔ´1MHz ×÷ΪCLK0ʱÖÓ£¬OUT0 Ϊ²¨ÐÎÊä³ö1ms ·½²¨¡£ ʵÑé³ÌÐòÇåµ¥

A8254 EQU 06C0H B8254 EQU 06C2H C8254 EQU 06C4H CON8254 EQU 06C6H SSTACK SEGMENT STACK

DW 32 DUP(?)

SSTACK ENDS CODE SEGMENT

ASSUME CS:CODE

START: MOV DX, CON8254 ;8254

MOV AL, 36H ;¼ÆÊýÆ÷0£¬·½Ê½3 OUT DX, AL MOV DX, A8254 MOV AL, 0E8H OUT DX, AL MOV AL, 03H OUT DX, AL

AA1: JMP AA1 CODE ENDS

END START

ʵÑé²½Ö裺

£¨1£©½ÓÏßͼÈçͼ2-5-3Ëùʾ£»

£¨2£©¸ù¾ÝʵÑéÄÚÈÝ£¬±àдʵÑé³ÌÐò£¬¾­±àÒë¡¢Á´½ÓÎÞÎóºó×°Èëϵͳ£» £¨3£©ÔËÐÐʵÑé³ÌÐò£¬ÓÃʾ²¨Æ÷²âÊÔOUT0 Êä³ö£¬ÑéÖ¤³ÌÐò¹¦ÄÜ¡£

ͼ2-5-3 8254¶¨Ê±Ó¦ÓÃʵÑé½ÓÏßͼ

2.6 8255 ²¢ÐнӿÚʵÑé

2.6.1 ʵÑéÄ¿µÄ

1. ѧϰ²¢ÕÆÎÕ8255 µÄ¹¤×÷·½Ê½¼°ÆäÓ¦Óã» 2. ÕÆÎÕ8255 µäÐÍÓ¦Óõ緵Ľӷ¨¡£

2.6.2 ʵÑéÉ豸

PC»úһ̨£¬TD-PITE ʵÑé×°ÖÃÒ»Ìס£

2.6.3 ʵÑéÄÚÈÝ

1. »ù±¾ÊäÈëÊä³öʵÑé¡£±àд³ÌÐò£¬Ê¹8255 µÄA¿ÚΪÊäÈ룬B¿ÚΪÊä³ö£¬Íê³É²¦¶¯¿ª¹Øµ½Êý¾ÝµÆµÄÊý¾Ý´«Êä¡£ÒªÇóÖ»Òª¿ª¹Ø²¦¶¯£¬Êý¾ÝµÆµÄÏÔʾ¾Í·¢ÉúÏàÓ¦¸Ä±ä¡£

2. Á÷Ë®µÆÏÔʾʵÑé¡£±àд³ÌÐò£¬Ê¹8255 µÄA¿ÚºÍB¿Ú¾ùΪÊä³ö£¬Êý¾ÝµÆD7¡«D0ÓÉ×óÏòÓÒ£¬Ã¿´Î½öÁÁÒ»¸öµÆ£¬Ñ­»·ÏÔʾ£¬D15¡«D8ÓëD7¡«D0 ÕýÏà·´£¬ÓÉÓÒÏò×ó£¬Ã¿´Î½öµãÁÁÒ»¸öµÆ£¬Ñ­

»·ÏÔʾ¡£

2.6.4 ʵÑéÔ­Àí

²¢ÐнӿÚÊÇÒÔÊý¾ÝµÄ×Ö½ÚΪµ¥Î»ÓëI/O É豸»ò±»¿ØÖƶÔÏóÖ®¼ä´«µÝÐÅÏ¢¡£CPUºÍ½Ó¿ÚÖ®¼äµÄÊý¾Ý´«ËÍ×ÜÊDz¢Ðе쬼´¿ÉÒÔͬʱ´«µÝ8 λ¡¢16 λ»ò32 λµÈ¡£8255¿É±à³ÌÍâΧ½Ó¿ÚоƬÊÇIntel¹«Ë¾Éú²úµÄͨÓò¢ÐÐI/O ½Ó¿ÚоƬ£¬Ëü¾ßÓÐA¡¢B¡¢CÈý¸ö²¢Ðнӿڣ¬ÓÃ+5Vµ¥µçÔ´¹©µç£¬ÄÜÔÚÒÔÏÂÈýÖÖ·½Ê½Ï¹¤×÷£º·½Ê½0--»ù±¾ÊäÈë/Êä³ö·½Ê½¡¢·½Ê½1--ѡͨÊäÈë/Êä³ö·½Ê½¡¢·½Ê½2--Ë«Ïòѡͨ¹¤×÷·½Ê½¡£8255 µÄÄÚ²¿½á¹¹¼°Òý½ÅÈçͼ2-6-1 Ëùʾ£¬8255¹¤×÷·½Ê½¿ØÖÆ×ÖºÍC¿Ú°´Î»ÖÃλ/¸´Î»¿ØÖÆ×Ö¸ñʽÈçͼ2-6-2Ëùʾ¡£

ͼ2-6-1 8255ÄÚ²¿½á¹¹¼°ÍⲿÒý½Åͼ

ͼ2-6-2 8255¿ØÖÆ×Ö¸ñʽ

2.6.5 ʵÑé²½Öè

1. »ù±¾ÊäÈëÊä³öʵÑé

±¾ÊµÑéʹ8255 ¶Ë¿ÚA¹¤×÷ÔÚ·½Ê½0 ²¢×÷ΪÊäÈë¿Ú£¬¶Ë¿ÚB¹¤×÷ÔÚ·½Ê½0 ²¢×÷ΪÊä³ö¿Ú¡£ÓÃÒ»×鿪¹ØÐźŽÓÈë¶Ë¿ÚA£¬¶Ë¿ÚB Êä³öÏß½ÓÖÁÒ»×éÊý¾ÝµÆÉÏ£¬È»ºóͨ¹ý¶Ô8255 оƬ±à³ÌÀ´ÊµÏÖÊäÈëÊä³ö¹¦ÄÜ¡£¾ßÌåʵÑé²½ÖèÈçÏÂÊö£º

£¨1£©ÊµÑé½ÓÏßͼÈçͼ2-6-3Ëùʾ£¬°´Í¼Á¬½ÓʵÑéÏß·ͼ£»

£¨2£©±àдʵÑé³ÌÐò£¬¾­±àÒë¡¢Á¬½ÓÎÞÎóºó×°Èëϵͳ£»

£¨3£©ÔËÐгÌÐò£¬¸Ä±ä²¦¶¯¿ª¹Ø£¬Í¬Ê±¹Û²ìLED ÏÔʾ£¬ÑéÖ¤³ÌÐò¹¦ÄÜ¡£

ͼ2-6-3 8255»ù±¾ÊäÈëÊä³öʵÑé½ÓÏßͼ

ʵÑé³ÌÐòÇåµ¥

SSTACK SEGMENT STACK

DW 32 DUP(?)

SSTACK ENDS CODE SEGMENT

ASSUME CS:CODE

START: MOV DX, 0646H

MOV AL, 90H OUT DX, AL

AA1: MOV DX, 0640H

IN AL, DX CALL DELAY MOV DX, 0642H OUT DX, AL JMP AA1

DELAY: PUSH CX

MOV CX, 0F00H

AA2: PUSH AX

POP AX LOOP AA2 POP CX RET

CODE ENDS

END START

2. Á÷Ë®µÆÏÔʾʵÑé

ʹ8255µÄA¿ÚºÍB¿Ú¾ùΪÊä³ö£¬Êý¾ÝµÆD7¡«D0 ÓÉ×óÏòÓÒ£¬Ã¿´Î½öÁÁÒ»¸öµÆ£¬Ñ­»·ÏÔʾ£¬D15¡«D8 ÓëD7¡«D0ÕýÏà·´£¬ÓÉÓÒÏò×ó£¬Ã¿´Î½öµãÁÁÒ»¸öµÆ£¬Ñ­»·ÏÔʾ¡£ÊµÑé½ÓÏßͼÈçͼ2-6-5Ëùʾ¡£ÊµÑé²½ÖèÈçÏÂËùÊö£º

£¨1£©°´Í¼2-6-5Á¬½ÓʵÑéÏß·ͼ£»

£¨2£©±àдʵÑé³ÌÐò£¬¾­±àÒë¡¢Á´½ÓÎÞÎóºó×°Èëϵͳ£» £¨3£©ÔËÐгÌÐò£¬¹Û²ìLED µÆµÄÏÔʾ£¬ÑéÖ¤³ÌÐò¹¦ÄÜ£»