Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
et:examples:digi:io [2009/03/04 10:49] – tekitatud raivo.sellet:examples:digi:io [2014/01/30 11:03] (current) – eemaldatud raivo.sell
Line 1: Line 1:
-====== Digitaalsed sisend-väljundid ====== 
-{{:et:naited:digi:io.jpg?300|}} 
- 
-Demoplaadil ‚Basic’ on kolm valgusdioodi (LED) ja kolm mikrolülitit.  
-Valgusdioodid on ühendatud porti PORTC[3..5] ja lülitid PORTC[0..2].  
-Harjutuse eesmärgiks on luua C kood, kus vastava lüliti vajutamisel süttib vastav LED. 
-Ühendusskeem: 
- 
-{{:et:harjutused:digi:1a_skeem.jpg?500|}} 
- 
-Programmi kood: 
- 
-<code c> 
-/* Labor 1 näide 
-Harjutus töötab laborikaardiga Basic v3 
- 
-Vajutades nupule S1 süttib LED 1 
-vajutades nupule S2 süttib LED 2 
-vajutades nupule S3 süttib LED 3 
-Raivo Sell 2008 
- 
-LED = 0 (põleb)  LED = 1 (kustunud) 
-S = 0 (lülitui sees) S = 1 (lüliti väljas) 
- 
-PORDI suuna konfigureerimine: 1-väljund 0-sisend */ 
- 
-#include <avr\io.h> 
- 
-//defineeritakse kõrge bit pordis x 
-#define SET(x) |= (1<<x)   
- 
-//defineeritakse madal bit pordis x 
-#define CLR(x) &=~(1<<x)   
- 
-int main(void) { 
- 
-    DDRC  = 0x38;  // DDRC  0bXX111000 
-    PORTC = 0x3F;  // PORTC 0bXX111111 
- 
- //Lõputu tsükkel 
- while(1) { 
- // Kui toimub nupule vajutus 
- if (bit_is_clear(PINC, 0)) //Nupp S1 
- PORTC CLR(3); //LED 1 sisse 
- else if (bit_is_clear(PINC, 1))//Nupp S2 
- PORTC CLR(4); //LED 2 sisse 
- else if (bit_is_clear(PINC, 2))//Nupp S3 
- PORTC CLR(5); //LED 3 sisse 
- else //Kui pole midagi vajutatud 
- PORTC=0xFF; //LED lülitatakse välja (LED=1) 
- } 
-} 
-</code> 
- 
- 
- 
- 
-==== Nupu sädeluse ellimineerimine ==== 
- 
-Algallikas: [[http://www.micahcarrick.com/05-15-2006/avr-tutorial-switch-debounce.html|Micah Carrick tutorial]] 
- 
-<code c> 
- 
-#define BUTTON_PORT PORTC       /* PORTx - nupu register */ 
-#define BUTTON_PIN PINC         /* PINx - nupu sisendi register */ 
-#define BUTTON_BIT PC0          /* nupu sisend/väljund bit */ 
-  
-#include <avr/io.h>; 
-#include <util/delay.h>; 
-      
-int nupuvajutus() 
-{ 
-        /* nupp on all kui BIT on madal (0) */ 
-        if (bit_is_clear(BUTTON_PIN, BUTTON_BIT)) 
-        { 
-                _delay_ms(25); /* nupu sädeluse ooteaeg "de-bouncing" */ 
-                if (bit_is_clear(BUTTON_PIN, BUTTON_BIT)) return 1; 
-        } 
-  
-        return 0; 
-} 
- 
-int main (void){ 
- 
-        /* lülitab sisse sisemised 'pull-up' takistid */ 
-        BUTTON_PORT |= _BV(BUTTON_BIT) 
-        if (button_is_pressed()){ 
-                        //  tee midagi 
-                        // oota kui vaja 
-        } 
-} 
-</code> 
  
et/examples/digi/io.1236163771.txt.gz · Last modified: 2020/07/20 09:00 (external edit)
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0