6£®Éè8255AµÄA¿Ú¹¤×÷ÓÚ·½Ê½1Êä³ö£¬B¿Ú¹¤×÷ÓÚ·½Ê½0ÊäÈ룬ÊÔ±àд³õʼ»¯³ÌÐò(Éè¶Ë¿ÚµØÖ·Îª40H¡«43H)¡£ ½â£º
MOV DX, 43H
MOV AL, 10100010B(A2H) OUT DX,AL
7£®Ê¹ÓÃ8255A×÷Ϊ¿ª¹ØºÍLEDָʾµÆµÄ½Ó¿Ú¡£ÒªÇó8255AµÄA ¿ÚÁ¬½Ó8¸ö¿ª¹Ø£¬B¿ÚÁ¬½Ó8¸öLEDָʾµÆ£¬½«A¿ÚµÄ¿ª¹Ø×´Ì¬¶ÁÈ룬ȻºóËÍÖÁB¿Ú¿ØÖÆÖ¸Ê¾µÆÁÁ¡¢Ãð¡£ÊÔ»³ö½Ó¿Úµç·Éè¼ÆÍ¼£¬²¢±àд³ÌÐòʵÏÖÖ®¡£ ½â£ºµç·ͼ²Î¼û½Ì²ÄP193ͼ7-14¡£A¿Ú½ÓÈë8¸ö¿ª¹Ø£¬B¿ÚÓÃLEDÌæ´úÊýÂë¹Ü£¬¹²Òõ½Ó·¨¡£ Éè8255Ëĸö¶Ë¿ÚµÄµØÖ·ÎªFFE0H¡«FFE3H¡£ DATA SEGMENT PORTA EQU 0FFE0H PORTB EQU 0FFE1H CONTR EQU 0FFE3H DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA START: MOV AX, DATA MOV DS, AX
MOV AL, 90H ;³õʼ»¯8255,PAΪÊäÈ룬PBΪÊä³ö MOV DX, CONTR OUT DX, AL
L0: MOV DX, PORTA ;¶ÁPA¿Ú IN AL, DX
NOT AL £»°´Ï¿ª¹ØµÆÁÁ MOV DX, PORTB
OUT DX,AL ;ËÍPB¿ÚÏÔʾ MOV CX,1000 ;ÑÓʱ L1: DEC CX JNZ L1 JMP L0
CODE ENDS END START 8£®ÔÚ¼×ÒÒÁ½Ì¨Î¢»úÖ®¼ä²¢Ðд«ËÍ1 KBµÄÊý¾Ý£¬¼×»ú·¢ËÍ£¬ÒÒ»ú½ÓÊÕ¡£ÒªÇó¼×»úÒ»²àµÄ8255A¹¤×÷ÔÚ·½Ê½1£¬ÒÒ»úÒ»²àµÄ8255A¹¤×÷ÔÚ·½Ê½0£¬Ë«»ú¶¼²ÉÓòéѯ·½Ê½´«ËÍÊý¾Ý¡£ÊÔ»³öͨÐŽӿڵç·ͼ£¬²¢±àд¼×»úµÄ·¢ËͳÌÐòºÍÒÒ»úµÄ½ÓÊÕ³ÌÐò¡£
13
1¼×»ú·¢ËͳÌÐò¶Î
MOV DX,303H ;8255AÃüÁîÄ¿ MOV AL,10100000B ;³õʼ»¯¹¤×÷·½Ê½×Ö OUT DX,AL
MOV AL,0DH ;Ö÷¢ËÍÖжÏÔÊÐíINTEA=1 OUT DX,AL ;PC6=1
MOV SI,OFFSET BUFS ;ÉèÖ÷¢ËÍÇøµÄÖ¸Õë MOV CX,3FFH ;·¢ËÍ×Ö½ÚÊý
MOV DX,300H ;ÏòA¿ÚдµÚÒ»¸öÊý£¬²úÉú ;µÚÒ»¸öOBFÐźÅ
MOV AL,[SI] ;Ë͸øÒÒ·½£¬ÒÔ±ã»ñÈ¡ÒÒ·½µÄ ;ACKÐźŠOUT DX,AL
INC SI ;ÄÚ´æµØÖ·¼Ó1 DEC CX ;´«ËÍ×Ö½ÚÊý¼õ1
L:MOV DX,302H ;8255A״̬¿Ú
IN AL,DX ;²é·¢ËÍÖжÏÇëÇóINTRA=1£¿ AND AL,08H ;PC3=1
JZ L ;ÈôÎÞÖжÏÇëÇó£¬ÔòµÈ´ý
;ÈôÓÐÖжÏÇëÇó£¬ÔòÏòA¿ÚдÊý MOV DX,300H ;8255APA¿ÚµØÖ· MOV AL,[SI] ;´ÓÄÚ´æÈ¡Êý
OUT DX,AL ;ͨ¹ýA¿ÚÏòÒÒ»ú·¢Ë͵ڶþ¸öÊý¾Ý INC SI ;ÄÚ´æµØÖ·¼Ó1 DEC CX ;×Ö½ÚÊý¼õ1
JNZ L ;×Ö½ÚδÍ꣬¼ÌÐø MOV AH,4C00H ;ÒÑÍ꣬Í˳ö INT 21H ;·µ»ØDOS BUFS DB 1024¸öÊý¾Ý 2¡¢ÒÒ»ú½ÓÊÜÊý¾Ý
14
MOV DX,303H ;8255AÃüÁî¿Ú MOV AL,10100000B ;³õʼ»¯¹¤×÷·½Ê½×Ö OUT DX,AL
MOV AL,00000111B ;ÖÃ
=1(PC3=1)
OUT DX,AL
MOV SI,OFFSET BUFR ;ÉèÖýÓÊÕÊý¾ÝµÄÖ¸Õë MOV CX,3FFH ;½ÓÊÕ×Ö½ÚÊý L1:MOV DX,302H ;8255APC¿Ú
IN AL,DX ;²é¼×»úµÄOBF=0? ;£¨ÒÒ»úµÄPC7=0£©
AND AL,80H ;¼´²é¼×»úÊÇ·ñÓÐÊý¾Ý·¢À´ JNZ L1 ;ÈôÎÞÊý¾ÝÇëÇó£¬ÔòµÈ´ý ;ÈôÓÐÊý¾Ý£¬Ôò´Ó¿Ú¶ÁÈ¡ MOV DX,300H ;8255A PA¿ÚµØÖ· IN AL,DX ;´ÓA¿Ú¶ÁÈëÊý¾Ý MOV [DI],AL ;´æÈëÄÚ´æ
MOV DX,303H ;²úÉúACKÐźţ¬²¢·¢¸ø¼×»ú MOV AL,00000110B ;PC3Öá±0¡± OUT DX,AL NOP NOP
MOV AL,00000111B ;PC3Öá±1¡± OUT DX,AL
INC DI ;ÄÚ´æµØÖ·¼Ó1 DEC CX ;×Ö½ÚÊý¼õ1
JNZ L1 ;×Ö½ÚδÍ꣬Ôò¼ÌÐø MOV AX,4C00H ;ÒÑÍ꣬Í˳ö INT 21H ;·µ»ØDOS BUFR DB 1024DU(?
9£®8254¶¨Ê±/¼ÆÊýÆ÷ÓÐÄļ¸ÖÖ¹¤×÷·½Ê½£¿ËüÃǵÄÖ÷ÒªÌØµãÊÇʲô£¿ ¹²ÓÐÁùÖÖ¹¤×÷·½Ê½£¬·Ö±ð¶ÔÓ¦ÓëÁùÖÖ²»Í¬µÄÓÃ;¡£ ½â£º
·½Ê½0£º¼ÆÊý½áÊø
·½Ê½1£º¿ÉÖØ¸´´¥·¢µÄµ¥ÎÈ̬´¥·¢Æ÷ ·½Ê½2£º·ÖÐëÆ÷ ·½Ê½3£º·½²¨·¢ÉúÆ÷
·½Ê½4£ºÈí¼þ´¥·¢µÄѡͨÐźŷ¢ÉúÆ÷ ·½Ê½5£ºÓ²¼þ´¥·¢µÄѡͨÐźŷ¢ÉúÆ÷
10£®ÀûÓÃ8254µÄͨµÀ1£¬²úÉú500 HzµÄ·½²¨Ðźš£ÉèÊäÈëʱÖÓÆµÂÊCKL1=2.5 MHz£¬¶Ë¿ÚµØÖ·ÎªFFAOH¡«FFA3H£¬ÊÔ±àÖÆ³õʼ»¯³ÌÐò¡£ ½â:
MOV AL, 01110110B MOV DX, 0FFA3H
15
OUT DX, AL
MOV AX, 5000 ;2.5MHz/500Hz=5000 MOV DX, 0FFA1H OUT DX, AL MOV AL, AH OUT DX, AL
11£®Ä³ÏµÍ³Ê¹ÓÃ8254µÄͨµÀ0×÷Ϊ¼ÆÊýÆ÷£¬¼ÆÂú1 000£¬ÏòCPU·¢ÖжÏÇëÇó£¬ÊÔ±àд³õʼ»¯³ÌÐò(¶Ë¿ÚµØÖ·×ÔÉè)¡£ ½â:
Éè¶Ë¿ÚµØÖ·Îª80H~83H MOV AL, 00110000B OUT 83H, AL MOV AX, 1000 OUT 80H, AL MOV AL, AH OUT 80H, AL
12£®²ÉÓÃ8254µÄͨµÀ0²úÉúÖÜÆÚΪ10 msµÄ·½²¨Ðźţ¬ÉèÊäÈëʱÖӵįµÂÊΪ100kHz£¬8254µÄ¶Ë¿ÚµØÖ·Îª38H¡«3BH£¬ÊÔ±àд³õʼ»¯³ÌÐò¡£ ½â: MOV AL, 00110110B OUT 3BH, AL
MOV AX, 1000 ; 10ms*100kHz=1000 OUT 38H, AL MOV AL, AH OUT 38H, AL
×¢Òâ: ¼ÆÊýÖµµÄ¸ßµÍ×Ö½ÚµÄ×°Èë;
13£®´®ÐÐͨÐÅÓÐÄļ¸ÖÖͨÐÅ·½Ê½£¿ËüÃǵÄÌØµãÊÇʲô£¿ ÓÐͬ²½Í¨ÐźÍÒ첽ͨÐÅÁ½ÖÖ £¨1£©Í¬²½Í¨ÐÅ
ͬ²½Í¨ÐÅÊÇÒ»ÖÖÁ¬Ðø´®Ðд«ËÍÊý¾ÝµÄͨÐÅ·½Ê½£¬Ò»´ÎͨÐÅÖ»´«ËÍÒ»Ö¡ÐÅÏ¢¡£ÕâÀïµÄÐÅÏ¢Ö¡ÓëÒ첽ͨÐÅÖеÄ×Ö·ûÖ¡²»Í¬£¬Í¨³£º¬ÓÐÈô¸É¸öÊý¾Ý×Ö·û¡£ËüÃǾùÓÉͬ²½×Ö·û¡¢Êý¾Ý×Ö·ûºÍУÑé×Ö·û£¨CRC£©×é³É¡£ÆäÖÐͬ²½×Ö·ûλÓÚÖ¡¿ªÍ·£¬ÓÃÓÚÈ·ÈÏÊý¾Ý×Ö·ûµÄ¿ªÊ¼¡£Êý¾Ý×Ö·ûÔÚͬ²½×Ö·ûÖ®ºó£¬¸öÊýûÓÐÏÞÖÆ£¬ÓÉËùÐè´«ÊäµÄÊý¾Ý¿é³¤¶ÈÀ´¾ö¶¨£»Ð£Ñé×Ö·ûÓÐ1µ½2¸ö£¬ÓÃÓÚ½ÓÊն˶ԽÓÊÕµ½µÄ×Ö·ûÐòÁнøÐÐÕýÈ·ÐÔµÄУÑ顣ͬ²½Í¨ÐŵÄȱµãÊÇÒªÇó·¢ËÍʱÖӺͽÓÊÕʱÖÓ±£³ÖÑϸñµÄͬ²½¡£ £¨2£©Ò첽ͨÐÅ
Ò첽ͨÐÅÖУ¬ÔÚÒ첽ͨÐÅÖÐÓÐÁ½¸ö±È½ÏÖØÒªµÄÖ¸±ê£º×Ö·ûÖ¡¸ñʽºÍ²¨ÌØÂÊ¡£Êý¾Ýͨ³£ÒÔ×Ö·û»òÕß×Ö½ÚΪµ¥Î»×é³É×Ö·ûÖ¡´«ËÍ¡£×Ö·ûÖ¡ÓÉ·¢ËͶËÖðÖ¡·¢ËÍ£¬Í¨¹ý´«ÊäÏß±»½ÓÊÕÉ豸ÖðÖ¡½ÓÊÕ¡£·¢ËͶ˺ͽÓÊÕ¶Ë¿ÉÒÔÓɸ÷×ÔµÄʱÖÓÀ´¿ØÖÆÊý¾ÝµÄ·¢ËͺͽÓÊÕ£¬ÕâÁ½¸öʱÖÓÔ´±Ë´Ë¶ÀÁ¢£¬»¥²»Í¬²½¡£½ÓÊն˼ì²âµ½´«ÊäÏßÉÏ·¢Ë͹ýÀ´µÄµÍµçƽÂß¼\£¨¼´×Ö·ûÖ¡Æðʼλ£©Ê±£¬È·¶¨·¢ËͶËÒÑ¿ªÊ¼·¢ËÍÊý¾Ý£¬Ã¿µ±½ÓÊÕ¶ËÊÕµ½×Ö·ûÖ¡ÖеÄֹͣλʱ£¬¾ÍÖªµÀÒ»Ö¡×Ö·ûÒѾ·¢ËÍÍê±Ï¡£
14£®Òì²½´®ÐÐͨÐŵÄÊý¾Ý¸ñʽÊÇʲô£¿
Ò첽ͨÐÅÊý¾ÝÖ¡µÄµÚһλÊÇ¿ªÊ¼Î»£¬ÔÚͨÐÅÏßÉÏûÓÐÊý¾Ý´«ËÍʱ´¦ÓÚÂß¼¡°1¡±×´Ì¬¡£µ±·¢
16