Baixe o app para aproveitar ainda mais
Prévia do material em texto
Programação pic aulas: //aula 1 // teste de portas entada e saida, contadores e operaçoes matematicas // para simular usar o pic 16f877A com o portb monitorado por leds // e um botao no portA4 com acionamento no negativo. // ao acionar o botão , o portB e multiplicado por 2 ex 1,2,4,8,16.... void main() { //************************declarar as variaveis aqui***************** int conta; // variavel conta (inteiro 16 bits) //******************configuraçoes das entradas e saidas************** TRISB = 0x00; // registrador tris sentido de dados portB "saida" PORTB = 0X01; // escreve o valor de " no portb" trisa.ra4 = 1; // registrandor tris manipulado como bit RA4 como entrada //********************************************************************* while(1) // laço de loop "inicio" { if (porta.ra4 == 0) // laço if com condiçao da chave acionada "aciona em zero" { for (conta = 0;conta <7 ;conta++) // laço for contador { portb = portb * 2; Delay_ms (500); } // fim do for } // fim do if else // condiçao contraria do 1.o if " senão" { portb = 1; } }// fim do laço de loop "while" }// fim do main //aula2 // executa uma rotina 3x no portb ao se acionar um chave no A4 "pulso negativo" void main() // inicio do main { //**************************declaração das variaveis**************************** char i; // variavel "i" como char 8bits //********************config das portas e registradores********************* TRISB = 0x00; // port b config como saida trisa.ra4 = 1; // port A4 como entrada PORTB = 0x00; // portb começa com o valor de zero //************************laço loop "while"******************************* while (1) { if (porta.ra4 == 0) // laço if condicional, so executa quando A4 = 0 { for(i=0;i<3;i++) // laço de for, contador incrementa o valor de i em 3x { delay_ms (500); portb = 0x23; delay_ms (500); portb = 0xbf; delay_ms (500); portb = 0x10; } // fim do for }// fim do if PORTB = 0x00; } //fim do loop }// fim do main // aula3 //acionamento de botao simples com a função button // chaves no RB0 e RB1 // leds no RD0 e RD1 // Chave0 "RB0" ativa led1 "RD1" e chave1 "RB1" ativa led2 "RD0" // acionamento não retentivo e independente. // esse modelo o led e botao vao usar definiçoes com nomes especificos // ******************declaração das definiçoes*********************** #define bot_0 Button(&PORTB, 0, 50, 0) #define bot_1 Button(&PORTB, 1, 50, 0) #define led_0 PORTD.RD0 #define led_1 PORTD.RD1 void main() { //**********declaração das variaveis******************************* bit flag1 ; //variavel de flag 1bit bit flag2 ; //variavel de flag 1bit //**************config das portas*********************************** TRISB.RB0 = 1; // RB0 ENTRADA TRISB.RB1 = 1; // RB1 ENTRADA TRISD.RD0 = 0; // RD0 SAIDA TRISD.RD1 = 0; // RD1 SAIDA led_0 = 0; led_1 = 0; flag1 = 0; flag2 = 0; while(1) // inicio do loop { //*************************************acionamento do led 1********************* if (bot_0 && flag1 == 0) // botao0 acionado led1 ligado { led_1 = 1; flag1= 1; } if (!bot_0 && flag1 == 1) // botao0 solto led1 desligado { led_1 = 0; flag1 = 0; } //**************************************************************************** //*********************************acionmento do led 0 ************************ if (bot_1 && flag2 == 0) // botao1 acionado led0 ligado { led_0 = 1; flag2 = 1; } if (!bot_1 && flag2 == 1) // botao1 solto led0 desligado { led_0 = 0; flag2 = 0; } //****************************************************************************** }// fim do loop }//fim do main // aula3 //acionamento de botao retentivo com a funçao button // chaves no RB0 e RB1 // leds no RD0 e RD1 // Chave0 "RB0" ativa led1 "RD1" e chave1 "RB1" ativa led2 "RD0" // acionamento retentivo e independente. // esse modelo o led e botao vao usar definiçoes com nomes especificos // ******************declaração das definiçoes*********************** #define bot_0 Button(&PORTB, 0, 50, 0) #define bot_1 Button(&PORTB, 1, 50, 0) #define led_0 PORTD.RD0 #define led_1 PORTD.RD1 void main() { //**********declaração das variaveis******************************* bit flag1 ; //variavel de flag 1bit bit flag2 ; //variavel de flag 1bit //**************config das portas*********************************** TRISB.RB0 = 1; // RB0 ENTRADA TRISB.RB1 = 1; // RB1 ENTRADA TRISD.RD0 = 0; // RD0 SAIDA TRISD.RD1 = 0; // RD1 SAIDA led_0 = 0; led_1 = 0; flag1 = 0; flag2 = 0; while(1) // inicio do loop { //*************************************acionamento do led 1********************* if (bot_0 && flag1 == 0) // botao0 acionado led1 ligado { led_1 = ~led_1; // inverte valor do led 1 flag1= 1; } if (!bot_0 && flag1 == 1) // botao0 solto led1 desligado { flag1 = 0; } //**************************************************************************** //*********************************acionmento do led 0 ************************ if (bot_1 && flag2 == 0) // botao1 acionado led0 ligado { led_0 = ~led_0; // inverte valor led 0 flag2 = 1; } if (!bot_1 && flag2 == 1) // botao1 solto led0 desligado { flag2 = 0; } //****************************************************************************** }// fim do loop }//fim do main // aula 4 //display de 7 segmentos nesse exemplo temos um display no portD e //o mesmo vai ser incrementado até 9 pelo botao 1 e decrementado ate 0 //pelo botao 2 // funçao para acionamento do display " biblioteca"************* char disp7(char numero) { switch (numero) { case 0:return 0x3f; break; case 1:return 0x06; break; case 2:return 0x5B; break; case 3:return 0x4F; break; case 4:return 0x66; break; case 5:return 0x6D; break; case 6:return 0x7D; break; case 7:return 0x07; break; case 8:return 0x7F; break; case 9:return 0x6F; break; } } //*****************************fim da funcao display****************** #define bot_1 Button(&PORTB, 0, 50, 0) #define bot_2 Button(&PORTB, 1, 50, 0) void main() { //************************declaração de variaveis********************* char dec=0; signed char conta; // variavel conta 8 bits sinalizado (-127 a +128) bit flag1; bit flag2; //************************config das portas*************************** trisd = 0; // portd display trisb.rb0 = 1; // b0 botao1 trisb.rb1 = 1; // b1 botao2 portd = 0; portd = disp7(0); while (1) { if (bot_1 && flag1 == 0) { conta++; flag1 = 1; } if (!bot_1 && flag1 == 1) { flag1 = 0; } if (bot_2 && flag2 == 0) { conta--; flag2 = 1; } if (!bot_2 && flag2 == 1) { flag2 = 0; } if (conta < 0) conta = 0; else if (conta > 9) conta = 9; portd = disp7(conta); } }
Compartilhar