《微机原理与接口技术》第7章 并行通信与接口技术-教学课件(非AI生成).ppt
MOVDX,OFFSETPRINT_INTMOVAX,250FHINT21HPOPDS ;恢复原DS值INAL,21H ;从奇地址读8259A屏蔽字MOVIMF,AL ;保存原屏蔽字ANDAL,7FH ;允许PCIRQ7中断OUT21H,AL MOVDX,303H;303H是控制口地址MOVAL ;A口方式1输出,PC4为输出OUTDX,ALMOVAL,0DH ;置PC6=1,允许8255A中断OUTDX,AL;此时(DX)=303H,下同例2:方式1操作——打印机接口编程*MOVAL,09H ;8255A的PC4输出高电平OUTDX,AL ;(初始化STROBE#=1)STI ;标志寄存器IF开中断MOVBXOFFSETBUF;缓冲区首地址MOVCL,n ;传送长度MOVAL,[BX] ;取数据INCBXMOVDX,300H ;A口地址OUTDX,AL ;向8255A输出第一个字节DECCLMOVDX,303H ;8255A控制口地址例2:方式1操作——打印机接口编程*MOVAL,08H ;输出PC4低电平OUTDX,AL ;(发STROBE#=0)NOP ;延时,形成脉宽NOPMOVAL,09H ;输出PC4高电平OUTDX,AL ;(STROBE#=1)HERE:CMPCL,0 ;等待n次中断JNZHERECLI ;开中断PUSHDS ;保存DSMOVAX,INT0F_SEG;恢复类型0FH原中断向量例2:方式1操作——打印机接口编程*MOVDS,AXMOVDX,INT0F_OFFMOVAX,250FHINT21HPOPDSMOVAL,IMF ;取原屏蔽字OUT21H,AL ;恢复原屏蔽状态MOVAH,4CH;返回DOSINT21H;下面是中断服务程序例2:方式1操作——打印机接口编程*PRINT_INTPROCNEARPUSHDX ;保护现场PUSHAXMOVDX,300HMOVAL,[BX];BX已指向缓冲区BUFOUTDX,AL ;8255A端口A输出下一个字节INCBX ;修改地址DECCL ;字节计数MOVDX,303HMOVAL,08H ;产生STROBE#=0信号OUTDX,AL例2:方式1操作——打印机接口编程*NOP ;产生脉宽NOPMOVAL,09H ;产生STROBE#=1OUTDX,ALMOVAL,20H ;发EOI结束中断OUT20H,ALPOPAX ;恢复现场POPDXIRETPRINT_INTENDPCODEENDSENDSTART例2:方式1操作——打印机接口编程*练习1:设计一个方波信号发生器,要求用8255A的PC5端输出连续方波信号(频率不作要求,占空比1:1)。设计硬件电路,并编写满足功能要求的程序段。设:8255A的片选地址为310~31FH。延时程序DELY_2S已知可以直接调用。想一想:这样的发生器有缺点吗?*练习二:设计一个彩灯控制电路,由全灭开始依次点亮“天津工程师范学院”8个汉字,设计硬件控制电路,并编写程序段。设:8255A的片选地址为310~