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

📄 epwmdemo.c

📁 picc_18v 8.35pl35 PIC18系列单片机开发C编译器
💻 C
字号:
#include <pic18.h>
#include <stdio.h>

void interrupt ISR(void);
void init(void);
void set_new_mode(void);
extern void update_pwm(void);

unsigned char ACTIVE_PINS_MODE;
unsigned char BRIDGE_MODE;

void main(void)
{
	unsigned char oldmode;
	unsigned char oldoutput;
	
	init();
	
	while(1)
	{
		ACTIVE_PINS_MODE=((PORTC&0x0C)>>2);	//read the DIP switches to get modes
		BRIDGE_MODE=(PORTC&0x03);
		update_pwm();
		if((ACTIVE_PINS_MODE!=oldmode)||(BRIDGE_MODE!=oldoutput)) // if either has changed...
				set_new_mode();	// ...update these changes
		oldmode=ACTIVE_PINS_MODE;
		oldoutput=BRIDGE_MODE;
	}
}

void init(void)
{
	GIE=1;	// interrupts enabled
	IPEN=0;
	
	TXEN=1;	/* enable serial port transmissions */
	SPEN=1;	
	TXIE=0;	/* not interrupt driven */		
	
	TRISC=0xBF;
	TRISD=0x0F;
	TRISA=0xFF;
	RBIE=1;

	ECCPAS=0b00000000;	// autoshutdown event select

	T1CON=0b10000101;
	T3CON=0b10111101;
	T2CON=0x05;	// TMR2 drives PWM

	ECCP1IE=1;
	ECCP1IF=0;
	ECCPR1=0x01000;
	ECCP1CON=0x0C;
}

void interrupt ISR(void)
{
}

void putch(unsigned char c)
{
	TXREG=c;	/* transmit a character to Serial IO */
	while(!TXIF)continue;
	TXIF=0;
}

void set_new_mode(void)
{
	// print what new mode has been selected
	printf("\rPWM: ");
		
	switch(BRIDGE_MODE)
	{
		case 1:
			printf("Full-Bridge FWD |");
			break;
		case 2:
			printf("Half-Bridge     |");
			break;
		case 3:
			printf("Full-Bridge REV |");
			break;
		default:
			printf("Single Output   |");
			break;
	}
	switch(ACTIVE_PINS_MODE)
	{
		case 1:
			printf(" A&C[HI] B&D[LO] |");
			break;
		case 2:
			printf(" A&C[LO] B&D[HI] |");
			break;
		case 3:
			printf(" A&C[LO] B&D[LO] |");
			break;
		default:
			printf(" A&C[HI] B&D[HI] |");
			break;
	}
		
	/* update mode */
	ECCP1CON=((ECCP1CON&0xFC)+ACTIVE_PINS_MODE);
	/* update output mode */
	ECCP1CON=((ECCP1CON&0x3F)+(BRIDGE_MODE<<6));
}

⌨️ 快捷键说明

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