资源描述:
《8254计数器器应用实验》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、实验三8254计数器器应用实验一、实验目的1.掌握8254的工作方式及应用编程;2.掌握8254的典型应用电路的连接。二、实验内容及步骤1.实验内容编写程序,将8254的计数器0设置为方式0/3/2,计数值为十进制5,用微动开关KK1-作为CLK0时钟,OUT0连接INTR,每当KK1-按动5次后产生中断请求,在屏幕上显示中断次数。8254中的GATE0已经连接了一个上拉电阻,所以GATE0不用连接。图1实验线路2.实验步骤(1)按图1接线;(2)键入:check命令,记录分配的中断资源及I/O空间;(3)利用查出的地址编写程序,然后编译链接;(4)运行程序,按动KK1-
2、微动开关,观察是否5次后屏幕显示字符“5”。三、程序编程框架;T8254-1.asm;8254计数应用实验;***************根据CHECK配置信息修改下列符号值*******************INTR_IVADDEQU01C8H;INTR对应的中断矢量地址INTR_OCW1EQU0A1H;INTR对应PC机内部8259的OCW1地址INTR_OCW2EQU0A0H;INTR对应PC机内部8259的OCW2地址INTR_IMEQU0FBH;INTR对应的中断屏蔽字PCI_INTCSREQU9038H;PCI卡中断控制寄存器地址IOY0EQU9800H;*
3、****************************************************************MY8254_COUNT0EQUIOY0+00H*4;8254计数器0端口地址MY8254_COUNT1EQUIOY0+01H*4;8254计数器1端口地址MY8254_COUNT2EQUIOY0+02H*4;8254计数器2端口地址MY8254_MODEEQUIOY0+03H*4;8254控制寄存器端口地址STACK1SEGMENTSTACKDW256DUP(?)STACK1ENDSDATASEGMENTCS_BAKDW?;保存INTR原中断处
4、理程序入口段地址的变量IP_BAKDW?;保存INTR原中断处理程序入口偏移地址的变量IM_BAKDB?;保存INTR原中断屏蔽字的变量DATAENDSSTR1DB'COUNT:$';显示的字符串CODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXCLIMOVDX,PCI_INTCSRSUBDX,19HINAL,DXMOVDX,PCI_INTCSR;初始化PCI卡中断控制寄存器MOVAX,1F00H;向PCI_INTCSR中写入003F1F00HOUTDX,AXADDDX,2MOVAX,003FHOUTDX,AX
5、MOVAX,0000H;替换INTR的中断矢量MOVES,AXMOVDI,INTR_IVADDMOVAX,ES:[DI]MOVIP_BAK,AX;保存INTR原中断处理程序入口偏移地址MOVAX,OFFSETMYISRMOVES:[DI],AX;设置当前中断处理程序入口偏移地址ADDDI,2MOVAX,ES:[DI]MOVCS_BAK,AX;保存INTR原中断处理程序入口段地址MOVAX,SEGMYISRMOVES:[DI],AX;设置当前中断处理程序入口段地址MOVDX,INTR_OCW1;设置中断屏蔽寄存器,打开INTR的屏蔽位INAL,DXMOVIM_BAK,AL;
6、保存INTR原中断屏蔽字ANDAL,INTR_IMOUTDX,ALSTIWAIT1:MOVAH,1;判断是否有按键按下INT16HJZWAIT1;无按键则跳回继续等待,有则退出QUIT:CLIMOVDX,PCI_INTCSR;恢复PCI卡中断控制寄存器MOVAX,0000HOUTDX,AXMOVAX,0000H;恢复INTR原中断矢量MOVES,AXMOVDI,INTR_IVADDMOVAX,IP_BAK;恢复INTR原中断处理程序入口偏移地址MOVES:[DI],AXADDDI,2MOVAX,CS_BAK;恢复INTR原中断处理程序入口段地址MOVES:[DI],AXM
7、OVDX,INTR_OCW1;恢复INTR原中断屏蔽寄存器的屏蔽字MOVAL,IM_BAKOUTDX,ALSTIMOVAX,4C00H;返回到DOSINT21HMYISRPROCNEAR;中断处理程序MYISRMOVAL,39HMOVAH,0EHINT10HMOVAL,20HINT10HOVER:MOVDX,PCI_INTCSRSUBDX,19HINAL,DXMOVDX,PCI_INTCSR;清PCI卡中断控制寄存器标志位ADDDX,2MOVAX,003FHOUTDX,AXMOVDX,INTR_OCW2;向PC机内部8259发