基于TPC-USB实验系统的时钟系统设计
05计3 李三强20051000064 林诗峰 20051000153 黄绰彬 20051000003
POP BX POP AX IRET
INT_TIMER ENDP
;===================================================================== ;子程序,功能为获取输入的数字并转化,出口为AL
;===================================================================== GETINPUT PROC REINPUT:
LEA DX,BUFF ;DOS 10号功能,获取输入字符串,首位=[BUFF+2] MOV AH,0AH INT 21H
LEA SI,BUFF MOV AL,[SI+1]
CMP AL,02H ;限制输入字数 JG DISPERR MOV AH,[SI+2]
CMP AH,'q' ;检查是否q退出 JE RETURN
CMP AH,'0' ;检查输入数字范围是否0-9 JL DISPERR CMP AH,'9' JG DISPERR MOV AL,[SI+3] CMP AL,'0' JL DISPERR CMP AL,'9' JG DISPERR
AND AL,0FH ;屏蔽高4位 SHL AH,04H ;AH左移4位 ADD AL,AH ;AL=输入的数 CMP AL,0H JL DISPERR CMP AL,MAX ;MAX= 23 OR 59 JG DISPERR JMP RETURN
DISPERR: ;输入错误处理,警告并提示重新输入 MOV DX,OFFSET MESGERR MOV AH,09H INT 21H
JMP REINPUT RETURN:RET GETINPUT ENDP
;=====================================================================
第21页 共26页
基于TPC-USB实验系统的时钟系统设计
05计3 李三强20051000064 林诗峰 20051000153 黄绰彬 20051000003
;子程序,初始化,设置外部硬件工作方式,并判断是否需初始化时间
;===================================================================== INIT PROC
CMP SETTIME,1 ;检查是否已设置过时间;否则获取系统时间显示 JE KK
MOV AH,2CH ;DOS 2CH号功能,获取系统时间 INT 21H ;HOUR->CH,MINUTE->CL,SECOND->DH MOV AL,CH
CALL HEXTODEC ;HEXTODEC子程序,入出口皆为AL MOV HOUR,AL MOV AL,CL
CALL HEXTODEC MOV MINUTE,AL MOV AL,DH
CALL HEXTODEC MOV SECOND,AL KK:
MOV AL,36H ;设置通道0工作方式为3.
MOV DX,CONTR ;00110111H 通道0,16位读写,方式3,bcd码 OUT DX,AL
MOV AX,2710H ;计数初值为10000,BCD码 MOV DX,CHAN1 OUT DX,AL MOV AL,AH OUT DX,AL
MOV AL,74H ;设置通道1工作方式为2
MOV DX,CONTR ;01110100H 通道1,16位读写,方式2,2进制 OUT DX,AL MOV AX,64H ;初始值为100 MOV DX,CHAN2 OUT DX,AL
MOV AL,AH OUT DX,AL
MOV DX,IO8255B ;将8255设为A口输出
MOV AL,80H ;1000000 方式控制字A、B组方式0,A、B、C口都是输出 OUT DX,AL RET
INIT ENDP
;===================================================================== ;子程序,将16进制转换成10进制,入出口都为AL,AX受影响
;===================================================================== HEXTODEC PROC PUSH BX MOV AH,0
第22页 共26页
基于TPC-USB实验系统的时钟系统设计
05计3 李三强20051000064 林诗峰 20051000153 黄绰彬 20051000003
MOV BL,10D ;十进制 10 DIV BL
SHL AL,04H ADD AL,AH POP BX RET
HEXTODEC ENDP CODE ENDS END START
第四部分 系统测试与性能分析
4.1系统测试
系统测试包括硬件和软件两方面的测试,主要是对正确性和性能指标的测试。测试原则:先硬件后软件,先测试其正确性,后测试其性能指标。 1)硬件测试
? 电源连接正确性测试
? 测试8253的各个时钟是否正确(用示波器测CLK0、CLK1、 OUT1并观察波形) ? 测试8259能否正常发送中断(将IRQ3接到TPC-USB上的单脉冲,通过手动送个高电
平到IRQ3测试其是否正常工作)
? 测试7段数码管是否正常工作(通电是否点亮) 2)软件测试
? 运行自检程序,检测硬件链接。自检程序设计为自发自收程序,分别检测8253芯片和
试验系统的硬件连接、8255与7段数码管是否正确连通。 测试8253工作情况的程序如下:
;******************* ;* 8253分频 * ;******************* IO8253A EQU 280H IO8253B EQU 281H IO8253C EQU 283H CODE SEGMENT
ASSUME CS:CODE
START:MOV DX,IO8253C ;向8253写控制字 MOV AL,36H ;使0通道为工作方式3 OUT DX,AL
MOV AX,10000 ;写入循环计数初值1000 MOV DX,IO8253A
OUT DX,AL ;先写入低字节 MOV AL,AH
第23页 共26页
基于TPC-USB实验系统的时钟系统设计
05计3 李三强20051000064 林诗峰 20051000153 黄绰彬 20051000003
OUT DX,AL ;后写入高字节 MOV DX,IO8253C
MOV AL,76H ;设8253通道1工作方式2 OUT DX,AL
MOV AX,100 ;写入循环计数初值1000 MOV DX,IO8253B
OUT DX,AL ;先写低字节 MOV AL,AH
OUT DX,AL ;后写高字节 MOV AH,4CH ;程序退出 INT 21H CODE ENDS END START
? 首先,调试好示波器,使其检查频率为1HZ,幅度为5V。运行汇编语言检查程序是否
有误,如果程序没有错误,用示波器检查OUT1的输出是否为每秒送出一个周期为1/100秒的低电平。
? 如果仍未解决,可以单步执行或断点执行,判断出错语句,分析并改进。如果仍未检
测出错误则需重新检查硬件连接是否正确。 测试8255与7段数码管的程序如下:
;************************************** ;* 键盘输入数据(0-9)控制LED数码管显示 * ;************************************** DATA SEGMENT
IO8255A EQU 288H IO8255B EQU 28BH
LED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
MESG1 DB 0DH,0AH,'INPUT A NUM (0--9),OTHER KEY IS EXIT:',0DH,0AH,'$'
DATA ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX
MOV DX,IO8255B ;使8255的A口为输出方式 MOV AX,80H OUT DX,AL
SSS: MOV DX,OFFSET MESG1 ;显示提示信息 MOV AH,09H INT 21H
MOV AH,01 ;从键盘接收字符 INT 21H
CMP AL,'0' ;是否小于0 JL EXIT ;若是则退出 CMP AL,'9' ;是否大于9
第24页 共26页

