以下是我上网找的一个程序说已经通过测试,但是我怎么尝试都不行呢,用DEBUG372.exe调试过了,硬件连接好像没有问题,就是没有发现ch372的设备,哪位好心人帮我看看程序啊,急啊!!!多谢,多谢了。 以下是我的程序:
/****************************** CH375测试程序 Mega16 模拟总线
控制端口定义: A0 -- PC0 RD -- PC1 WR -- PC6 CS -- PC7 数据端口定义: PORTA ******************************/ #include #include
#define A0 PC0 //定义引脚 #define RD PC1 #define WR PC6 #define CS PC7 #define NOP asm("nop") //定义一个空操作语句
#define CHECK_375 0x06 //测试375命令(CH375手册中有详细的命令列表)
/******************************************* 函数原型声明区 ********************************************/
unsigned char RD_data_ch375(void); void WR_CMD_ch375(unsigned char cmd); void CONT_PORT_init(void); void WR_DAT_ch375(unsigned char dat); unsigned char RD_data_ch375(void);
/******************************************* 向CH375写数据函数 ********************************************/ void WR_DAT_ch375(unsigned char dat) { PORTC &= ~(1 << A0); //A0 = Low 选择输出是数据 PORTC &= ~(1 << WR); //WR = Low 选择写 DDRA = 0xFF; NOP; NOP; PORTA = dat; //端口写数据(0x55) } /******************************************* 写命令函数 ********************************************/ void WR_CMD_ch375(unsigned char cmd) { PORTC &= ~(1 << WR); //WR = Low 选择写 PORTC |= (1 << A0) | (1 << RD); //A0 = High 写命令 DDRA = 0xFF; NOP; NOP; PORTA =cmd; //发送数据 } /******************************************* 读CH375数据函数 ********************************************/ unsigned char RD_data_ch375(void) { unsigned char data; PORTC |= (1 << WR); PORTC &= ~(1 << RD); //RD = Low 选择读 PORTC &= ~(1 << A0); DDRA = 0x00; PORTA = 0xFF; //初始化端口上拉(实际使用 NOP; NOP; data = PINA; //读端口数据并返回 return data; } /******************************************* 控制线初始化函数 ********************************************/ void CONT_PORT_init(void) { PORTC |= (1 << A0) | (1 << RD) | (1 << WR) | (1 << CS); PORTC &= ~(1 << CS); DDRC = 0xFF; //控制端口初始化为输出 } /******************************************* 主函数 ********************************************/ int main() { unsigned char testret; DDRB = 0xFF; PORTB = 0x00; CONT_PORT_init(); WR_CMD_ch375(CHECK_375); //向CH375写命令(测试0x06) WR_DAT_ch375(0x55); testret = RD_data_ch375(); while(1); return 0; }