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

📄 epwmdemo.c

📁 Hitech microchip PIC C18 Compiler
💻 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 + -