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

📄 timer1.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 "timer1.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)
	{
																						
			RC1=TMR1ON;												/*timer on/off -RED LED*/
			LED3=TMR1L;												/*display current value of TMR1L*/
			T1CKPS1=RA1;											/*update values of prescalar bits*/
			T1CKPS0=RA0;  

			if (UPDATE_REQUIRED)								 /*display current  settings for TIMER1*/
			{
				printf("\n TIMER1 STATUS\n----------------\n");
				if (TMR1ON){	printf("TIMER1 is ON\n");}
				else {printf("TIMER1 is OFF\n");}
				if (TMR1CS){	printf("TIMER1 is in  COUNTER mode\n");}
				else {printf("TIMER1 is in TIMER  mode\n");}
				

				UPDATE_REQUIRED=0;	
			}
	}
}

void init(void)
{
	T1CON=0x80;															/* we are testing  TIMER1 */
	T1CKPS1=RA1;														/*update values of prescalar bits*/
	T1CKPS0=RA0;  

	TMR1IF=0;																/* Clear overflow flag*/
	TMR1IE=1;																/* Enable TIMER1 interrupts */	
	TMR1=0;																	/*Load initial value to TIMER1*/

																						
	T3CON=0x00;															/*use TIMER3 as reference for comparison*/
	TMR3IF=0;																	
	TMR3IE=1;																
	TMR3=0;																	/*Load initial value to TIMER3*/

	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=0x01;															/* 1bit LED panel is connected to RC1 to indicate TIMER1 ON/OFF status*/
																					/* Push button connected to  RC0 is used to test TIMER1 as a counter*/
	TRISH=0x00;															/* LED panel indicates frequency of TIMER3*/
	TRISE=0x00;															/* LED panel indicates current frequency of TIMER1 */
	TRISF=0x00;															/* LED panel shows current value of register TMR1L */
	TRISD=0xFF;															/* 8-bit DIP switch to set  value of LED pannels */
	
	LED1=PORTD;															/*Load LEDs with current value of 8-bit DIP*/
	LED2=PORTD;
	LED3=TMR1L;															/*Load LED3 with  current value of TMR1L*/
	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 + -