实验六8253/4定时器/计数器应用实验实验目的(1) 掌握8254的工作方式及应用编程(参考教材)(2) 掌握8254的典型应用电路的接法(3) 学习8254在PC系统中的典型应用方法实验设备 PC机一台,TD-PIT-B实验装置一套。
实验内容及说明1)计数应用实验。
2)定时应用实验。
3)电子发声实验注意:在断电情况,连接好实验线路,检查无误后,通电进行实验。
实验完毕,先断电,再拆线,并将导线整理好。
1. 计数应用实验:编写程序,将8254的计数器0设置为方式3,计数值为十进制5,用微动开关KK1-作为CLK0时钟,OUT0连接IRQ,每当KK1-按动5次后产生中断请求,在屏幕上显示字符“M”。
8254计数应用参考连接线图如图6-1。
总线接口+5VKK1--IRQ 图6-1 8254计数应用实验参考接线图;; 计数应用实验;;filename :;; ----PCI卡分配的第3个I/O空间MY8254_COUNT0 EQU 0E440HMY8254_COUNT1 EQU 0E441HMY8254_COUNT2 EQU 0E442HMY8254_MODE EQU 0E443H;;--PCI卡分配的第1个I/O空间INTCSR_BYTE0 EQU 0DC38H INTCSR_BYTE1 EQU 0DC39HINTCSR_BYTE2 EQU 0DC3AHINTCSR_BYTE3 EQU 0DC3BHIMB4_BYTE3 EQU 0DC1FHDATA SEGMENTCSBAK DWIPBAK DWMKBAK DBDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: CLIMOV AX,DATAMOV DS,AXMOV DX,INTCSR_BYTE0;; 设置pci卡MOV AL,00HOUT DX,ALMOV DX,INTCSR_BYTE1MOV AL,1FHOUT DX,ALMOV DX,INTCSR_BYTE2MOV AL,3FHOUT DX,ALMOV DX,INTCSR_BYTE3MOV AL,00HOUT DX,ALMOV AX,0000HMOV ES,AX;---------------------------------------------------MOV DI, 01C4H; irq 9 , INT 71h, 01c4= 71h*4;--------------------------------------------------- MOV AX,ES:[DI]MOV IPBAK,AX ;IPMOV AX,OFFSET MYINTCLDSTOSWMOV AX,ES:[DI] ;CSMOV CSBAK,AXMOV AX,SEG MYINTSTOSWIN AL,0A1HMOV MKBAK,AL;---------------------------------------------------AND AL,0fdh ; irq9;---------------------------------------------------OUT 0A1H,ALSTIMOV DX,MY8254_MODE;CLK=KK1- 定时应用实验编写程序,将8254的计数器0设置为方式2,用信号源10kHz作为CLK0时钟,计数值为十进制0(即最大计数值10000),OUT0连接IRQ,这样每计时1s后产生中断请求,制作一个秒表显示,每计时60秒自动归零。
8254定时应用实验参考连线图:总线接口+5V10KHZ(接信号源)IRQ图6-2 8254定时应用实验参考接线图; 8254定时应用实验;filename :;; PCI卡分配的第3个I/O空间MY8254_COUNT0 EQU 0E440H MY8254_COUNT1 EQU 0E441H MY8254_COUNT2 EQU 0E442H MY8254_MODE EQU 0E443H;; PCI卡分配的第1个I/O空间INTCSR_BYTE0 EQU 0DC38H INTCSR_BYTE1 EQU 0DC39H INTCSR_BYTE2 EQU 0DC3AH INTCSR_BYTE3 EQU 0DC3BHIMB4_BYTE3 EQU 0DC1FHDATA SEGMENTCSBAK DWIPBAK DWMKBAK DBSEC1 DB 30H ; 显示秒的个位SEC0 DB 31H ; 显示秒的十位DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: CLIMOV AX,DATAMOV DS,AXMOV DX,INTCSR_BYTE0MOV AL,00HOUT DX,ALMOV DX,INTCSR_BYTE1MOV AL,1FHOUT DX,ALMOV DX,INTCSR_BYTE2MOV AL,3FHOUT DX,ALMOV DX,INTCSR_BYTE3MOV AL,00HOUT DX,ALMOV AX,0000HMOV ES,AX;---------------------------------------------------MOV DI, 01C4H; irq 9 , INT 71h, 01c4= 71h*4;---------------------------------------------------MOV AX,ES:[DI]MOV IPBAK,AX ;IPMOV AX,OFFSET MYINTCLDSTOSWMOV AX,ES:[DI] ;CSMOV CSBAK,AXMOV AX,SEG MYINTSTOSWIN AL,0A1HMOV MKBAK,AL;---------------------------------------------------AND AL,0fdh ; irq9;---------------------------------------------------OUT 0A1H,ALMOV AX,0E30H; 显示00回车,注意没有换行,同在一行显示INT 10HMOV AX,0E30HINT 10HMOV AX,0E0DHINT 10HMOV DX,MY8254_MODE; CLK=10KMOV AL, 35H; 0011, 0101B 计数器0,读写低/高位方式2 ;十进制计数方式OUT DX, ALMOV DX,MY8254_COUNT0; 写入计数值10000MOV AL,0OUT DX,ALOUT DX,ALSTIA1: NOPCALL BREAKJMP A1MYINT: PUSH DSPUSH AXPUSH DXMOV AX,DATAMOV DS,AXMOV DX,IMB4_BYTE3;; 清PCI卡中断标志IN AL,DXMOV DX,INTCSR_BYTE2MOV AL,3FHOUT DX,AL;---------------------------------------------------MOV AL,61H;; irq9 从片 D1,主片 D2;---------------------------------------------------OUT 0A0H,ALMOV AL,62HOUT 20H,ALMOV AH,0EHMOV AL,SEC1INT 10HMOV AH,0EHMOV AL,SEC0INT 10HMOV AX,0E0DH; 只回车,不换行,还在原处INT 10HINC SEC0; 秒的个位+1CMP SEC0,3AH; 个位计数到10JZ B3JMP B1B3: INC SEC1MOV SEC0,30HCMP SEC1,36H ; 十位计数到 6JZ B4JMP B1B4: MOV SEC1,30H ; 计到60,重新到零B1: POP DXP OP AXP OP DSIRET;;--------------------------------BREAK PROC NEARPUSH DSMOV AH,06HMOV DL,0FFHINT 21HJE RETURN POP DSCLIMOV AL,MKBAKOUT 0A1H,ALMOV AX,0000HMOV ES,AXMOV DI,01C4H ; irq 9 INT 71H,01C4H=71H*4MOV AX,IPBAKCLDSTOSWMOV AX,CSBAKSTOSWMOV DX,INTCSR_BYTE1 MOV AL,00HOUT DX,ALSTIMOV AX,4C00HINT 21HRETURN:POP DSRETBREAK ENDPCODE ENDSEND START3. 电子发声实验:1)用实验系统扬声器做发声实验用信号源1MHz作为扬声器发声基准时钟,计数器0设置为工作方式3,由表格查出每个音符对应的时间常数送给计数器0,以确定音调,驱动扬声器产生音乐。
8254电子发声实验参考图如图6-3所示。
(发声频率已设定,但发声时间是通过软件延时控制的,因此发声时间随不同档次PC机而变化,可以通过调节延时子程序参数来调节发声时间)总线接口+5V1MHZSPK 图6-3 8254定时应用实验参考接线图; 用实验系统扬声器做发声实验MY8254_COUNT0 EQU 0E440HMY8254_COUNT1 EQU 0E441HMY8254_COUNT2 EQU 0E442HMY8254_MODE EQU 0E443HDATA SEGMENTDTABLE DB 33H, 33H, 3DH, 33H, 26H, 26H, 26H, 26H, 2DH, 2DH, 26H, 2DH, 33H D B 33H, 33H, 33H, 33H, 33H, 4DH, 45H, 3DH, 3DH, 3DH, 45H, 4DH, 45HD B 45H, 45H, 45H, 45H, 45H, 45H, 45H, 33H, 33H, 3DH, 33H, 26H, 26HD B 26H, 28H, 2DH, 2DH, 26H, 26H, 33H, 33H, 33H, 33H, 45H, 3DH, 39HDB 39H, 39H, 52H, 4DH, 4DH, 4DH, 4DH, 4DH, 4DH, 4DH, 4DH, 2DH, 2DHD B 26H, 26H, 26H, 26H, 26H, 26H, 28H, 28H, 2DH, 28H, 26H, 26H, 26HD B 26H, 2DH, 28H, 26H, 2DH, 2DH, 33H, 3DH, 4DH, 45H, 45H, 45H, 45HD B 45H, 45H, 45H, 45H, 33H, 33H, 3DH, 33H, 26H, 26H, 26H, 28H, 2DHD B 2DH, 26H, 2DH, 33H, 33H, 33H, 33H, 33H, 33H, 45H, 3DH, 39H, 39HD B 39H, 52H, 4DH, 4DH, 4DH, 4DH, 4DH, 4DH, 4DH, 4DH, 00HDATA ENDSCODE SEGMENT A SSUME CS:CODESTART: MOV AX,DATAMOV DS,AXMOV BX,OFFSET DTABLEM OV AL,[BX]M OV AH,00HA1: MOV DL,0AH ;CLK=1MHz M UL DLP USH AXMOV DX,MY8254_MODEMOV AL,36H;;0011,0110B计数器0,读写低高字节, ;;方式3,二进制OUT DX,ALP OP AXMOV DX,MY8254_COUNT0OUT DX,ALMOV AL,AHOUT DX,ALI NC BXM OV AH,00HM OV AL,[BX]T EST AL,0FFHJZ A2PUSH AXCALL DALLYCALL BREAKPOP AXJMP A1A2: MOV BX,OFFSET DTABLEMOV AL,[BX]M OV AH,00HJ MP A1DALLY: MOV CX,0F7FFH ; 根据不同机器配置修改此值D1: MOV AX,0D00HD2: DEC AXJNZ D2LOOP D1BREAK PROC NEAR ;检测是否有键按下MOV AH,06HMOV DL,0FFHINT 21HJE RETURNMOV AX,4C00HINT 21HRETURN:RETBREAK ENDPCODE ENDSEND START2) 用PC机扬声器做发声实验有三个计数器在PC机中集成,它们的功能、操作完全与8254兼容。