¡²Ï°Ìâ8.5¡³
8253оƬÐèÒª¼¸¸öI/OµØÖ·£¬¸÷ÓÃÓÚºÎÖÖÄ¿µÄ£¿ ¡²½â´ð¡³
4¸ö£¬¶Áд¼ÆÊýÆ÷0£¬1ºÍ2£¬¼°¿ØÖÆ×Ö¡£ ¡²Ï°Ìâ8.6¡³
ÊÔ°´ÈçÏÂÒªÇó·Ö±ð±àд8253µÄ³õʼ»¯³ÌÐò£¬ÒÑÖª8253µÄ¼ÆÊýÆ÷0¡«2ºÍ¿ØÖÆ×ÖI/OµØÖ·ÒÀ´ÎΪ204H¡«207H¡£
¢Ù ʹ¼ÆÊýÆ÷1¹¤×÷ÔÚ·½Ê½0£¬½öÓÃ8λ¶þ½øÖƼÆÊý£¬¼ÆÊý³õֵΪ128¡£ ¢Ú ʹ¼ÆÊýÆ÷0¹¤×÷ÔÚ·½Ê½1£¬°´BCDÂë¼ÆÊý£¬¼ÆÊýֵΪ3000¡£ ¢Û ʹ¼ÆÊýÆ÷2¹¤×÷ÔÚ·½Ê½2£¬¼ÆÊýֵΪ02F0H¡£ ¡²½â´ð¡³
¢Ù
mov al,50h mov dx,207h out dx,al mov al,128 mov dx,205h out dx,al
; £½80h
¢Ú
mov al,33h mov dx,207h out dx,al mov ax,3000h mov dx,204h out dx,al mov al,ah out dx,al
; ²»ÊÇ3000
¢Û
mov al,0b4h mov dx,207h out dx,al mov al,02f0h mov dx,206h out dx,al mov al,ah out dx,al
¡²Ï°Ìâ8.7¡³
ÀûÓÃÑïÉùÆ÷¿ØÖÆÔÀí£¬±àдһ¸ö¼òÒ×ÀÖÆ÷³ÌÐò¡£
µ±°´ÏÂ1¡«8Êý×Ö¼üʱ£¬·Ö±ð·¢³öÁ¬ÐøµÄÖÐÒô1¡«7ºÍ¸ßÒôi£¨¶ÔӦƵÂÊÒÀ´ÎΪ524Hz£¬588Hz£¬660Hz£¬698Hz£¬784Hz£¬880Hz£¬988HzºÍ1048Hz£©£»
µ±°´ÏÂÆäËû¼üʱÔÝÍ£·¢Òô£»
µ±°´ÏÂESC¼ü£¨ASCIIÂëΪ1BH£©£¬³ÌÐò·µ»Ø²Ù×÷ϵͳ¡£ ¡²½â´ð¡³
table
; Êý¾Ý¶Î
dw 2277,2138,1808,1709,1522,1356,1208,1139 ; ¶ÔÓ¦ÖÐÒô1¡«7ºÍ¸ßÒôiµÄ¶¨Ê±Æ÷¼ÇÊýÖµ
£ £57
again:
next: ; ´úÂë¶Î mov al,0b6h out 43h,al call readc cmp al,'1' jb next cmp al,'8' ja next sub al,30h sub al,1 xor ah,ah shl ax,1 mov bx,ax
mov ax,table[bx] out 42h,al mov al,ah out 42h,al in al,61h or al,03h out 61h,al jmp again push ax in al,61h and al,0fch out 61h,al pop ax
cmp al,1bh jne again
; ÉèÖö¨Ê±Æ÷2¹¤×÷·½Ê½ ; µÈ´ý°´¼ü
; ÅжÏÊÇ·ñΪÊý×Ö1¡«8
; 1¡«8µÄASCIIÂëת»»Îª¶þ½øÖÆÊý
; ÔÙ¼õ1£¬½«Êý×Ö1¡«8±äΪ0¡«7£¬ÒÔ±ã²é±í ; ³ËÒÔ2
; ¼ÇÊýÖµ±íÊÇ16λÊý¾Ý£¬ÎÞ·¨²ÉÓÃxlatÖ¸Áî ; È¡³ö¶ÔÓ¦µÄ¼ÇÊýÖµ ; ÉèÖö¨Ê±Æ÷2µÄ¼ÇÊýÖµ
; ´ò¿ªÑïÉùÆ÷ÉùÒô
; ʹD1D0£½PB1PB0£½11B£¬ÆäËûλ²»±ä ; Á¬Ðø·¢Éù£¬Ö±µ½°´ÏÂÁíÒ»¸ö¼ü ; ²»ÊÇÊý×Ö1¡«8£¬Ôò¹Ø±ÕÑïÉùÆ÷ÉùÒô ; ʹD1D0£½PB1PB0£½00b£¬ÆäËûλ²»±ä
; ÅжÏÊÇ·ñΪESC¼ü£¨¶ÔÓ¦ASCIIÂë1bh£© ; ²»ÊÇESC£¬¼ÌÐø£»·ñÔò³ÌÐòÖ´ÐнáÊø
¡²Ï°Ìâ8.8¡³
Õë¶Ô8255оƬ¹¤×÷·½Ê½1Êä³öʱÐò£¬ËµÃ÷Êý¾ÝÊä³öµÄ¹ý³Ì¡£ ¡²½â´ð¡³
¢Ù ÖжϷ½Ê½Ï£¬´¦ÀíÆ÷ÏìÓ¦Öжϣ¬Ö´ÐÐÊä³öOUTÖ¸ÁÊä³öÊý¾Ý¸ø8255£¬·¢³öWRÐźš£²éѯ·½Ê½Ï£¬Í¨¹ý¶Ë¿ÚCµÄ״̬ȷÐÅ¿ÉÒÔÊä³öÊý¾Ý£¬´¦ÀíÆ÷Ö´ÐÐÊä³öÖ¸Á
¢Ú WRÐźÅÒ»·½ÃæÇå³ýINTR£¬ÁíÒ»·½ÃæÔÚÉÏÉýÑØÊ¹OBFÓÐЧ£¬Í¨ÖªÍâÉè½ÓÊÕÊý¾Ý¡£ÊµÖÊÉÏOBFÐźÅÊÇÍâÉèµÄѡͨÐźţ»
¢Û WRÐźŽáÊøºó£¬Êý¾Ý´Ó¶Ë¿ÚÊý¾ÝÏßÉÏÊä³ö¡£µ±ÍâÉè½ÓÊÕÊý¾Ýºó£¬·¢³öACKÏìÓ¦£» ¢Ü ACKÐźÅʹOBFÎÞЧ£¬ÉÏÉýÑØÓÖʹINTRÓÐЧ£¨ÔÊÐíÖжϵÄÇé¿ö£©£¬·¢³öеÄÖжÏÇëÇó¡£ ¡²Ï°Ìâ8.9¡³
É趨8255оƬµÄ¶Ë¿ÚAΪ·½Ê½1ÊäÈ룬¶Ë¿ÚBΪ·½Ê½1Êä³ö£¬Ôò¶ÁÈ¡¿ÚCµÄÊý¾ÝµÄ¸÷λÊÇʲôº¬Ò壿 ¡²½â´ð¡³
PC0£º¶Ë¿ÚBµÄÖжÏÇëÇóÐźŠPC1£º¶Ë¿ÚBÊä³ö»º³åÆ÷ÂúÐźŠPC2£º¶Ë¿ÚBÖжÏÔÊÐí¿ØÖÆÎ» PC3£º¶Ë¿ÚAµÄÖжÏÇëÇóÐźÅ
£ £58
PC4£º¶Ë¿ÚAÖжÏÔÊÐí¿ØÖÆÎ» PC5£º¶Ë¿ÚAÊäÈ뻺³åÆ÷ÂúÐźŠPC6/PC7£ºI/OÐźŠ¡²Ï°Ìâ8.10¡³
ÓÃ8255¶Ë¿ÚA·½Ê½0Óë´òÓ¡»ú½Ó¿ÚʾÀýÖУ¬Èç¹û¸ÄÓö˿ÚB£¬ÆäËû²»±ä£¬ËµÃ÷Ó¦¸ÃÈçºÎÐ޸Ľӿڵ緺ͳÌÐò¡£ ¡²½â´ð¡³
Ð޸ĵç·£º½«¶Ë¿ÚBµÄPB0¡«PB7½Ó´òÓ¡»úµÄÊý¾ÝλDATA0¡«DATA7¼´¿É¡£ Ð޸ijÌÐò£º½«Êä³öÊý¾Ý¶Ë¿Ú¸ÄΪFFFAH¼´¿É¡£ ¡²Ï°Ìâ8.11¡³
ÓÃ8255¶Ë¿ÚA·½Ê½1Óë´òÓ¡»ú½Ó¿Ú£¬Èç¹û¸ÄÓö˿ÚB£¬ÆäËû²»±ä£¬ËµÃ÷ÈçºÎÐ޸Ľӿڵ緺ͳÌÐò¡£ ¡²½â´ð¡³
Ð޸ĵç·£ºPA0¡«PA7¸ÄΪPB0¡«PB7£»PC6¸ÄÓÃPC2£¬PC7¸ÄÓÃPC1£¬PC3¸ÄÓÃPC0¡£ Ð޸ijÌÐò£º
prints
print1:
print2:
prints
mov dx,0fffeh mov al,84h out dx,al mov al,04h
; ʹINTEB£¨PC2£©Îª0£¬½ûÖ¹ÖÐ¶Ï out dx,al ¡¡
mov cx,counter ; ´òÓ¡×Ö½ÚÊýËÍCX mov bx,offset buffer ; È¡×Ö·û´®Ê×µØÖ· call prints ; µ÷ÓôòÓ¡×Ó³ÌÐò ¡¡ proc push ax ; ±£»¤¼Ä´æÆ÷ push dx
mov al,[bx] ; ȡһ¸öÊý¾Ý mov dx,0fffah out dx,al ; ´Ó¶Ë¿ÚBÊä³ö mov dx,0fffch in al,dx test al,02h ; ¼ì²â£¨PC1£©Îª1·ñ? jz print2 inc bx
loop print1 pop dx pop ax ret endp
¡²Ï°Ìâ8.12¡³
ÓÐÒ»¹¤Òµ¿ØÖÆÏµÍ³£¬ÓÐËĸö¿ØÖƵ㣬·Ö±ðÓÉËĸö¶ÔÓ¦µÄÊäÈë¶Ë¿ØÖÆ£¬ÏÖÓÃ8255µÄ¶Ë¿ÚCʵÏÖ¸ÃϵͳµÄ¿ØÖÆ£¬Èç±¾ÌâͼÐΡ£¿ª¹ØK0¡«K3´ò¿ªÔò¶ÔÓ¦·¢¹â¶þ¼«¹ÜL0¡«L3ÁÁ£¬±íʾϵͳ¸Ã¿ØÖƵãÔËÐÐÕý³££»¿ª¹Ø±ÕºÏÔò¶ÔÓ¦·¢¹â¶þ¼«¹Ü²»ÁÁ£¬ËµÃ÷¸Ã¿ØÖƵã³öÏÖ¹ÊÕÏ¡£±àд
£ £59
8255µÄ³õʼ»¯³ÌÐòºÍÕâ¶Î¿ØÖƳÌÐò¡£ ¡²½â´ð¡³
; дÈ뷽ʽ×Ö
mov al,100¡Á00¡Á1b ; £½81H£¨¡Á±íʾÈÎÒ⣬¿ÉÒÔÌîдΪ0£¬Ò²¿ÉÒÔΪ1£© mov dx,¿ØÖƿڵØÖ· ; ¿ÉÒÔ¼ÙÉèΪ0FFFEH out dx,al
;¼ÓÈëÏÂÒ»¶Î¸üºÃ£¬Ê¹L0¡«L3È«ÁÁ mov al,0fh
mov dx,¶Ë¿ÚCµØÖ· ; ¿ÉÒÔ¼ÙÉèΪ0FFFCH out dx,al ;¿ØÖƳÌÐò¶Î
mov dx,¶Ë¿ÚCµØÖ· ; ¿ÉÒÔ¼ÙÉèΪ0FFFCH in al,dx ; ¶ÁÈëPC0¡«PC3 mov cl,4 shl al,cl ; ×óÒÆ4λ out dx,al ; ¿ØÖÆPC4¡«PC7
+5V 8255 2K?4 K0 K1 K2 K3 L0 L1 L2 L3 74LS04 +5V 4?300¦¸ PC0 PC1 PC2 PC3 PC4 PC5 PC6 PC7 ͼ8-1 ϰÌâ8.12¸½Í¼
¡²Ï°Ìâ8.13¡³
±àдһ¸ö³ÌÐò£¬Ã¿µ±ÔÚ¼üÅÌÉϰ´ÏÂÒ»¼üʱ£¬¾ÍÏÔʾÆä½ÓͨºÍ¶Ï¿ªÉ¨ÃèÂ룬¿ÉÒÔÀûÓÃESC¼üÍ˳ö³ÌÐòÖ´ÐС£¼üÅ̵Äÿ¸ö×Ö½Ú´úÂë¶¼ÒýÆðÒ»´Î09HºÅÖжϣ¬ÕâÑù´ó²¿·Ö°´¼ü½«²úÉúÁ½´ÎÖжϣ¬°´Ï°´¼üÅÌ·¢ËͽÓͨɨÃèÂ룬ËÉ¿ª°´¼ü·¢ËͶϿªÉ¨ÃèÂë¡£ÀýÈ磬ESC¼üÊÇ01HºÍ81H¡£83¼ü±ê×¼¼üÅÌÒÔºóµÄÔö¼ÓµÄ°´¼ü¿ÉÄÜÓжà¸ö¡£ÇëÎÊÖ÷¼üÅÌÇøºÍÊý×ÖС¼üÅÌÇøµÄÁ½¸ö»Ø³µµÄɨÃèÂë·Ö±ðÊÇʲô£¿ ¡²½â´ð¡³
done
; Êý¾Ý¶Î byte 0
; ´úÂë¶Î£¬Ö÷³ÌÐò mov ax,3509h int 21h push es
£ £60