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

📄 timer2.c

📁 picc_18v 8.35pl35 PIC18系列单片机开发C编译器
💻 C
字号:

/*A sample project file to be used with HI-TIDE, to demonstrate the functionality of the microcontroller's TIMER1.*/
/*Refer to timer1.txt for additional information*/

#include <pic18.h>
#include "timer2.h"
#include <stdio.h>

void init(void);
void putch(unsigned char);
volatile bit UPDATE_REQUIRED ;														/* used to indicate when to refresh output data */
void main(void)
{
	init();
	while(1)
	{
		RC0=TMR2ON;																			/*Timer on/off -RED LED*/	
		if (UPDATE_REQUIRED)															/*Display current settings for TIMER2*/   	
		{																								
			TMR2IE=0;																			/*Disable TIMER2 interrupt while printing*/                                      	                                    	
			printf("\n TIMER2 STATUS\n----------------\n");					
			if (TMR2ON)                                                                                                            	
			{	
				printf("TIMER2 is ON\n----------------\n");                                                            	
				printf("PERIOD is %d\n----------------\n",PR2);				                                        	
				printf("PRESCALAR RATIO :");                                                	
				switch (T2CON&0b00000011)			                                                                    	
				{                                                                                                                          	
				case 0b00000000  :{	printf("1:1\n");break;}                                  	
				case 0b00000001  :{  printf("1:4 \n");break;}                                       	
				case 0b00000010  :{  printf("1:16\n");break;}                                	
				case 0b00000011  :{  printf("1:16\n");break;}                                   	
				default : printf("\n Illegal MODE \n");                                                                    	
				}                                                                                                                          	
				printf("POSTSCALAR RATIO :");                                              	
				switch (T2CON&0b01111000)			                                                                    	
				{                                                                                                                          	
				case 0b00000000  :{	printf("1:1 \n");break;}                                 	
				case 0b00001000  :{  printf("1:2	\n");break;}                                      	
				case 0b00010000  :{  printf("1:3	\n");	break;}                                    	
				case 0b00011000  :{  printf("1:4	\n");break;}                                      	
				case 0b00100000  :{  printf("1:5	\n");break;}                                      	
				case 0b00101000  :{  printf("1:6	\n");	break;}                                    	
				case 0b00110000  :{  printf("1:7	\n");break;}                                      	
				case 0b00111000  :{  printf("1:8	\n");break;}                                      	
				case 0b01000000  :{	printf("1:9\n");break;}                                  	
				case 0b01001000  :{  printf("1:10\n");break;}                                    	
				case 0b01010000  :{  printf("1:11\n");break;}                                	
				case 0b01011000  :{  printf("1:12\n");break;}                                    	
				case 0b01100000  :{  printf("1:13\n");break;}                                    	
				case 0b01101000  :{  printf("1:14\n");break;}                                    	
				case 0b01110000  :{  printf("1:15\n");break;}                                    	
				case 0b01111000  :{  printf("1:16\n");break;}                                    	
				default : printf("\n Illegal MODE \n");
				}
			}                                                                                                                              	
			else                                                                                                                         	
			{                                                                                                                              	
				printf("TIMER2 is OFF\n");                                                                                   	
			}                                                                                                                              	
			UPDATE_REQUIRED=0; 	                                                                                            	
			TMR2IE=1;																				/*Reenable TIMER2 interrupt*/
		}
	}

}

void init(void)
{
	T2CON=0x00;															/* we are testing  TIMER2 */
	TMR2ON=0;
	TMR2=0;																	/*Load initial value to TIMER2*/
	PR2=0xFF;
	TMR2IF=0;																/* Clear overflow flag*/
	TMR2IE=1;																/* Enable TIMER2 interrupts */	
	

	T0CON=0x40;															/*use TIMER0 as reference for comparison*/
	TMR0IF=0;																	
	TMR0IE=1;																
	TMR0=0;																	/*Load initial value to TIMER0*/

	RBIE=1;																	/* enable PORTB interrupts to */
	GIEH=1;																	/* allow interrupts from PUSH BUTTONS */
	GIEL=1;	

	TXEN=1;																	/* enable serial port transmissions */
	SPEN=1;				
	TXIE=0;																	/* not interrupt driven */		

	TRISA=0x03;															/* Set first 2 bits to input to read DIP switch values */
																						
	ADCON1=0x0F;														/*configure pins of PORTA to be digital inputs*/

	TRISB=0xF0;															/* Push button is connected to   RB4 to turn timers ON and OFF*/
	TRISC=0x00;															/* 1bit LED panel is connected to RC1 to indicate TIMER2 ON/OFF status*/    
	TRISH=0x00;															/* LED panel shows current frequency of TIMER2*/
	TRISE=0xFF;															
	TRISF=0x00;															/* LED panel indicates current frequency of TIMER0 in 8bit mode*/
	TRISD=0xFF;															/* 8-bit DIP switch to set  value of period register for TIMER2 (PR2)*/
	
	LED1=1;																	/*Load LEDs with current value of 8-bit DIP*/
	LED2=1;
	UPDATE_REQUIRED=1;
}

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

⌨️ 快捷键说明

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