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 µÆµÄÏÔʾ£¬ÑéÖ¤³ÌÐò¹¦ÄÜ£»