63
Alexandre Zambotti Rodrigues Gabriel Silva Marcatto Rafael de Moura Moreira

Desenvolvimento de Sistemas Embarcados - do hardware ao software

Embed Size (px)

Citation preview

Page 1: Desenvolvimento de Sistemas Embarcados - do hardware ao software

Alexandre Zambotti Rodrigues

Gabriel Silva Marcatto

Rafael de Moura Moreira

Page 2: Desenvolvimento de Sistemas Embarcados - do hardware ao software

19/11/2016

Page 3: Desenvolvimento de Sistemas Embarcados - do hardware ao software

19/11/2016

Page 4: Desenvolvimento de Sistemas Embarcados - do hardware ao software

19/11/2016

Page 5: Desenvolvimento de Sistemas Embarcados - do hardware ao software

19/11/2016

Page 6: Desenvolvimento de Sistemas Embarcados - do hardware ao software

19/11/2016

Page 7: Desenvolvimento de Sistemas Embarcados - do hardware ao software

19/11/2016

Page 8: Desenvolvimento de Sistemas Embarcados - do hardware ao software

19/11/2016

Page 9: Desenvolvimento de Sistemas Embarcados - do hardware ao software

19/11/2016

Page 10: Desenvolvimento de Sistemas Embarcados - do hardware ao software

19/11/2016

Page 11: Desenvolvimento de Sistemas Embarcados - do hardware ao software

19/11/2016

Page 12: Desenvolvimento de Sistemas Embarcados - do hardware ao software

19/11/2016

Page 13: Desenvolvimento de Sistemas Embarcados - do hardware ao software

19/11/2016

Page 14: Desenvolvimento de Sistemas Embarcados - do hardware ao software

19/11/2016

Page 15: Desenvolvimento de Sistemas Embarcados - do hardware ao software

19/11/2016

Page 16: Desenvolvimento de Sistemas Embarcados - do hardware ao software

19/11/2016

Page 17: Desenvolvimento de Sistemas Embarcados - do hardware ao software

19/11/2016

Page 18: Desenvolvimento de Sistemas Embarcados - do hardware ao software

19/11/2016

Page 19: Desenvolvimento de Sistemas Embarcados - do hardware ao software

19/11/2016

Page 20: Desenvolvimento de Sistemas Embarcados - do hardware ao software

19/11/2016

Page 21: Desenvolvimento de Sistemas Embarcados - do hardware ao software

19/11/2016

Page 22: Desenvolvimento de Sistemas Embarcados - do hardware ao software

19/11/2016

Page 23: Desenvolvimento de Sistemas Embarcados - do hardware ao software

19/11/2016

Page 24: Desenvolvimento de Sistemas Embarcados - do hardware ao software

19/11/2016

Page 25: Desenvolvimento de Sistemas Embarcados - do hardware ao software

19/11/2016

Page 26: Desenvolvimento de Sistemas Embarcados - do hardware ao software

19/11/2016

Page 27: Desenvolvimento de Sistemas Embarcados - do hardware ao software

19/11/2016

Page 28: Desenvolvimento de Sistemas Embarcados - do hardware ao software

19/11/2016

Page 29: Desenvolvimento de Sistemas Embarcados - do hardware ao software

19/11/2016

Page 30: Desenvolvimento de Sistemas Embarcados - do hardware ao software

19/11/2016

Page 31: Desenvolvimento de Sistemas Embarcados - do hardware ao software

19/11/2016

while(a==a); //Não é um loop infinito!

Page 32: Desenvolvimento de Sistemas Embarcados - do hardware ao software

19/11/2016

Page 33: Desenvolvimento de Sistemas Embarcados - do hardware ao software

19/11/2016

Page 34: Desenvolvimento de Sistemas Embarcados - do hardware ao software

19/11/2016

Page 35: Desenvolvimento de Sistemas Embarcados - do hardware ao software

19/11/2016

Page 36: Desenvolvimento de Sistemas Embarcados - do hardware ao software

19/11/2016

Page 37: Desenvolvimento de Sistemas Embarcados - do hardware ao software

19/11/2016

Page 38: Desenvolvimento de Sistemas Embarcados - do hardware ao software

19/11/2016

void main (void){char *ptr;//pointing to the port Dptr = 0xF83;//changing all outputs to high*ptr = 0xFF;

}

Page 39: Desenvolvimento de Sistemas Embarcados - do hardware ao software

19/11/2016

#define PORTD (*(volatile __near unsigned char*)0xF83)#define TRISC (*(volatile __near unsigned char*)0xF94)

//this is not an infinite loop!while( PORTD == PORTD);

Page 40: Desenvolvimento de Sistemas Embarcados - do hardware ao software

19/11/2016

char mask;mask = 1 << 2;arg = arg | mask;

//one linearg = arg | (1<<bit);

//using define#define BitSet(arg,bit) ((arg) |= (1<<bit))#define BitClr(arg,bit) ((arg) &= ~(1<<bit))#define BitFlp(arg,bit) ((arg) ^= (1<<bit))#define BitTst(arg,bit) ((arg) & (1<<bit))

Page 41: Desenvolvimento de Sistemas Embarcados - do hardware ao software

19/11/2016

Page 42: Desenvolvimento de Sistemas Embarcados - do hardware ao software

19/11/2016

Page 43: Desenvolvimento de Sistemas Embarcados - do hardware ao software

19/11/2016

Page 44: Desenvolvimento de Sistemas Embarcados - do hardware ao software

19/11/2016

Page 45: Desenvolvimento de Sistemas Embarcados - do hardware ao software

19/11/2016

#define PORTD (*(volatile __near unsigned char*)0xF83)#define TRISD (*(volatile __near unsigned char*)0xF95)

void main(void) {TRISD = 0x00;for(;;){

PORTD ^= 0xFF;//delay();

}}

Page 46: Desenvolvimento de Sistemas Embarcados - do hardware ao software

19/11/2016

Page 47: Desenvolvimento de Sistemas Embarcados - do hardware ao software

19/11/2016

Page 48: Desenvolvimento de Sistemas Embarcados - do hardware ao software

19/11/2016

Page 49: Desenvolvimento de Sistemas Embarcados - do hardware ao software

19/11/2016

#define TRISA (*(volatile __near unsigned char*)0xF92)#define ADCON2 (*(volatile __near unsigned char*)0xFC0)#define ADCON1 (*(volatile __near unsigned char*)0xFC1)#define ADCON0 (*(volatile __near unsigned char*)0xFC2)#define ADRESL (*(volatile __near unsigned char*)0xFC3)#define ADRESH (*(volatile __near unsigned char*)0xFC4)

void adInit(void) {BitSet(TRISA, 0); //pin setupADCON0 = 0b00000001; //channel selectADCON1 = 0b00001110; //ref = sourceADCON2 = 0b10101010; //t_conv = 12 TAD

}

Page 50: Desenvolvimento de Sistemas Embarcados - do hardware ao software

19/11/2016

unsigned int adRead(void){unsigned int ADvalue;BitSet(ADCON0,1); //start conversionwhile(BitTst(ADCON0,1)); //waitADvalue = ADRESH; //read resultADvalue <<= 8;ADvalue += ADRESL;return ADvalue;

}

Page 51: Desenvolvimento de Sistemas Embarcados - do hardware ao software

19/11/2016

void main(void) {unsigned int i;unsigned int ad;TRISD = 0x00;adInit();for (;;) {

ad = adRead();PORTD = 0xff;for (i = 0; i < ad;

i++);PORTD = 0x00;for (i = ad; i <

1024; i++);}

}

Page 52: Desenvolvimento de Sistemas Embarcados - do hardware ao software

19/11/2016

Page 53: Desenvolvimento de Sistemas Embarcados - do hardware ao software

19/11/2016

Page 54: Desenvolvimento de Sistemas Embarcados - do hardware ao software

19/11/2016

Page 55: Desenvolvimento de Sistemas Embarcados - do hardware ao software

19/11/2016

#define RS 6#define EN 7void delayMicroseconds(int ms) {

int i;for (; ms > 0; ms--) {

for (i = 0; i < 30; i++);}

}void pulseEnablePin() {

BitClr(PORTC, EN);delayMicroseconds(1);// send a pulse to enableBitSet(PORTC, EN);delayMicroseconds(1);BitClr(PORTC, EN);

}

Page 56: Desenvolvimento de Sistemas Embarcados - do hardware ao software

19/11/2016

void pushNibble(int value, int rs) {PORTD = value;if (rs) {

BitSet(PORTC, RS);} else {

BitClr(PORTC, RS);}pulseEnablePin();

}

void pushByte(int value, int rs) {int val_lower = value & 0x0F;int val_upper = value >> 4;pushNibble(val_upper, rs);pushNibble(val_lower, rs);

}

Page 57: Desenvolvimento de Sistemas Embarcados - do hardware ao software

19/11/2016

void lcdCommand(int value) {pushByte(value, 0);delayMicroseconds(40);

}

void lcdChar(int value) {pushByte(value, 1);delayMicroseconds(2);

}

Page 58: Desenvolvimento de Sistemas Embarcados - do hardware ao software

19/11/2016

void lcdInit() {BitClr(TRISC, EN);BitClr(TRISC, RS);TRISD = 0x0f;delayMicroseconds(50);

commandWriteNibble(0x03);delayMicroseconds(5);commandWriteNibble(0x03);delayMicroseconds(100);commandWriteNibble(0x03);delayMicroseconds(5);commandWriteNibble(0x02);delayMicroseconds(10);//display configlcdCommand(0x28); //4bits, 2 linhas, 5x8lcdCommand(0x06); //incremental modelcdCommand(0x0c); //display on, cursor and blink

offlcdCommand(0x03); //clean internal variableslcdCommand(0x80); //initial positionlcdCommand(0x01); //clear displaydelayMicroseconds(2);

}

Page 59: Desenvolvimento de Sistemas Embarcados - do hardware ao software

19/11/2016

Page 60: Desenvolvimento de Sistemas Embarcados - do hardware ao software

19/11/2016

Page 61: Desenvolvimento de Sistemas Embarcados - do hardware ao software

19/11/2016

void lcdBsidesLogo(void) {int i;unsigned char bsides[] = {

0b00111, 0b00100, 0b00100, 0b00100, 0b00111, 0b00100, 0b00100, 0b00100, 0b10000, 0b01001, 0b01001, 0b01011, 0b10010, 0b01010, 0b01010, 0b11011, 0b01111, 0b11001, 0b00000, 0b00110, 0b00110, 0b00000, 0b00000, 0b00001, 0b00000, 0b11000, 0b01000, 0b01100, 0b00100, 0b00100, 0b00000, 0b11100, 0b00111, 0b00000, 0b00100, 0b00100, 0b00110, 0b00010, 0b00011, 0b00000,0b10011, 0b00000, 0b00000, 0b01100, 0b01100, 0b00000, 0b10011, 0b11110, 0b10011, 0b10010, 0b11011, 0b01001, 0b11000, 0b10000, 0b10000, 0b00011, 0b00000, 0b00000, 0b00000, 0b11000, 0b01100, 0b00100, 0b01100, 0b11000, };

lcdCommand(0x40);for (i = 0; i < 8 * 6; i++) {

lcdChar(~bsides[i]);}

}

Page 62: Desenvolvimento de Sistemas Embarcados - do hardware ao software

19/11/2016

Page 63: Desenvolvimento de Sistemas Embarcados - do hardware ao software

19/11/2016