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 |