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

ÄÚÈÝ·¢²¼¸üÐÂʱ¼ä : 2025/5/9 3:06:31ÐÇÆÚÒ» ÏÂÃæÊÇÎÄÕµÄÈ«²¿ÄÚÈÝÇëÈÏÕæÔĶÁ¡£

˳Ðò»áÔì³ÉÒì³£³õʼ»¯¡£ÔÚ³õʼ»¯Ö÷Ƭ8259 ʱ£¬Ð´Èë³õʼ»¯ÃüÁî×ÖµÄ˳ÐòÊÇ£ºICW1¡¢ICW2¡¢ICW3¡¢È»ºóÊÇICW4£¬³õʼ»¯´ÓƬ8259 µÄ˳ÐòÓë³õʼ»¯Ö÷Ƭ8259 µÄ˳ÐòÊÇÏàͬµÄ¡£

ϵͳÆô¶¯Ê±£¬Ö÷Ƭ8259 Òѱ»³õʼ»¯£¬ÇÒ4 ºÅÖжÏÔ´£¨IR4£©Ìṩ¸øÓëPC Áª»úµÄ´®¿ÚͨÐÅʹÓã¬ÆäËüÖжÏÔ´±»ÆÁ±Î¡£ÖжÏʸÁ¿µØÖ·ÓëÖжϺÅÖ®¼äµÄ¹ØÏµÈçϱíËùʾ£º 2. 8259 µ¥ÖжÏʵÑé

ʵÑé½ÓÏßͼÈçͼ2-3-11Ëùʾ£¬µ¥´ÎÂö³åÊä³öÓëÖ÷Ƭ8259 µÄIR7 ÏàÁ¬£¬Ã¿°´¶¯Ò»´Îµ¥´ÎÂö³å£¬²úÉúÒ»´ÎÍⲿÖжϣ¬ÔÚÏÔʾÆÁÉÏÊä³öÒ»¸ö×Ö·û¡°7¡±¡£

ͼ2-3-11 8259µ¥ÖжÏʵÑé½ÓÏßͼ

ʵÑé³ÌÐòÇåµ¥

SSTACK SEGMENT STACK

DW 32 DUP(?)

SSTACK ENDS CODE SEGMENT

ASSUME CS:CODE

START: PUSH DS

MOV AX, 0000H MOV DS, AX

MOV AX, OFFSET MIR7 ;È¡ÖжÏÈë¿ÚµØÖ· MOV SI, 003CH ;ÖжÏʸÁ¿µØÖ· MOV [SI], AX ;ÌîIRQ7µÄÆ«ÒÆÊ¸Á¿ MOV AX, CS ;¶ÎµØÖ· MOV SI, 003EH

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 STI

AA1: NOP

JMP AA1

MIR7: STI

CALL DELAY MOV AX, 0137H INT 10H ;ÏÔʾ×Ö·û7 MOV AX, 0120H INT 10H MOV AL, 20H

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

DELAY: PUSH CX

MOV CX, 0F00H

AA0: PUSH AX

POP AX LOOP AA0 POP CX RET

CODE ENDS

END START

ʵÑé²½Öè

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

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

£¨3£©ÔËÐгÌÐò£¬Öظ´°´µ¥´ÎÂö³å¿ª¹ØKK1£«£¬ÏÔʾÆÁ»áÏÔʾ×Ö·û¡°7¡±ÒÔ˵Ã÷ÏìÓ¦ÁËÖжϡ£

2.5 8254 ¶¨Ê±/¼ÆÊýÆ÷Ó¦ÓÃʵÑé

2.5.1 ʵÑéÄ¿µÄ

1. ÕÆÎÕ8254 µÄ¹¤×÷·½Ê½¼°Ó¦Óñà³Ì£» 2. ÕÆÎÕ8254 µäÐÍÓ¦Óõ緵Ľӷ¨¡£

2.5.2 ʵÑéÉ豸

PC»úһ̨£¬TD-PITE ʵÑé×°ÖÃÒ»Ì×£¬Ê¾²¨Æ÷һ̨¡£

2.5.3 ʵÑéÄÚÈÝ

1. ¼ÆÊýÓ¦ÓÃʵÑé¡£±àд³ÌÐò£¬Ó¦ÓÃ8254 µÄ¼ÆÊý¹¦ÄÜ£¬Ê¹Óõ¥´ÎÂö³åÄ£Äâ¼ÆÊý£¬Ê¹Ã¿µ±°´¶¯¡®KK1£«¡¯5 ´Îºó£¬²úÉúÒ»´Î¼ÆÊýÖжϣ¬²¢ÔÚÆÁÄ»ÉÏÏÔʾһ¸ö×Ö·û¡®M¡¯¡£

2. ¶¨Ê±Ó¦ÓÃʵÑé¡£±àд³ÌÐò£¬Ó¦ÓÃ8254 µÄ¶¨Ê±¹¦ÄÜ£¬²úÉúÒ»¸ö1ms µÄ·½²¨¡£

2.5.4 ʵÑéÔ­Àí

8254 ÊÇIntel ¹«Ë¾Éú²úµÄ¿É±à³Ì¼ä¸ô¶¨Ê±Æ÷¡£ÊÇ8253 µÄ¸Ä½øÐÍ£¬±È8253 ¾ßÓиüÓÅÁ¼µÄÐÔÄÜ¡£8254 ¾ßÓÐÒÔÏ»ù±¾¹¦ÄÜ£º

£¨1£©ÓÐ3 ¸ö¶ÀÁ¢µÄ16 λ¼ÆÊýÆ÷£»

£¨2£©Ã¿¸ö¼ÆÊýÆ÷¿É°´¶þ½øÖÆ»òÊ®½øÖÆ£¨BCD£©¼ÆÊý£» £¨3£©Ã¿¸ö¼ÆÊýÆ÷¿É±à³Ì¹¤×÷ÓÚ6 ÖÖ²»Í¬¹¤×÷·½Ê½£»

£¨4£©8254 ÿ¸ö¼ÆÊýÆ÷ÔÊÐíµÄ×î¸ß¼ÆÊýƵÂÊΪ10MHz£¨8253 Ϊ2MHz£©£»

£¨5£©8254 ÓжÁ»ØÃüÁ8253 ûÓУ©£¬³ýÁË¿ÉÒÔ¶Á³öµ±Ç°¼ÆÊýµ¥ÔªµÄÄÚÈÝÍ⣬»¹¿ÉÒÔ

¶Á³ö״̬¼Ä´æÆ÷µÄÄÚÈÝ£»

£¨6£©¼ÆÊýÂö³å¿ÉÒÔÊÇÓйæÂɵÄʱÖÓÐźţ¬Ò²¿ÉÒÔÊÇËæ»úÐźš£¼ÆÊý³õÖµ¹«Ê½Îª£º

n=fCLKi¡ÂfOUTi¡¢ÆäÖÐfCLKiÊÇÊäÈëʱÖÓÂö³åµÄƵÂÊ£¬fOUTiÊÇÊä³ö²¨ÐÎµÄÆµÂÊ¡£

ͼ2-5-1 ÊÇ8254 µÄÄÚ²¿½á¹¹¿òͼºÍÒý½Åͼ£¬ËüÊÇÓÉÓëCPU µÄ½Ó¿Ú¡¢ÄÚ²¿¿ØÖƵç·ºÍÈý¸ö¼ÆÊýÆ÷×é³É¡£8254 µÄ¹¤×÷·½Ê½ÈçÏÂÊö£º

£¨1£©·½Ê½0£º¼ÆÊýµ½0 ½áÊøÊä³öÕýÔ¾±äÐźŷ½Ê½¡£ £¨2£©·½Ê½1£ºÓ²¼þ¿ÉÖØ´¥·¢µ¥ÎÈ·½Ê½¡£ £¨3£©·½Ê½2£ºÆµÂÊ·¢ÉúÆ÷·½Ê½¡£ £¨4£©·½Ê½3£º·½²¨·¢ÉúÆ÷¡£

£¨5£©·½Ê½4£ºÈí¼þ´¥·¢Ñ¡Í¨·½Ê½¡£ £¨6£©·½Ê½5£ºÓ²¼þ´¥·¢Ñ¡Í¨·½Ê½¡£

ͼ2-5-1 8254µÄÄÚ²¿½Ó¿ÚºÍÒý½Å

8254 µÄ¿ØÖÆ×ÖÓÐÁ½¸ö£ºÒ»¸öÓÃÀ´ÉèÖüÆÊýÆ÷µÄ¹¤×÷·½Ê½£¬³ÆÎª·½Ê½¿ØÖÆ×Ö£»ÁíÒ»¸öÓÃÀ´ÉèÖöÁ»ØÃüÁ³ÆÎª¶Á»Ø¿ØÖÆ×Ö¡£ÕâÁ½¸ö¿ØÖÆ×Ö¹²ÓÃÒ»¸öµØÖ·£¬ÓɱêʶλÀ´Çø·Ö¡£¿ØÖÆ×Ö¸ñʽÈç±í2-5-1Ëùʾ¡£

±í2-5-1 8254µÄ·½Ê½¿ØÖÆ×Ö¸ñʽ

±í2-5-2 8254¶Á³ö¿ØÖÆ×Ö¸ñʽ

±í2-5-3 8254״̬×Ö¸ñʽ

2.5.5 ʵÑé²½Öè

1. ¼ÆÊýÓ¦ÓÃʵÑé

±àд³ÌÐò£¬½«8254 µÄ¼ÆÊýÆ÷0 ÉèÖÃΪ·½Ê½3£¬¼ÆÊýֵΪʮ½øÖÆÊý4£¬Óõ¥´ÎÂö³åKK1£«×÷ΪCLK0 ʱÖÓ£¬OUT0 Á¬½ÓMIR7£¬Ã¿µ±KK1£«°´¶¯5 ´Îºó²úÉúÖжÏÇëÇó£¬ÔÚÆÁÄ»ÉÏÏÔʾ×Ö·û¡°M¡±¡£

ʵÑé²½Ö裺

£¨1£©ÊµÑé½ÓÏßÈçͼ2-5-2Ëùʾ£»

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

£¨3£©ÔËÐгÌÐò£¬°´¶¯KK1£«²úÉúµ¥´ÎÂö³å£¬¹Û²ìʵÑéÏÖÏó£» £¨4£©¸Ä±ä¼ÆÊýÖµ£¬ÑéÖ¤8254 µÄ¼ÆÊý¹¦ÄÜ¡£

ͼ2-5-2 8254¼ÆÊýÓ¦ÓÃʵÑé½ÓÏßͼ

ʵÑé³ÌÐòÇåµ¥

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, SS:SSTACK

START: PUSH DS

MOV AX, 0000H MOV DS, AX

MOV AX, OFFSET IRQ7 ;È¡ÖжÏÈë¿ÚµØÖ· MOV SI, 003CH ;ÖжÏʸÁ¿µØÖ· MOV [SI], AX ;ÌîIRQ7µÄÆ«ÒÆÊ¸Á¿ MOV AX, CS ;¶ÎµØÖ· MOV SI, 003EH