tjpoty 发表于 2010-6-28 21:32 只看TA 1楼 |
---|
|
[交流] 8255流水灯显示 很酷的哦 现在大家都在用电脑实现一些声音效果 但是大家有没有想过如果用一些老古董的东西会给人更奇妙的感觉现在就让我们用8255来实现流水灯,8255这种板子在很多学校里都有淘汰的@@ 首先我们用的是汇编语言 ,代码如下: 8255流水灯显示实验 ;****************根据查看端口资源修改下列符号值******************* IOY0 EQU 9C00H ;片选IOY0对应的端口始地址 ;***************************************************************** MY8255_A EQU IOY0+00H*4 ;8255的A口地址 MY8255_B EQU IOY0+01H*4 ;8255的B口地址 MY8255_C EQU IOY0+02H*4 ;8255的C口地址 MY8255_MODE EQU IOY0+03H*4 ;8255的控制寄存器地址 STACK1 SEGMENT STACK DW 256 DUP(?) STACK1 ENDS DATA SEGMENT LA DB ? ;定义数据变量 LB DB ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV DX,MY8255_MODE ;定义8255工作方式 MOV AL,80H ;工作方式0,A口和B口为输出 OUT DX,AL MOV DX,MY8255_A ;写A口发出的起始数据 MOV AL,80H OUT DX,AL MOV LA,AL MOV DX,MY8255_B ;写B口发出的起始数据 MOV AL,01H OUT DX,AL MOV LB,AL LOOP1: CALL DALLY MOV AL,LA ;将A口起始数据右移再写入A口 ROR AL,1 MOV LA,AL MOV DX,MY8255_A OUT DX,AL MOV AL,LB ;将B口起始数据左移再写入B口 ROL AL,1 MOV LB,AL MOV DX,MY8255_B OUT DX,AL MOV AH,1 ;判断是否有按键按下 INT 16H JZ LOOP1 ;无按键则跳回继续循环,有则退出 QUIT: MOV AX,4C00H ;结束程序退出 INT 21H DALLY PROC NEAR ;软件延时子程序 PUSH CX PUSH AX MOV CX,3FFH D1: MOV AX,0FFFFH D2: DEC AX JNZ D2 LOOP D1 POP AX POP CX RET DALLY ENDP CODE ENDS END START 连接的话 就是在电脑上用数据线连到板子,然后IOY0 CS RDWR的线接好 就可以看到流水灯了 试试吧@@ 首次发主题 请大家都支持 版主多体谅 |
0 |
作者的其他主题 |
---|
十年之伤 |
8255流水灯显示 很酷的哦 |
日耳曼,你赢的名副其实 |
moshou4444 发表于 2010-6-30 00:20 只看TA 8楼 |
---|
经鉴定 明显的95/98程序 nt系统无法运行 可以用Masm进行汇编 在虚拟机里边测试 |
0 |
|
---|