1、MODEL TINY PCIBAR3 EQU 1CH ;8位I/O空间基地址(它就是实验仪的基地址, 也为DMA & 32 BIT ;RAM板卡上的8237提供基地址) Vendor_ID EQU 10EBH ;厂商ID号 Device_ID EQU 8376 ;设备ID号 .STACK 100 .DATA IO_Bit8_BaseAddress DW ? msg0 DB 'BIOS不支持访问PCI $' msg1 DB '找不到Star PCI9052板卡 $' msg2 DB '读8位I/O空间基地址时出错$' CO
2、M_ADD DW 00F3H ;控制口偏移量 GGG DW ? HHH DW ? WWW DW ? PA_ADD DW 00F0H ;PA口偏移量 PB_ADD DW 00F1H ;PB口偏移量 PC_ADD DW 00F2H ;PC口偏移量 XXX DW ? LED_Data DB 11001100B ;红灯全亮 DB 01010110B ;东西绿灯,南北红灯。 从高位7到低位0为0则亮,1则灭。排线反接则顺序颠倒亮。 DB 11011110B ;东西绿灯闪烁
3、南北红灯 DB 10011010B ;东西黄灯亮,南北红灯 DB 01100101B ;东西红灯,南北绿灯 DB 11101101B ;东西红灯,南北绿灯闪烁 DB 10101001B ;东西红灯,南北黄灯亮 SG DB 6fH,7fH,07H,7dH,6dH,66H,4fH,5bH,06H,3fH ;9-0 .CODE START: MOV AX,@DATA MOV DS,AX NOP CALL InitPCI CALL ModifyAddress ;根据PCI提供的基地址,将偏移地址转化为实地址 MOV
4、AL,10000000B ;PA、PB、PC为基本输出模式 MOV DX,COM_ADD OUT DX,AL ;灯全亮 MOV BX,OFFSET LED_Data MOV DX,PA_ADD start0: MOV AL,0 ;红灯全亮 XLAT OUT DX,AL CALL DL500ms START1: MOV AL,01111101B ;东西绿灯,南北红灯 OUT DX,AL CALL DL5S MOV SI, 3FH MOV DI, 4FH CALL
5、 DJS MOV CX,5 START2: MOV AL,01111101B ;东西绿灯闪烁,南北红灯 OUT DX,AL CALL DL500ms MOV AL,11111101B OUT DX,AL CALL DL500ms LOOP START2 MOV AL,10111101B ;东西黄灯亮,南北红灯 OUT DX,AL CALL DL3S MOV AL,11010111B ;东西红灯,南北绿灯 OUT DX,AL CALL DL5S MOV CX,5 MOV SI,3
6、FH MOV DI,4FH CALL,DJS START3: MOV AL,11010111B ;东西红灯,南北绿灯闪烁 OUT DX,AL CALL DL500ms MOV AL,11011111B OUT DX,AL CALL DL500ms LOOP START3 MOV AL,11011011B ;东西红灯,南北黄灯亮 OUT DX,AL CALL DL3S JMP START1 ;倒计时显示程序 DJS PROC NEAR
7、 PUSH DX PUSH CX PUSH BX PUSH AX PRT: NUM: MOV Al, [SI] ;设置段选码,将SI中的内容送入PA口 MOV DX, PA_ADD OUT DX, Al MOV Al, 0FcH ;设置位选码,PC0口置0高四位为0 MOV DX, PC_ADD ;其他口为1来选中LED1,显示个位 OUT DX, Al CALL DELAY
8、 MOV Al, [DI] ;设置段选码,将DI中的内容送入PA口 MOV DX, PA_ADD OUT DX, Al MOV Al, 0FDH ;设置位选码,PC1口置0高四位为0 MOV DX, PC_ADD ;其他口为1来选中LED2,显示十位 OUT DX, Al CALL DELAY LOOP NUM ;循环到NUM INC SI
9、 ;个位SI自增1 CMP SI, OFFSET SG + 10 ;与表外的第一个偏移地址相比较,如果不 JNZ PRT ;等则显示数据且SI+1,如果相等顺序执 INC DI ;十位DI自增1 MOV SI, OFFSET SG ;将SG即9的偏移地址送给SI CMP DI, OFFSET SG + 10 ;与表外的第一个偏移地址相比较,如果不 JNZ PRT ;等则显示数据且DI+1,如果相等顺序执行 mov al, 0
10、 out dx, al POP AX ;结束子程序 POP BX POP CX POP DX RET DJS ENDP DL500ms PROC NEAR PUSH AX PUSH DX MOV DX,500 ;延时500ms MOV AH,0FFH ;星研公司提供的软中断 INT 21H POP DX POP AX RET DL500ms ENDP DL3S PROC NEAR PUSH CX MOV CX,6 DL3
11、S1: CALL DL500ms LOOP DL3S1 POP CX RET ENDP DL5S PROC NEAR PUSH CX MOV CX,10 DL5S1: CALL DL500ms LOOP DL5S1 POP CX RET ENDP InitPCI PROC NEAR MOV AH,00H MOV AL,03H INT 10H ;清屏 MOV AH,0B1H MOV AL,01H INT 1AH CMP AH,0 JZ
12、 InitPCI2 LEA DX,msg0 InitPCI1: MOV AH,09H INT 21H JMP Exit InitPCI2: MOV AH,0B1H MOV AL,02H MOV CX,Device_ID MOV DX,Vendor_ID MOV SI,0 INT 1AH JNC InitPCI3 ;是否存在Star PCI9052板卡 LEA DX,msg1 JMP InitPCI1 InitPCI3: MOV DI,PCIBAR3 MOV AH,0B1H MOV A
13、L,09H INT 1AH ;读取该卡PCI9052基地址 JNC InitPCI4 LEA DX,msg2 JMP InitPCI1 InitPCI4: AND CX,0FFFCH MOV IO_Bit8_BaseAddress,CX RET InitPCI ENDP ModifyAddress PROC NEAR ADD COM_ADD,CX ADD PA_ADD,CX ADD PB_ADD,CX ADD PC_ADD,CX RET ModifyAddress ENDP Exit: MOV AH,4CH INT 21H END START
©2010-2025 宁波自信网络信息技术有限公司 版权所有
客服电话:4009-655-100 投诉/维权电话:18658249818