sulla

    1. 谢谢你的回复。8255三个口都可以输入输出,我用的是方式0 ,通过程序随时设定各个口的输入输出的。所以在 testack子程序下面的 有个mov dx,92h. 向8255输控制字,使得B口为输入的。 其实,我奇怪的是,就算我收不到应答吧,那么8255也应该控制一个灯亮,告诉我没有收到应答啊。ps:当时郁闷之极,明知实验箱是新的还怀疑过8255,所以还换了个。。。所以确定8255没得问题。 不过,示波器,,,看来还真得试着用下。
    2. 谢谢你的回复。:)   地址我就用的000 因为就一个2402片子。接下来写入数据的时候应该是自动将地址+1的。 我是在TPC-2003A教学实验箱上面连接的,应该不需要再自己连接上拉电阻的。示波器。。。还木有用介个检测过呢~~~回头了解下用示波器怎么查
    3. 其中 8255的PB0接SDA PC0接SCL PA0~3接LED 是用来显示读出来的数据的。PA7接8253的OUT  PC7和PC6分别接两个LED用来显示是否接到应答
    4. delay   proc near                   ;延迟子程序   push cx         push dx    delay5us: mov dx,io8253         mov al,10h        mov dx,io82530        mov al,05h        in al,dxtestout5us:  mov dx,io8255a                 ;8255a口输入 OUT端输入PA7        in al,dx        rcl al,1                        ;al 循环左移一位,以检测CF是否为1        jnc testout5us         pop dx        pop cx        retdelay   endp   delay1  proc near             ;1ms延时子程序         push cx         push dx delay1ms: mov dx,io8253         mov al,30h             ;选择先低后高写入        mov dx,io82530        mov ax,3E8h               ;一毫秒要计数1000,0000 0011 1110 1000        in ax,dx        testout1ms:  mov dx,io8255a                 ;8255a口输入 OUT端输入PA7        in al,dx        rcl al,1                        ;al 循环左移一位,以检测CF是否为1        jnc testout1ms        pop dx        pop cx         retdelay1 endpdelay10  proc near           ;10ms延时子程序         push cx         push dx   delay10ms: mov dx,io8253         mov al,30h             ;选择先低后高写入        mov dx,io82530        mov ax,2710h               ;10毫秒要计数10000        in ax,dx        testout10ms:  mov dx,io8255a                 ;8255a口输入 OUT端输入PA7        in al,dx        rcl al,1                        ;al 循环左移一位,以检测CF是否为1        jnc testout10ms        pop dx        pop cx         retdelay10 endptestack  proc near   push cx         mov cx,0ffh         mov al,00h   mov dx,io8255c   out dx,al ;PC0接SCL,将SCL置0         nop   mov al,01h   mov dx,io8255b   out dx,al ;PB0接SDA,将SDA置1   nop   mov al,01h   mov dx,io8255c   out dx,al ;PC0接SCL,将SCL置1   call delayread:   mov al,92h ;读入SDA状态,若是零则表明写成功   mov dx,io8255   out dx,al   mov dx,io8255b   in  al,dx   mov bl,al   mov dx,io8255c   mov al,00h   out dx,al   mov al,bl   and al,01h   jz  change   dec cx   jcxz error   jmp  readerror:   mov dx,io8255c ;此时用LED8显示未接收到响应信号   mov al,80h   out dx,al   jmp exit ;结束change:  mov dx,io8255            ;设8255为A口输入,B、C输出   mov al,90h   out dx,al   mov dx,io8255c   mov al,40h   out dx,al ;此时用LED7表明接收到响应信号   pop cx         rettestack  endpcode   endsend start

最近访客

< 1/1 >

统计信息

已有43人来访过

  • 芯积分:--
  • 好友:--
  • 主题:1
  • 回复:4

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言