Skip to main content

timer_1mS

1. Preprocessor Directives:

  • #include <pic.h>: Includes the header file pic.h, which contains definitions and declarations specific to PIC microcontrollers.

2. main() Function:

  • Initialization:

    • TRISC = 0;: Configures PORTC as output pins.
    • PORTC = 0;: Clears the output pins on PORTC.
    • T0CS = 0;: Selects the internal clock source (Fosc/4) for TMR0.
    • PSA = 0;: Assigns the prescaler to TMR0.
    • PS2 = 1; PS1 = 1; PS0 = 1;: Sets the prescaler to 256, providing a timer tick every 50 milliseconds.
    • TMR0 = 217;: Initializes TMR0 with the value 217 to generate a 10ms delay.
    • RC0 = 1;: Sets the output on RC0.
  • Main Loop:

    • while (1) { ... }: The main loop continues indefinitely.
    • Interrupt Handling:
      • if (T0IF) { ... }: Checks if the TMR0 interrupt flag is set.
      • TMR0 = 217;: Reloads TMR0 with the value 217 to start another 10ms delay.
      • RC0 = !RC0;: Toggles the RC0 output.
      • T0IF = 0;: Clears the TMR0 interrupt flag.

Explanation:

The code implements a simple square-wave generator that toggles an output pin (RC0) every 10 milliseconds. The main components of the code are:

  • Timer Initialization: TMR0 is configured as an internal timer with a prescaler of 256, providing a timer tick every 50 milliseconds. The initial value of TMR0 is set to 217 to generate a 10ms delay.
  • Interrupt Handling: The TMR0 interrupt is used to toggle the output pin and reload the timer for the next 10ms delay.



#include <pic.h>


void main()
{
TRISC=0;    // PORTC output
PORTC=0;  

T0CS=0;        // Internal Mode (Fosc/4)
PSA=0;        // Prescaler assigned to TMR0
PS2=0;
PS1=0;
PS0=1;        // Prescaler ratio 1:256

TMR0=6;        // (256-6=250) for 1mS time
RC0=1;        // output on




while(1)  
{
    if(T0IF==1){
    TMR0=6;  
  
    RC0=!RC0; // RC0 toggle      

    T0IF=0;
    }
}
}



Comments

Popular posts from this blog

PicBasic and PicBasic Pro programming

B ASIC is one of the oldest and one of the easiest pr o g ramming languages to lea r n. Y ou should be a b le to lea r n and pr o g ram in B ASIC in less than an hou r . In this chapte r , w e shall be looking at the principles of pr o g ramming PIC microcontrollers using the PicBasic and PicBasic Pro lan- guages. Both these languages are v e r y similar to the standard B ASIC language but th e y h a v e some modi f ied and some additional inst r uctions speci f ical l y for microcontroller pr o g ramming. Both PicBasic and PicBasic Pro languages h a v e been d e v eloped b y the microEngineering Labs Inc. PicBasic is a l o w e r -cost, simpler language than PicBasic Pro and it is aimed at students and hob b yists. PicBasic Pro is more e xpens i v e, aimed at professionals, and includes additional com- mands for more ad v anced inst r uctions. T a b le g i v es a list of the comparison of PicBasic and PicBasic Pro languages. Before w e pro- ceed to the chapter...

Voltmeter

This code to read an analog temperature sensor, convert the reading to a digital value using the ADC, and display the temperature on a 4-digit 7-segment display. The display is updated periodically based on a timer interrupt. 1.Initialization: Setting up ports, configuring ADC, and Timer0. 2.Infinite Loop: Continuously reads analog input and updates the display. 3.ADC Conversion: Reads analog voltage from a sensor. 4.Voltage Calculation: Converts ADC value to voltage. 5.Digit Extraction: Extracts individual digits from the temperature/voltage value. 6.Display Function: Displays the digits on a 4-digit 7-segment display with slight delays. --------------------------------------------- #include <pic.h> // Include the header file for PIC microcontroller family. unsigned char PORTB_value[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; // Array containing values for 7-segment display. unsigned int a2d_value,temp; // Variables for analog to digital conversion and temporary sto...

timer_500mS

Code Breakdown: 1. Preprocessor Directives: #include <pic.h> : Includes the header file pic.h , which contains definitions and declarations specific to PIC microcontrollers. 2. Variable Declarations: unsigned char count = 0; : Declares an unsigned character variable count and initializes it to 0. This variable is used to keep track of the number of 50ms intervals that have elapsed. 3. main() Function: Initialization: TRISC = 0; : Configures PORTC as output pins. PORTC = 0; : Clears the output pins on PORTC. T0CS = 0; : Selects the internal clock source (Fosc/4) for TMR0. PSA = 0; : Assigns the prescaler to TMR0. PS2 = 1; PS1 = 1; PS0 = 1; : Sets the prescaler to 256, providing a timer tick every 50 milliseconds. TMR0 = 61; : Initializes TMR0 with the value 61 to generate a 50ms delay. RC0 = 1; : Sets the output on RC0. Main Loop: while (1) { ... } : The main loop continues indefinitely. Interrupt Handling: if (T0IF) { ... } : Checks if the TMR0 interrupt ...