¡¶Î¢ÐͼÆËã»úÔ­ÀíÓë½Ó¿Ú¼¼Êõ¡·µÚÈý°æ)ϰÌâ´ð°¸ ÏÂÔØ±¾ÎÄ

£¨2£©Éè¶Ë¿ÚAΪѡͨÊä³ö·½Ê½£¬¶Ë¿ÚBΪ»ù±¾ÊäÈ뷽ʽ£¬¶Ë¿ÚCÊ£ÓàλΪÊä³ö·½Ê½£¬ÔÊÐí¶Ë¿ÚAÖжϡ£

£¨3£©Éè¶Ë¿ÚAΪ˫Ïò·½Ê½£¬¶Ë¿ÚBΪѡͨÊä³ö·½Ê½£¬ÇÒ²»ÔÊÐíÖжϡ£

¡¾½â´ð¡¿£¨1£©¶Ë¿ÚA¡¢¶Ë¿ÚBºÍ¶Ë¿ÚC¾ùΪ»ù±¾ÊäÈë/Êä³ö·½Ê½£¬ÔòΪ·½Ê½0£¬ÈκÎÒ»¸ö¿Ú¶¼¿ÉÓÃÓÚÊäÈë»òÊä³ö£¬¿É³öÏÖ16ÖÖ×éºÏ£¬ÕâÀïÖ»¾Ù³ö2ÖÖ×éºÏ¡£

Èô¶Ë¿ÚA¡¢BΪÊý¾ÝÊäÈë¿Ú£»C¿ÚµÄµÍ4λΪ¿ØÖÆÐźÅÊä³ö¿Ú£¬¸ß4λΪ״̬ÐźÅÊäÈë¿Ú£¬³ÌÐò¶ÎÈçÏ£º

MOV AL£¬10011010B

MOV DX£¬PORT ;PORTΪ¶Ë¿ÚµØÖ· OUT DX£¬AL

MOV AL,00001100B ;ÉèPC6ΪÖжÏÐźſØÖÆÒý½Å£¬PC6=0£¬½ûÖ¹ÖÐ¶Ï OUT DX,AL

Èô¶Ë¿ÚA¡¢BΪÊý¾ÝÊä³ö¿Ú£»C¿ÚµÄ¸ß4λΪ¿ØÖÆÐźÅÊä³ö¿Ú£¬µÍ4λΪ״̬ÐźÅÊäÈë¿Ú£¬³ÌÐò¶ÎÈçÏ£º

MOV AL£¬10000000B

MOV DX£¬PORT ;PORTΪ¶Ë¿ÚµØÖ· OUT DX£¬AL

MOV AL,00001100B ;ÉèPC6ΪÖжÏÐźſØÖÆÒý½Å£¬PC6=0£¬½ûÖ¹ÖÐ¶Ï OUT DX,AL

£¨2£©¶Ë¿ÚAΪѡͨÊä³ö·½Ê½£¬·½Ê½1£»¶Ë¿ÚBΪ»ù±¾ÊäÈ뷽ʽ£¬³ÌÐò¶ÎÈçÏ£º

MOV AL£¬10100010B

MOV DX£¬PORT ;PORTΪ¶Ë¿ÚµØÖ· OUT DX£¬AL

MOV AL,00001101B ;ÉèPC6ΪÖжÏÐźſØÖÆÒý½Å£¬PC6=1£¬ÔÊÐíÖÐ¶Ï OUT DX,AL

£¨3£©¶Ë¿ÚAΪ˫Ïò·½Ê½£¬·½Ê½2£»¶Ë¿ÚBΪѡͨÊä³ö·½Ê½£¬³ÌÐò¶ÎÈçÏ£º

MOV AL£¬11000100B

MOV DX£¬PORT ;PORTΪ¶Ë¿ÚµØÖ· OUT DX£¬AL

MOV AL,00001100B ;ÉèPC6ΪÖжÏÐźſØÖÆÒý½Å£¬PC6=0£¬½ûÖ¹ÖÐ¶Ï OUT DX,AL

9.5 ²ÉÓÃ8255A×÷ΪÁ½Ì¨¼ÆËã»ú²¢ÐÐͨÐŵĽӿڵç·£¬Çë»­³ö²éѯʽÊäÈë/Êä³ö·½Ê½¹¤×÷µÄ½Ó¿Úµç·£¬²¢Ð´³ö²éѯʽÊäÈë/Êä³ö·½Ê½µÄ³ÌÐò¡£

¡¾½â´ð¡¿¼×»úµÄ8255AÊÇ·½Ê½1·¢ËÍ£¬¶Ë¿ÚPAΪÊä³ö£¬·¢ËÍÊý¾Ý£¬¶øPC7ºÍPC6Òý½Å·Ö±ð¹Ì¶¨×÷ÁªÂçÏßOBFºÍACK¡£ÒÒ»úµÄ8255AÊÇ·½Ê½0½ÓÊÕÊý¾Ý£¬¹Ê°Ñ¶Ë¿ÚPA¶¨ÒåΪÊäÈ룬ÁíÍ⣬ѡÓÃÒý½ÅPC7ºÍPC3×÷ΪÁªÂçÏß¡£½Ó¿Úµç·Èçͼ9-2£º

·½Ê½08255AÒÒ(½ÓÊÕ£©CPUPA7¡«PA0PC7PC3ACK·½Ê½0OBF8255APA7¡«PA0PC7PC6¼×(·¢ËÍ£©CPU

ͼ9-2 ²éѯ·½Ê½µÄË«»úͨÐÅ

²éѯʽÊäÈë/Êä³ö·½Ê½µÄ³ÌÐòÈçÏ£º

£»¼×»ú·¢Ë͵ijÌÐò¶Î

MOV DX,303H ; 8255AÃüÁî¶Ë¿Ú

MOV AL,l010000B ; ³õʼ»¯¹¤×÷·½Ê½×Ö OUT DX£¬AL

MOV AL£¬0DH ;Ö÷¢ËÍÔÊÐíINTEA=1 OUT DX£¬AL

MOV SI£¬OFFSET BUFS ; ÉèÖ÷¢ËÍÊý¾ÝÇøµÄÖ¸Õë OUT CX£¬3FFH ; ·¢ËÍ×Ö½ÚÊý

MOV DX£¬300H ; Ïò¶Ë¿ÚAдµÚ1¸öÊý£¬²úÉúµÚ1¸öOBFÐźŠMOV AL,[SI] ; Ë͸øÒÒ»ú£¬ÒÔ±ã»ñÈ¡ÒÒ»úµÄACKÐźŠOUT DX£¬AL

INC SI ; ÄÚ´æµØÖ·¼Ó1 DEC CX ; ´«ËÍ×Ö½ÚÊý¼õ1

LOP£ºMOV DX£¬302H ; 8255A״̬¶Ë¿Ú(¶Ë¿ÚC)

IN AL£¬DX ; ²é·¢ËÍÖжÏÇëÇóINTRSA£½1 AND AL£¬08H ; ÊÇ·ñPC3£½l

JZ LOP ; ÈôÎÞÖжÏÇëÇóÔòµÈ´ý£»ÈôÓÐÏò¶Ë¿ÚAдÊý MOV DX£¬300H ; 8255A¶Ë¿ÚPAµØÖ· MOV AL£¬[SI] ; ´ÓÄÚ´æÈ¡Êý

OUT DX£¬AL ; ͨ¹ý¶Ë¿ÚAÏòÒÒ»ú·¢Ë͵Ú2¸öÊý¾Ý INC SI ; ÄÚ´æµØÖ·¼Ó1 DEC CX ; ×Ö½ÚÊý¼õ1

JNZ LOP ; ×Ö½ÚδÍ꣬¼ÌÐø MOV AH£¬4CH ; ¼ºÍ꣬Í˳ö INT 21H ;·µ»ØDOS

BUFS DB ¡­ ; ¶¨Òå1024¸öÊý¾Ý

£»ÒÒ»ú½ÓÊյijÌÐò¶Î

MOV DX£¬303H ; 8255AÃüÁî¶Ë¿Ú MOV AL£¬l0011000B ; ³õʼ»¯¹¤×÷·½Ê½×Ö OUT DX£¬AL MOV AL£¬00000111B ; ÖÃACK£½1(PC3£½1) OUT DX£¬AL

MOV DI£¬OFFSET BUFR ; ÉèÖýÓÊÕÊý¾ÝÇøµÄÖ¸Õë MOV CX£¬3FFH ; ½ÓÊÕ×Ö½ÚÊý L1£º MOV DX£¬302H ; 8255A¶Ë¿ÚPC

IN AL£¬DX ; ²é¼×»úµÄOBF=0?(ÒÒ»úµÄPC7£½0) AND AL£¬80H ; ²é¼×»úÊÇ·ñÓÐÊý¾Ý·¢À´

JNZ L1 ; ÈôÎÞÊý¾Ý·¢À´£¬ÔòµÈ´ý£»ÈôÓÐÊý¾Ý£¬Ôò´Ó¶Ë¿ÚA¶ÁÊý MOV DX£¬300H ; 8255A¶Ë¿ÚPAµØÖ· IN AL£¬DX ; ´Ó¶Ë¿ÚA¶ÁÈëÊý¾Ý MOV [DI]£¬AL ; ´æÈëÄÚ´æ

MOV DX£¬303H ; ²úÉúACKÐźţ¬²¢·¢»Ø¸ø¼×»ú MOV DX£¬00000110B ; PC3Öá°0¡± OUT DX£¬AL

INC DI ; ÄÚ´æµØÖ·¼Ó1 DEC CX ; ×Ö½ÚÊý¼õ1

JNZ L1 ; ×Ö½ÚδÍ꣬Ôò¼ÌÐø MOV AX£¬4C00H ; ¼ºÍ꣬Í˳ö INT 21H ; ·µ»ØDOS

BUFR DB l024 DUP(?) ; ½ÓÊÕÊý¾Ý»º³åÇø

9.6 Ò»°ã°´Ò»´Î¼ü£¬CPUͨ¹ý³ÌÐò¿ÉÒÔÅбðÊÇ·ñÓмü°´Ï£¬²¢Ê¶±ð¾ßÌåµÄ¼üÖµ¡£Èô¼üɨÃè³ÌÐò´¦Àí²»µ±£¬¿ÉÄÜ»á³öÏÖÏÂÊöÇé¿ö£º½ö°´Ò»´Î¼ü£¬µ«CPUʶ±ðΪͬһ¸ö¼ü¶à´Î±»°´Ï£¬ÊÔ·ÖÎö¿ÉÄÜ·¢ÉúÕâÖÖÇé¿öµÄÔ­Òò¡£

¡¾½â´ð¡¿Í¨¹ý³ÌÐòÅб𰴼ü£¬ÐèÒª¿¼Âǰ´¼üµÄÏû¶¶ÎÊÌ⣬Èô²ÉÓÃÈí¼þ·½·¨½øÐÐÏû¶¶ÐèÒªÉèÖÃÑÓʱµÈ´ý¶¶¶¯Ïûʧ£¬È»ºóÔÙ¶ÁÈë¼üÖµ¡£·ÖÎöÌâÖпÉÄÜ·¢ÉúÕâÖÖÇé¿öµÄÔ­ÒòÊÇ£º¼üɨÃè³ÌÐòûÓÐÉèÖÃÑÓʱ»òÑÓʱʱ¼ä¹ý¶Ì£¬Ã»ÄÜÓÐЧµÄÏû³ý¶¶¶¯¡£

ϰÌâ10

10.1 ʲô½ÐÒ첽ͨÐÅ£¿Ê²Ã´½Ðͬ²½Í¨ÐÅ£¿»­³öÒì²½´®ÐÐͨÐŵÄ×Ö·û±àÂë¸ñʽ¡£

¡¾½â´ð¡¿Ò첽ͨÐÅÊÇָͨÐÅÖÐÁ½¸ö×Ö·ûÖ®¼äµÄʱ¼ä¼ä¸ôÊDz»¹Ì¶¨µÄ£¬¶øÔÚÒ»¸ö×Ö·ûÄÚ¸÷λµÄʱ¼ä¼ä¸ôÊǹ̶¨µÄ¡£

ͬ²½Í¨ÐÅÊÇÖ¸ÔÚÔ¼¶¨µÄÊý¾ÝͨÐÅËÙÂÊÏ£¬·¢ËÍ·½ºÍ½ÓÊÕ·½µÄʱÖÓÐÅºÅÆµÂʺÍÏàλʼÖÕ±£³ÖÒ»Ö£¨Í¬²½£©£¬Õâ¾Í±£Ö¤ÁËͨÐÅË«·½ÔÚ·¢ËÍÊý¾ÝºÍ½ÓÊÕÊý¾Ýʱ¾ßÓÐÍêȫһÖµĶ¨Ê±¹ØÏµ¡£

Òì²½´®ÐÐͨÐŵÄ×Ö·û±àÂë¸ñʽ£º

×Ö·ûÆðʼλ1Êý¾ÝλУÑéλֹͣλ1¿ÕÏÐλ1100/10/1×Ö·û00/10/10/10/10/10/10/10/11µÍλ¸ßλ ͼ10-1 Òì²½´®ÐÐͨПñʽ

10.2 ÊÔ·ÖÎö²¨ÌØÂʺÍÊý¾Ý´«ÊäÂʵÄÇø±ðºÍÁªÏµ¡£

¡¾½â´ð¡¿²¨ÌØÂÊÊÇָÿÃë´«Êä×Ö·ûµÄλÊý£¬µ¥Î»Îª¡°Î»/Ã롱¡£

Êý¾Ý´«ÊäÂÊΪÿÃë´«ÊäµÄ×Ö·ûÊý£¬µ¥Î»Îª¡°×Ö·û/Ã롱£¬Ã¿¸ö×Ö·û°üÀ¨Æðʼλ¡¢Êý¾ÝλºÍֹͣλ¡£ Á½Õß¼äµÄÁªÏµÎª£º

²¨ÌØÂÊ£¨Î»/Ã룩= ¶þ½øÖÆÎ»Êý/×Ö·û£¨Î»/×Ö·û£©¡ÁÊý¾Ý´«ÊäÂÊ£¨×Ö·û/Ã룩

10.3 ¼òÊöÔÚRS¡ª232C½Ó¿Ú±ê×¼ÖÐÐźÅTXD¡¢RXD¡¢RTS¡¢CTS¡¢DTR¡¢DSR¡¢DCD¡¢ RIµÄ¹¦ÄÜ¡£

¡¾½â´ð¡¿TXD£º·¢ËÍÊý¾Ý£¬´®ÐÐÊý¾ÝµÄ·¢ËͶˣ» RXD£º½ÓÊÕÊý¾Ý£¬´®ÐÐÊý¾ÝµÄ½ÓÊÕ¶Ë£»

RTS£ºÇëÇó·¢ËÍ£¬µ±Êý¾ÝÖÕ¶Ë×¼±¸ºÃËͳöÊý¾Ýʱ£¬¾Í·¢³öÓÐЧµÄRTSÐźţ»

CTS£ºÇå³ý·¢ËÍ£¬µ±Modem×¼±¸ºÃ½ÓÊÕÊý¾ÝÖÕ¶Ë´«ËÍÊý¾Ýʱ£¬·¢³öCTSÓÐЧÐźÅÀ´ÏìÓ¦RTSÐźš£ DTR£ºÊý¾ÝÖÕ¶Ë×¼±¸ºÃ£¬¿ÉÒÔÓÃ×÷Êý¾ÝÖÕ¶ËÉ豸·¢¸øÊý¾ÝͨÐÅÉ豸ModemµÄÁªÂçÐźţ» DSR£ºÊý¾Ý×°ÖÃ×¼±¸ºÃ£¬¿ÉÒÔÓÃ×÷Êý¾ÝͨÐÅÉ豸ModemÏìÓ¦Êý¾ÝÖÕ¶ËÉ豸DTRµÄÁªÂçÐźţ» DCDÔØ²¨¼ì²â£ºµ±±¾µØModem½ÓÊÕµ½À´×ÔÔ¶³ÌModemÕýÈ·µÄÔØ²¨ÐźÅʱ£¬ÓɸÃÒý½ÅÏòÊý¾ÝÖÕ¶Ë·¢³öÓÐЧÐźţ»

RI£ºÕñÁåָʾ£¬×Ô¶¯Ó¦´ðµÄModemÓôËÐźÅ×÷Ϊµç»°ÁåÏìµÄָʾ¡£ÔÚÏìÁåÆÚ¼ä£¬¸ÃÒýÏß±£³ÖÓÐЧ¡£ 10.4 ¼òÊö8250ÄÚ²¿µÄ·¢ËÍ»º³åÆ÷/½ÓÊÜ»º³åÆ÷µÄ×÷Óá£

¡¾½â´ð¡¿·¢ËÍ»º³åÆ÷ÓÃÓÚ½ÓÊÕCPUËÍÀ´µÄ´ý·¢Ë͵IJ¢ÐÐÊý¾Ý£¬È»ºóÓÖ²¢ÐÐ×°Èëµ½Êä³öÒÆÎ»¼Ä´æÆ÷¡£¸ÃÊý¾Ýͨ¹ýÒÆÎ»´®ÐÐË͵½Êä³öÏßÉÏ£¨Êý¾ÝÒÆÎ»Êä³ö֮ǰÊ×ÏÈ·¢ËÍÆðʼ룬Êý¾ÝÒÆÎ»Êä³öÍêÖ®ºóËͳöÆæÅ¼Ð£Ñéλ¼°Í£Ö¹Î»£©¡£´®ÐÐÊäÈëÊý¾ÝÒÀ´ÎµØ±»½ÓÊÕ£¬²¢´«¸ø½ÓÊÕÒÆÎ»¼Ä´æÆ÷£¬½ÓÊÕÒÆÎ»¼Ä´æÆ÷½ÓÊÕÕâЩÊý¾Ýλ£¬Ö±µ½×°ÂúΪֹ£¬È»ºóÊäÈëÊý¾Ý´ÓÒÆÎ»¼Ä´æÆ÷²¢Ðеش«Ë͵½½ÓÊÕ»º³åÆ÷ÖУ¨È¥µôÁËÆðʼλ¡¢Í£Ö¹Î»ÓëÆæÅ¼¼ì²âλºóµÄ½á¹ûËÍÈ룩£¬CPU´Ó½ÓÊÕ»º³åÆ÷¾Í¿É¶Á³öÊÕµ½µÄÊý¾Ý¡£

10.5 ¼òÊö8250ÄÚ²¿²¨ÌØÂʵÄÉ趨¹ý³Ì¡£

¡¾½â´ð¡¿ÏÈдͨÐÅ¿ØÖƼĴæÆ÷£¬Ê¹DLAB=1£¬¶øºó¸ù¾ÝͨÐÅË«·½Ô¼¶¨µÄʱÖÓÆµÂʺͲ¨ÌØÂÊËã³ö²¨ÌØ

ÂÊÒò×Ón¡ª¡ªÊ±ÖÓÆµÂÊ£½n¡Á²¨ÌØÂÊ£¬È»ºóͨ¹ý¶Ë¿ÚÊä³öÖ¸ÁîOUT½«²¨ÌØÂÊÒò×ÓдÈë16λµÄ³ýÊýËø´æÆ÷¼´ÊµÏÖ²¨ÌØÂÊÉ趨¹ý³Ì¡£

10.6 8250оƬÄܹ»¹ÜÀíÄÄËļ¶Öжϣ¬ËüÃÇÔÚºÎÖÖÇé¿öÏ·¢Éú£¿ ¡¾½â´ð¡¿

£¨1£©½ÓÊÕÆ÷Ïß·״̬Öжϣº°üÀ¨Ô½ÏÞ¡¢ÆæÅ¼´í¡¢¸ñʽ´í¡¢¼ä¶ÏµÈÒýÆðµÄÖжϡ£¶ÁͨÐÅ״̬¼Ä´æÆ÷¿Éʹ´ËÖжϸ´Î»¡£

£¨2£©½ÓÊÕÊý¾Ý¼Ä´æÆ÷¡°Âú¡±Öжϣº¶Á½ÓÊÕÊý¾Ý¼Ä´æÆ÷¿É¸´Î»´ËÖжϡ£ £¨3£©·¢ËÍÊý¾Ý¼Ä´æÆ÷¡°¿Õ¡±ÖжϣºÐ´·¢ËÍÊý¾Ý¼Ä´æÆ÷¿ÉʹÕâÒ»Öжϸ´Î»¡£

£¨4£©Modem״̬Öжϣº°üÀ¨·¢ËͽáÊø¡¢Modem×¼±¸ºÃ¡¢ÕñÁåָʾ¡¢½ÓÊÕÏß·Ðźżì²âµÈΪModem״̬ÖжÏÔ´£¬¶ÁModem״̬¼Ä´æÆ÷¿É¸´Î»¸ÃÖжϡ£

10.7 ÒÔͼ10-10ËùʾµÄÁ¬½ÓÐÎʽΪÀý£¬Éèϵͳ¹¤×÷¹ý³ÌÖÐÒÔ²éѯ·½Ê½·¢ËÍÊý¾Ý£¬¶øÒÔÖжϷ½Ê½½ÓÊÕÊý¾Ý£¬Êý¾Ýλ8λ£¬Å¼Ð£Ñ飬2λֹͣ룬²¨ÌØÂÊΪ4800HZ£¬Çë±àд³ÌÐò¶Î¶Ô8250µÄ³õʼ»¯£¬²¢±àдÏàÓ¦µÄÖжϷþÎñ×Ó³ÌÐò¡£

¡¾½â´ð¡¿Ê±ÖÓÆµÂÊΪ1.8432MHz£¬²¨ÌØÂÊΪ4800bps£¬¹Ê³ýÊý²¨ÌØÂÊÒò×ÓΪ0018H£¬8250µÄ³õʼ»¯ÈçÏ£º

£»ÉèÖò¨ÌØÂÊ

MOV AL£¬10000000B £»DLAB=1

MOV DX£¬3FBH £»Í¨ÐÅ¿ØÖƼĴæÆ÷µØÖ· OUT DX£¬AL £»Ð´ÈëͨÐÅ¿ØÖƼĴæÆ÷

MOV AL£¬18H £»ÖÃ4800²¨ÌØÂʳýÊýµÍλ MOV DX£¬3F8H

OUT DX£¬AL £»Ð´Èë³ýÊýËø´æÆ÷µÍλ MOV AL£¬00 £»ÖÃ4800²¨ÌØÂʳýÊý¸ßλ MOV DX£¬3F9H

OUT DX£¬AL £»Ð´Èë³ýÊýËø´æÆ÷µÄ¸ßλ £»ÉèÖÃ×Ö·ûÊý¾Ý¸ñʽ

MOV AL£¬00011111B £»ÉèÖÃÊý¾Ý¸ñʽ MOV DX£¬3F8H

OUT DX£¬AL £»Ð´ÈëͨÐÅ¿ØÖƼĴæÆ÷ MOV DX£¬ 3FCH MOV AL£¬0BH

OUT DX£¬AL £»³õʼ»¯MODEM¼Ä´æÆ÷ MOV DX£¬3F9H £»³õʼ»¯ÖжÏÔÊÐí¼Ä´æÆ÷

MOV AL£¬01H £»ÔÊÐí½ÓÊÕÊý¾Ý¼Ä´æÆ÷Âú²úÉúÖÐ¶Ï OUT DX£¬AL STI

ÖжϷþÎñ×Ó³ÌÐòÈçÏ£º

RECEIVE£ºPUSH AX

PUSH BX PUSH DX PUSH DS

MOV DX£¬3FDH IN AL£¬DX TEST AL£¬DX TEST AL£¬IEH JNZ ERROR MOV DX£¬3F8H IN AL£¬DX AND AL£¬7FH

MOV BX£¬OFFSET REVBUF MOV [BX]£¬AL MOV DX£¬INTRR

MOV AL£¬20H £»·¢ÖжϽáÊøÃüÁîEOI¸ø8259 OUT 0A0H£¬AL OUT 20H£¬AL