±±ÓÊ.΢»úÔ­ÀíÓ²¼þʵÑ鱨¸æ ÏÂÔØ±¾ÎÄ

ÄÚÈÝ·¢²¼¸üÐÂʱ¼ä : 2025/10/4 11:20:25ÐÇÆÚÒ» ÏÂÃæÊÇÎÄÕµÄÈ«²¿ÄÚÈÝÇëÈÏÕæÔĶÁ¡£

¿É±à¼­°æ

ʵÑé°Ë ¿É±à³Ì¶¨Ê±Æ÷£¯¼ÆÊýÆ÷£¨ 8253/8254 £©

Ò»¡¢ÊµÑéÄ¿µÄ

Ñ§Ï°ÕÆÎÕ8253ÓÃ×÷¶¨Ê±Æ÷µÄ±à³ÌÔ­Àí£»

¶þ¡¢ÊµÑéÔ­ÀíºÍÄÚÈÝ

£¨Ò»£©ÊµÑéÔ­Àí

8253ºÍ8254¶¼Êǿɱà³Ì¼ÆÊýÆ÷£¬ËüÃǵÄÒý½Å¼æÈÝ£¬¹¦ÄÜÓëʹÓ÷½·¨Ïàͬ¡£8254ÊÇ8253µÄ¸Ä½øÐÍ¡£

1£®8253³õʼ»¯

ʹÓÃ8253ǰ£¬Òª½øÐгõʼ»¯±à³Ì¡£³õʼ»¯±à³ÌµÄ²½ÖèÊÇ£º

¢Ù Ïò¿ØÖƼĴæÆ÷¶Ë¿ÚдÈë¿ØÖÆ×Ö¶ÔʹÓõļÆÊýÆ÷¹æ¶¨ÆäʹÓ÷½Ê½µÈ¡£ ¢Ú ÏòʹÓõļÆÊýÆ÷¶Ë¿ÚдÈë¼ÆÊý³õÖµ¡£

2£®8253¿ØÖÆ×Ö

D7D6£½00£ºÊ¹ÓÃ0ºÅ¼ÆÊýÆ÷£¬D7D6£½01£ºÊ¹ÓÃ1ºÅ¼ÆÊýÆ÷ D7D6£½10£ºÊ¹ÓÃ2ºÅ¼ÆÊýÆ÷£¬D7D6£½11£ºÎÞЧ D5D4£½00£ºËø´æµ±Ç°¼ÆÊýÖµ

D5D4£½01£ºÖ»Ð´µÍ8루¸ß8λΪ0£©£¬¶Á³öʱֻ¶ÁµÍ8λ D5D4£½10£ºÖ»Ð´¸ß8루µÍ8λΪ0£©£¬¶Á³öʱֻ¶Á¸ß8λ D5D4£½11£ºÏȶÁ/дµÍ8룬ºó¶Á/д¸ß8λ¼ÆÊýÖµ

D3D2D1£½000£ºÑ¡Ôñ·½Ê½0£¬D3D2D1£½001£ºÑ¡Ôñ·½Ê½1 D3D2D1£½X10£ºÑ¡Ôñ·½Ê½2£¬D3D2D1£½X11£ºÑ¡Ôñ·½Ê½3 D3D2D1£½100£ºÑ¡Ôñ·½Ê½4£¬D3D2D1£½101£ºÑ¡Ôñ·½Ê½5 D0£½0£º¼ÆÊý³õֵΪ¶þ½øÖÆ£¬D0£½1£º¼ÆÊý³õֵΪBCDÂëÊý

£¨¶þ£©ÊµÑéÄÚÈÝ

1£®Íê³ÉÒ»¸öÒôÀÖ·¢ÉúÆ÷£¬Í¨¹ýÀ®°È»ò·äÃùÆ÷·Å³öÒôÀÖ£¬²¢ÔÚÊýÂë¹ÜÉÏÏÔʾÀ֯ס£

2£®À©Õ¹²¿·Ö£ºÀûÓÃС¼üÅÌʵÏÖµ¯ÇÙ¹¦ÄÜ£¬²¢ÏÔʾµ¯×àµÄÀ֯ס£ ×¢Ò⣺8253ÊäÈëÆµÂÊӦСÓÚ2MHz¡£

3¡¢½ÓÏߣº CS /8253 ½Ó Y0 /IO µØÖ·

GATE0 /8253 ½Ó +5V CLK0 /8253 ½Ó 1MʱÖÓ

WordÍêÃÀ¸ñʽ

¿É±à¼­°æ

OUT0 /8253 ½Ó À®°È»ò·äÃùÆ÷

Èý¡¢Ó²¼þ½ÓÏßͼºÍÈí¼þ³ÌÐòÁ¬½Óͼ

1¡¢Ó²¼þ½ÓÏßͼ

2.Èí¼þÁ÷³Ìͼ

WordÍêÃÀ¸ñʽ

¿É±à¼­°æ

¿ªÊ¼ ³õʼ»¯8254 8255£¬A¿Ú½ÓÊýÂë¹ÜÏÔʾ£¬B¿ÚλѡÊýÂë¹Ü£¬C¿Ú½ÓС¼üÅÌÊäÈë ɨÃè¼üÅÌ ÅжÏÊäÈë ÊäÈëΪ0 ÊäÈë1~8 ÊäÈëΪ9 ²¥·ÅÒôÀÖ£¬ÊýÂë¹ÜÏÔʾÏàÓ¦µÄÒô·û ·¢³ö¶ÔÓ¦µÄÒô£¬ÊýÂë¹ÜÏÔʾÒô·û ϨÃðÊýÂë¹Ü£¬·µ»Ødos ·ñ ÊÇ·ñ²¥·Å½áÊø °´¼üÊÇ·ñµ¯Æð ÊÇ ÊÇ Í£Ö¹·¢Òô£¬³õʼ»¯8254 ½áÊø

ËÄ¡¢Ô´³ÌÐò

DATA SEGMENT

FENPIN DW 0001H,3906,3472,3125,2932,2604,2344,2083,1953 ;·ÖƵ±È DIGITAL DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH;ÊýÂë¹Ü MUSIC DB 1,2,3,1,1,2,3,1,0,3,4,5,0,3,4,5,0,5,6,5,4,3,1,0,5,6,5,4,3,1,0,1,5,1,0,1,5,1,0 ;´æ·Å²¥·ÅµÄÀÖÇúÒô·û

NUM DB 00H,070H,0B0H,0D0H,0E0H ;¼ì²â¼üÅÌÊäÈë DATA ENDS

STACK SEGMENT STACK 'STACK'

WordÍêÃÀ¸ñʽ

¿É±à¼­°æ

DB 100 DUP(?) STACK ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK

DELAY PROC NEAR ;ÑÓʱ×Ó³ÌÐò PUSH CX

MOV CX,100H WAIT0: LOOP WAIT0 POP CX RET DELAY ENDP

DELAY1 PROC NEAR ; PUSH MOV WAIT1: LOOP POP RET DELAY1 ENDP

KEY PROC NEAR ; PUSH AX ; PUSH CX PUSH DX MOV CX,01H

CHECK: MOV DX,28AH ;C MOV BX,OFFSET NUM ADD BX,CX MOV AL,[BX] OUT DX,AL

IN AL,DX ; MOV AH,AL CALL DELAY IN AL,DX

CMP AL,AH ; JNZ CHECK ; AND AL,0FH ; CMP AL,0FH JZ NEXT CMP AL,0EH JZ NEXT1 CMP AL,0DH

ÑÓʱ×Ó³ÌÐò2 CX

CX,0FFFFH WAIT1 CX »ñÈ¡¼üÅÌÊäÈëÖµµÄ×Ó³ÌÐò ±£»¤ÏÖ³¡ ¿ÚµØÖ·¸øDX ÅжÏÊÇ·ñÓмüÅ̰´Ï ·À¶¶

²»ÏàµÈ˵Ã÷Ϊ¶¶¶¯£¬ÖØÐ¼ì²âÅжϰ´ÏµÄÁÐ WordÍêÃÀ¸ñʽ

¿É±à¼­°æ

JZ NEXT2 CMP AL,0BH JZ NEXT3 MOV BX,01H JMP GOT

NEXT: INC CX ;Ð޸ıäÁ¿É¨ÃèÏÂÒ»ÐÐ CMP CX,05H JNZ JUMP1 MOV CX,01H JUMP1: JMP CHECK NEXT1: MOV BX,04H JMP GOT NEXT2: MOV BX,03H JMP GOT NEXT3: MOV BX,02H

GOT: SUB CX,01H ; MOV AL,CL MOV DL,04H MUL DL ADD BL,AL

SUB BL,01H ; POP DX ; POP CX POP AX RET KEY ENDP

START: MOV MOV MOV DX,283H ;8253 MOV AL,36H OUT DX,AL

MOV DX,28BH ;8255 MOV AL,81H ;C OUT DX,AL

MOV MOV AL,01H OUT DX,AL

LOOP1: CALL KEY ; CMP BX,0 ; JZ PLAY0

CMP BX,9 ; JZ EXIT

MOV CX,BX ; ¼ÆË㰴ϼüÅ̵ÄÊýÖµ ´ËʱBXÖÐËù´æ¼´Îª¶ÔÓ¦µÄÆ«ÒÆÁ¿»Ö¸´ÏÖ³¡ AX,DATA DS,AX

³õʼ»¯ ³õʼ»¯ ¿ÚÊäÈë DX,289H ;B¿ÚλѡÊýÂë¹Ü ɨÃè¼üÅÌ

°´0²¥·ÅÒôÀÖ °´9Í˳ö °´1~8·¢³ö¶ÔÓ¦Òô

WordÍêÃÀ¸ñʽ