打印

1380的传送和读这样写有问题吗?(自己想明白了)

[复制链接]
1523|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
benjimin789|  楼主 | 2009-5-22 10:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ST, se, tc, RS, pc
CPU采用ABOV的0604,
Send_1830是写1830,写分的值
WP_STAR0是让WP=0
Osc_Enable:;时钟开始运行
Reve_Byte:是读分的值
问题是怎么试读回来的都是FF。IO_DATA的值没有变化,1380没有反应,无法得知数据有没有正确传送,仿真和实际测量与1380连接的3脚均有变化,IO口设置都没问题。怀疑是晶振的问题和1380的问题,都更换过问题依旧。我仔细对过器件说明没有发现有什么问题。希望大家给个意见谢谢
;--
Send_1830:
    CLR1    RST
    NOP
    CLR1    SCLK
    NOP
    SET1    RST
    NOP
    LDA        #82H
    LDM        BitCnt,#08H        ;传送位数为8
Send_1831:
    ROR        A                ;将最低位传送给进位位C
    STC        IO_DATA            ;C 位传送至数据总线
    NOP
    SET1    SCLK            ; 时钟上升沿发送数据有效
    NOP
    CLR1    SCLK            ;清时钟总线
    DBNE    BitCnt,Send_1831;位传送未完毕则继续
    NOP
Send_1832:; 准备发送数据
    LDA        #22H
    LDM        BitCnt,#08H
Send_1833:
    ROR        A
    STC        IO_DATA
    NOP        
    SET1    SCLK
    NOP
    CLR1    SCLK
    DBNE    BitCnt,Send_1833
    NOP
    CLR1    RST;逻辑操作完毕清RST
    SET1    IO_DATA
    SET1    SCLK
    RET
;---
WP_STAR:;wp=0
    CLR1    RST
    NOP
    CLR1    SCLK
    NOP
    SET1    RST
    NOP
    LDA        #8EH
    LDM        BitCnt,#08H        ;传送位数为8
WP_STAR0:
    ROR        A                ;将最低位传送给进位位C
    STC        IO_DATA            ;C 位传送至数据总线
    NOP
    SET1    SCLK            ; 时钟上升沿发送数据有效
    NOP
    CLR1    SCLK            ;清时钟总线
    DBNE    BitCnt,WP_STAR0;位传送未完毕则继续
    NOP
WP_STAR1:; 准备发送数据
    LDA        #00H
    LDM        BitCnt,#08H
WP_STAR2:
    ROR        A
    STC        IO_DATA
    NOP        
    SET1    SCLK
    NOP
    CLR1    SCLK
    DBNE    BitCnt,WP_STAR2
    NOP
    CLR1    RST;逻辑操作完毕清RST
    SET1    IO_DATA
    SET1    SCLK
    RET
    ;--------------
Osc_Enable:;时钟开始运行
    CLR1    RST
    NOP
    CLR1    SCLK
    NOP
    SET1    RST
    NOP
    LDA        #80H
    LDM        BitCnt,#08H        ;传送位数为8
Osc_BYTE0:
    ROR        A                ;将最低位传送给进位位C
    STC        IO_DATA            ;C 位传送至数据总线
    NOP
    SET1    SCLK            ; 时钟上升沿发送数据有效
    NOP
    CLR1    SCLK            ;清时钟总线
    DBNE    BitCnt,Osc_BYTE0;位传送未完毕则继续
    NOP
Osc_BYTE1:; 准备发送数据
    LDA        #00H
    LDM        BitCnt,#08H
Osc_BYTE2:
    ROR        A
    STC        IO_DATA
    NOP        
    SET1    SCLK
    NOP
    CLR1    SCLK
    DBNE    BitCnt,Osc_BYTE2
    NOP
    CLR1    RST;逻辑操作完毕清RST
    SET1    IO_DATA
    SET1    SCLK
    RET
    ;======================


Reve_Byte:
    CLR1    RST; 复位引脚为低电平所有数据传送终止
    NOP
    CLR1    SCLK; 清时钟总线
    NOP
    SET1     RST; 复位引脚为高电平逻辑控制有效
    LDA        #83H; 准备发送命令字节
    LDM        BitCnt,#08h; 传送位数为8
Reve_Byte0:
    ROR        A; 将最低位传送给进位位C
    STC     IO_DATA;C 位传送至数据总线
    NOP
    SET1    SCLK; 时钟上升沿发送数据有效
    NOP
    CLR1    SCLK; 清时钟总线
    DBNE    BitCnt,Reve_Byte0; 位传送未完毕则继续
    NOP
Reve_Byte1:; 准备接收数据
    LDA        #00H; 清类加器
    CLRC    ; 清进位位C
    LDM        BitCnt,#08h; 接收位数为8
Reve_Byte2:
    NOP
    LDC        IO_DATA; 数据总线上的数据传送给C
    ROR        A        ; 从最低位接收数据
    NOP
    CLR1    SCLK    ; 时钟下降沿接收数据有效
    NOP
    SET1    SCLK    ; 时钟总线置高
    DBNE    BitCnt,Reve_Byte2; 位接收未完毕则继续
    STA        Xmtmin
    ;SET1    RST
    NOP
    CLR1    RST        ; 逻辑操作完毕清RST
    SET1    IO_DATA
    SET1    SCLK
    RET

相关帖子

沙发
benjimin789|  楼主 | 2009-5-22 10:22 | 只看该作者

ABOV的指令很简单

传送指令为LD什么,就是LOAD的意思。比如LDA,LDX。就是把数传到A,X。
把A的数字传出来是STA,STC是把C的数据发到。。比如CPU的某一脚,好象用ABOV的朋友不对哦,刚用了没多久发现以前用过的芯片都不听使唤了哎。是不是对时序的理解还不对?如果发送接收协议都是对的,会不是速度不对,资料上写的 是5V的时候支持最大串行是2M,我用的8M晶振,一个指令需要0.5us。好象不应该出现这样的问题。这个电路上我还用到了HT1621和ATMEL24C01,1621已经调试好,2401却老是读不到ACK信号,我觉得和这个1380的问题应该差不多,可是想了2天也没找到问题。晕死了

使用特权

评论回复
板凳
benjimin789|  楼主 | 2009-5-22 10:22 | 只看该作者

大虾快来啊

别沉下去了啊。看在我这么早就上论坛的份上

使用特权

评论回复
地板
benjimin789|  楼主 | 2009-5-22 10:59 | 只看该作者

数据持续时间为好多us 合适?

以前用的2051数据持续6us。好象挺好的,现在快些应该没问题把

使用特权

评论回复
5
benjimin789|  楼主 | 2009-5-22 17:19 | 只看该作者

可怜啊。这世道只能自生自灭

程序没问题,是CPU的端口设置问题。输入的是是要改过来就好,2051,8951使惯了的菜鸟。。。。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

22

帖子

0

粉丝