请问375用avr mage128 i/o 直接用控制行吗?

请问375用avr mage128 i/o 直接用控制行吗? 我为啥又试布道。难到是样品有问题。 请答复我们,急用中。。。。。

你挂在总线上还是用IO口模拟总线? 以下是模拟总线: /* 单片机的引脚 CH375芯片的引脚 PINB.4 INT# PORTB.3 A0 PORTB.2 CS# PORTB.1 WR# PORTB.0 RD# PORTA(8位端口) D7-D0 */

void mDelay1uS( ) /* 至少延时1uS,根据单片机主频调整 */ { UINT8 i; for ( i = 5; i != 0; i -- ); }

void CH375_PORT_INIT( ) /* 由于使用通用I/O模块并口读写时序,所以进行初始化 */ { DDRA = 0x00; /* 设置8位并口为输入 */ PORTB = 0x07; /* 设置CS,WR,RD默认为高电平 */ DDRB = 0x0F; /* 设置CS,WR,RD,A0为输出,设置INT#为输入 */ }

void xWriteCH375Cmd( UINT8 mCmd ) /* 外部定义的被CH375程序库调用的子程序,向CH375写命令 */ { mDelay1uS( ); mDelay1uS( ); /* 至少延时1uS */ /* *(volatile unsigned char *)CH375_CMD_PORT_ADDR = mCmd; 通过并口直接读写CH375而非普通I/O模拟 */ PORTB |= 0x08; /* 输出A0=1 */ PORTA = mCmd; /* 向CH375的并口输出数据 */ DDRA = 0xFF; /* 并口D0-D7输出 */ PORTB &= 0xF9; /* 输出有效写控制信号, 写CH375芯片的命令端口, A0=1; CS=0; WR=0; RD=1; */ DDRA = 0xFF; /* 该操作无意义,仅作延时,CH375要求读写脉冲宽度大于100nS */ PORTB |= 0x07; /* 输出无效的控制信号, 完成操作CH375芯片, A0=1; CS=1; WR=1; RD=1; */ DDRA = 0x00; /* 禁止数据输出 */ PORTB &= 0xF7; /* 输出A0=0; 可选操作 */ mDelay1uS( ); mDelay1uS( ); /* 至少延时2uS */ }

void xWriteCH375Data( UINT8 mData ) /* 外部定义的被CH375程序库调用的子程序,向CH375写数据 */ { /* *(volatile unsigned char *)CH375_DAT_PORT_ADDR = mData; 通过并口直接读写CH375而非普通I/O模拟 */ PORTA = mData; /* 向CH375的并口输出数据 */ DDRA = 0xFF; /* 并口D0-D7输出 */ PORTB &= 0xF1; /* 输出有效写控制信号, 写CH375芯片的数据端口, A0=0; CS=0; WR=0; RD=1; */ DDRA = 0xFF; /* 该操作无意义,仅作延时,CH375要求读写脉冲宽度大于100nS */ PORTB |= 0x07; /* 输出无效的控制信号, 完成操作CH375芯片, A0=0; CS=1; WR=1; RD=1; */ DDRA = 0x00; /* 禁止数据输出 */ mDelay1uS( ); /* 至少延时1.2uS */ }

UINT8 xReadCH375Data( void ) /* 外部定义的被CH375程序库调用的子程序,从CH375读数据 */ { UINT8 mData; /* mData = *(volatile unsigned char *)CH375_DAT_PORT_ADDR; 通过并口直接读写CH375而非普通I/O模拟 */ mDelay1uS( ); /* 至少延时1.2uS */ DDRA = 0x00; /* 数据输入 */ PORTB &= 0xF2; /* 输出有效读控制信号, 读CH375芯片的数据端口, A0=0; CS=0; WR=1; RD=0; */ DDRA = 0x00; /* 该操作无意义,仅作延时,CH375要求读写脉冲宽度大于100nS */ mData = PINA; /* 从CH375的并口PA输入数据 */ PORTB |= 0x07; /* 输出无效的控制信号, 完成操作CH375芯片, A0=0; CS=1; WR=1; RD=1; */ return( mData ); } 总线方式: //define mappings void mapping_init(void) { asm( ".area memory(abs)\n" ".org 0xBDF1\n" " _CH375_CMD_PORT:: .blkb 1\n" ".org 0xBCF0\n" " _CH375_DAT_PORT:: .blkb 1\n" ".text\n" ); }


只有登录才能回复,可以选择微信账号登录