This is an old revision of the document!
Studyboard ‚Basic’ includes three outputs (LED) and three inputs (microswitch) LEDs are connected to PORTC[3..5] and switches PORTC[0..2].
This simple examples demonstrates how to switch on LED when pushing appropriate switch.
Connection schema:
Example C code:
/* Labor 1 example Example works with Studyboard Basic v3 Press S1 - LED1 goes ON Press S2 - LED2 goes ON Press S31 - LED3 goes ON Raivo Sell 2008 LED = 0 (ON) LED = 1 (OFF) S = 0 (ON) S = 1 (OFF) PORT direction: 1-output 0-input */ #include <avr\io.h> //Definitions for easier bit manipulations #define SET(x) |= (1<<x) //bit high in port x #define CLR(x) &=~(1<<x) //bit low in port x int main(void) { //main program DDRC = 0x38; // DDRC 0bXX111000 PORTC = 0x3F; // PORTC 0bXX111111 //endless loop while(1) { // if button is pressed (pin is low) if (bit_is_clear(PINC, 0)) //Switch S1 PORTC CLR(3); //LED 1 ON else if (bit_is_clear(PINC, 1))//Switch S2 PORTC CLR(4); //LED 2 ON else if (bit_is_clear(PINC, 2))//Switch S3 PORTC CLR(5); //LED 3 ON else // If nothing is pressed PORTC=0xFF; //All LEDs OFF (LED=1) } }
Same example in short form:
#include <avr\io.h> int main(void) { DDRB = 0xFF; PORTB &=~(1<<7); }
Source: Micah Carrick tutorial
#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 } }