⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ch372v_init_avr.c

📁 CH372下位机
💻 C
字号:
/*********************************************************/
////->>>  main.C: CH372V的初始化演示主程序
////->>>  CH372V_Init_AVR.C: CH372V的初始化程序
////->>>  CH372V_Init_AVR.h
/*********************************************************/
#include <iom128v.h>
#include "CH372V_Init_AVR.h"
#include "delay.h"
unsigned char WatchPoint,temp;

//发送单字节命令
void CH372V_SendCMD1(unsigned char Command) {
	CH372V_DIR = 0xFF;
	CH372V_OUT = Command;		//发送数据
    CH372V_WR_LO;			//WR有效
    CH372V_RD_HI;			//RD无效
	CH372V_A0_HI;			//A0=1命令
	CH372V_CS_LO;			//CS有效

	#asm("NOP");//asm("NOP");asm("NOP");
	CH372V_WR_HI;			//WR无效
	CH372V_CS_HI;			//CS无效
}

void CH372V_SendDAT1(unsigned char DAT) {
	CH372V_DIR = 0xFF;
	CH372V_OUT = DAT;		//发送数据
        	CH372V_RD_HI;			//RD无效
	CH372V_A0_LO;			//A0=0数据
        	CH372V_WR_LO;			//WR有效
	CH372V_CS_LO;			//CS有效

	#asm("NOP");//asm("NOP");asm("NOP");
	CH372V_WR_HI;			//WR无效
	CH372V_CS_HI;			//CS无效
}

unsigned char CH372V_ReadDAT1(void)
{
        unsigned char DAT=0;
	CH372V_DIR = 0x00;
        CH372V_A0_LO;			//A0=0数据
                CH372V_WR_HI;			//WR无效
        CH372V_CS_LO;			//CS有效
	CH372V_RD_LO;			//RD有效

	#asm("NOP");//asm("NOP");asm("NOP");
	DAT = CH372V_IN;		//读取数据
	CH372V_RD_HI;			//RD无效
	CH372V_CS_HI;			//CS无效
	CH372V_DIR = 0xFF;
	return DAT;  
}
//设置VID和PID
void CH372V_SetVIDPID(void)
{	

        CH372V_SendCMD1(CMD_SET_USB_ID);
        temp=(unsigned char)(CH372V_VID&0xff);
        CH372V_SendDAT1(temp);
        temp=(unsigned char)((CH372V_VID>>8)&0xff);
        CH372V_SendDAT1(temp);
        temp=(unsigned char)(CH372V_PID&0xff);
        CH372V_SendDAT1(temp);
        temp=(unsigned char)((CH372V_PID>>8)&0xff);
        CH372V_SendDAT1(temp);
        
        
}

void CH372V_Init(void) {
	//首先初始化端口
	CH372V_DIR |= 0xFF;
	CH372V_WR_HI;			//WR无效
	CH372V_WR_DIR |= CH372V_WR;
	CH372V_RD_HI;			//RD无效
	CH372V_RD_DIR |= CH372V_RD;
	CH372V_CS_HI;			//CS无效
	CH372V_CS_DIR |= CH372V_CS;
	CH372V_A0_HI;			//A0=1命令
	CH372V_A0_DIR |= CH372V_A0;
	//第一部分硬件复位
	CH372V_SendCMD1(CMD_RESET_ALL);
	Delay1ms(40);		//延时40ms
	//第二部分设置VID和PID
	CH372V_SetVIDPID();
	//第三部分设置USB工作模式
        CH372V_SendCMD1(CMD_SET_USB_MODE);
        CH372V_SendDAT1(0x02);   //内部固件模式
	WatchPoint =CH372V_ReadDAT1();
	//asm("NOP");				//在这里加入断点观察WatchPoint
        CH372V_INT_DIR();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -