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

📄 iodemo.c

📁 Hitech microchip PIC C18 Compiler
💻 C
字号:
 #include <pic18.h>#include "iodemo.h"void interrupt ISR(void);void init(void);void update_ports(void);/* This is the test pattern array */const unsigned char LEDDISPLAY[]={0xF8,0xF1,0xE3,0xC7,0x8F,0x1F,0x3E,0x7C,0xF8,0xF1,0xE3,0xC7,0x8F,0x1F,0x3E,0x7C};unsigned char A;void main(void){	init();/* After the devices are initialised, the main loop just polls timer 1. *//* Every time timer 1 overflows, the ports will give an update to the *//* LED panels. */	while(1)	{		if(TMR1IF)		{			TMR1IF=0;			TMR1H=0xF0;	/* Timer reload, adjusts the speed of LED updates */			update_ports();			}	}}void init(void){	GIE=1; 	IPEN=0;	T1CON=0x81;	/* Timer 1 needs to be activated */	TMR1IE=0;		/* No interrupts are associated with timer 1 */	ADCON1=0x0F;	/* Set relevant port pins to digital mode, rather than analog */		TRISA=0;		/* initially ports will be in output mode to display test pattern */	TRISB=0xFF;		/* PORTB must be set as input so that the interrupts are possible */	TRISC=0;	TRISD=0;	TRISE=0;	TRISF=0;	TRISG=0;	TRISH=0;	TRISJ=0;	TRISK=0;	RBPU=0;	RBIE=1;		/* enable PORTB interrupts */	RBIF=0;}void update_ports(void){	static unsigned char index;	index++;		/* used to adavnce the test pattern */	index&=0x07;		PORTA=LEDDISPLAY[index];	/* load test pattern to the ports */	PORTC=LEDDISPLAY[index+1];	PORTD=LEDDISPLAY[index+2];	PORTE=LEDDISPLAY[index+3];	PORTF=LEDDISPLAY[index+4];	PORTG=LEDDISPLAY[index+5];	PORTH=LEDDISPLAY[index+6];	PORTJ=LEDDISPLAY[index+7];	PORTK=LEDDISPLAY[index+3];}void interrupt ISR(void){	unsigned char direction;	if((RBIE)&&(RBIF))	{		direction=TRISC;	/* save PORTC status */		TRISC=0xFF;	/* now make PORTC all input to read the DIP switch */				switch((PORTB)&0xF0)	/* read PORTB, which port has been selected? */		{			case PORTASELECTED:				TRISA=PORTC;	/* assign new direction to that port */				break;			case PORTCSELECTED:				direction=PORTC;				break;			case PORTDSELECTED:				TRISD=PORTC;				break;			case PORTESELECTED:				TRISE=PORTC;				break;			case PORTFSELECTED:				TRISF=PORTC;				break;			case PORTGSELECTED:				TRISG=PORTC;				break;			case PORTHSELECTED:				TRISH=PORTC;				break;			case PORTJKSELECTED:				TRISJ=(PORTC&0x0F);	/* PORTJ & K share and LED panel */				TRISK=((PORTC>>4)&0x0F);				break;		}		TRISC=direction;	/* restore PORTC status */		RBIF=0;	}}

⌨️ 快捷键说明

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