taila.c

来自「A simple C program to strobe the LEDsvia」· C语言 代码 · 共 50 行

C
50
字号
/* tailA.c	ENEL206 Assignment 2 Part A
 *		ATmega8 taillight circuit
 * Last edited:	5-7-2004
 * Purpose:	A simple C program to strobe the LEDsvia Port D.
 *      The strobe rate is to be set by adjusting the voltage
 *      drop over a potentiometer that is sampled by an ADC.
 */
 
#include <avr/io.h>

int main(void)
{
   // LS LED set to on initially (0 = LED off)
   unsigned char pattern = 0x00;
   
   // ADC configuration:
   ADMUX = (1 << REFS0) | (1 << ADLAR);
    	// Vcc is reference, left adjusted value, input from PC0.
   ADCSRA = (1 << ADEN) | 0x07;
    	// Enable the ADC, prescaler factor = 128.

	
   TCCR1A = 0; 	// Timer 1 control registers set for:
   TCCR1B = 0x0C;// prescaler = /256,mode = CTC using OCR1A.
				
   DDRD = 0xFF;	// All Port D pins configured for output

   while (1)   // Loop forever
   {

      pattern = ~pattern;	// reverse pattern
      PORTD = pattern;	// Update LEDs 

      // Start a conversion 
	  ADCSRA |= (1 << ADSC);
      
      // Read the 8-bit left adjusted ADC result.
      // ues ADCH to decide the length of a duty cycle.
      // inrease the duty cycle by shift lest 4.
      OCR1A = (0x0F | ADCH) << 4; 

      while (!(TIFR & (1 << OCF1A)));	// Test OCF1A flag in TIFR
        	    //  (i.e. wait 0.1 sec from last counter reset)
      TIFR |= (1 << OCF1A);		// Reset flag bit 
				//  (i.e. write 1 to it)
   }

   return 0;
}

⌨️ 快捷键说明

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