Pesquisar neste blog

16/11/2021

Pisca led PWM #3 com PIC 16F877A

Código feito em CCS C Compiler

#include <16F877A.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#device ADC=8                           // Set ADC resolution to 8-bit
#use delay(clock=8000000)
 
unsigned int8 i, j;
void main(){
  setup_adc(ADC_CLOCK_DIV_32);           // Set ADC conversion time to 32Tosc
  setup_adc_ports(AN0_AN1_AN3);          // Configure AN0,AN1 and AN3 as analog
  setup_ccp1(CCP_PWM);                   // Configure CCP1 as a PWM
  setup_ccp2(CCP_PWM);                   // Configure CCP2 as a PWM
  delay_ms(100);                         // Wait 100ms
  setup_timer_2(T2_DIV_BY_16, 255, 1);   // Set PWM frequency to 488Hz
  while(TRUE){
  
    set_adc_channel(0);                  // Select channel AN0
    delay_ms(1);                         // Wait 1ms
    i = read_adc();                      // Read from AN0 and store in i
    delay_ms(1);                         // Wait 1ms
    set_adc_channel(1);                  // Select channel AN1
    delay_ms(1);                         // Wait 1ms
    j = read_adc();                      // Read from AN1 and store in j
    set_pwm1_duty(i);
    set_pwm2_duty(j);
    delay_ms(1);                         // Wait 1ms
   }
}


Simulador Proteus versão 7.7

13/11/2021

Motor de passo #2 com PIC 16F877A

Simulador Proteus versão 7.7



















Código feito em CCS C Compiler

#include <16F877A.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP                       
#use delay(clock = 20MHz)
#use fast_io(B)  // habilita todas as portas B
#use fast_io(D)  // habilita todas as porras D
 
unsigned int8 speed_;
void main(){
   
  output_b(0);
  set_tris_b(0x03);
  port_b_pullups(TRUE);
  output_d(0);
  set_tris_d(0);
  setup_adc(ADC_CLOCK_DIV_32);      // Set ADC conversion time to 32Tosc
  setup_adc_ports(AN0);             // Configura AN0 em analógica  
  set_adc_channel(0);               // Select channel 0 input
  delay_ms(100);                    // Wait 100ms
  
  while(TRUE){
      output_d(0);
      
      while( ! input(PIN_B0)){
         speed_ = read_adc();
         
         if(speed_ < 2)
            speed_ = 2;
         output_d(0b00000011);
         delay_ms(speed_);
         output_d(0b00000110);
         delay_ms(speed_);
         output_d(0b00001100);
         delay_ms(speed_);
         output_d(0b00001001);
         delay_ms(speed_);
      }
      while( ! input(PIN_B1)){
         speed_ = read_adc();
         if(speed_ < 2)
            speed_ = 2;
         output_d(0b00001001);
         delay_ms(speed_);
         output_d(0b00001100);
         delay_ms(speed_);
         output_d(0b00000110);
         delay_ms(speed_);
         output_d(0b00000011);
         delay_ms(speed_);
      }
   }
}

Saída gerada






















Palavras chave:

Stepper motor with PIC 16F877A
Motor paso a paso con PIC 16F877A
Stappenmotor met PIC 16F877A
PIC 16F877A ସହିତ ଷ୍ଟେପର୍ ମୋଟର |
ʻO ka mīkini stepper me PIC 16F877A
מנוע צעד עם PIC 16F877A
Stepper motor na may PIC 16F877A
PIC16F877Aを搭載したステッピングモーター
Stegmotor med PIC 16F877A

11/11/2021

Verifica 2 vetores em C

Objetivo: Verificar se 2 são exatamente iguais em suas devidas posições.

Código feito em linguagem C

#include <stdio.h>
#define SIZE 3

int vetor[SIZE];

int vet[SIZE] = {2, 2, 9};
int var[SIZE] = {2, 9, 2};
int acertos = 0;

void verifica(int valor, int posicao){
    if(valor == vet[posicao]){
        printf("%d = %d\n",valor, vet[posicao]);
        acertos++;
    }else{
        printf("[%d] != [%d] Não é igual !\n",valor, vet[posicao]);
    }
}

int main(){
    
    for(int i = 0; i < SIZE; i++){
        verifica(var[i], i);
    }
    printf("Acertos = %d\n",acertos);
    return 0;
}

Saída gerada no www.https://www.onlinegdb.com/



10/11/2021

Fatorial #2 com MIPS Assembly

.data
prompt: .asciiz "Entre com num: "
factMsg: .asciiz "Fatorial = "
num: .word 0
.text

la $a0, prompt
li $v0, 4
syscall
li $v0, 5
syscall
sw $v0, num
move $a0, $v0
la $a0, factMsg
li $v0, 4
syscall
lw $a0, num
jal fact
move $a0, $v0
li $v0, 1
syscall
li $v0, 10
syscall

fact:
li $t0, 1
move $t1 $a0, 
loop:
beq $t1, $zero, exit
mul $t0, $t0, $t1
addi $t1, $t1, -1
j loop

exit:
move $v0, $t0
jr $ra

Simulador MARS 4.0


02/11/2021

Fatorial #1 com MIPS Assembly

.data
promptMessage: .asciiz "Entre com o número do fatorial: "
resultMessage: .asciiz "\nFatorial = "
theNumber: .word 0
theAnswer: .word 0
.text
.globl main
main:
#leia o número do usuário
li $v0, 4
la $a0, promptMessage
syscall
li $v0, 5
syscall
sw $v0, theNumber
#Chama a função fatorial
lw $a0, theNumber
jal findFactorial
sw $v0, theAnswer
#Exibi os resultados
li $v0, 4
la $a0, resultMessage
syscall
li $v0, 1
lw $a0, theAnswer
syscall
#Informa ao sistema que este é o fim do programa
li $v0, 10
syscall
#--------------------
# função findFactorial
.globl findFactorial
findFactorial:
subu $sp, $sp, 8
sw $ra, ($sp)
sw $s0, 4($sp)
#Base caso
li $v0, 1
beq $a0, 0, factorialDone
#findFactorial (o número -1)
move $s0, $a0
sub $a0, $a0, 1
jal findFactorial
#A mágia acontece aqui
mul $v0, $s0, $v0
factorialDone:
lw $ra, ($sp)
lw $s0, 4($sp)
addu $sp, $sp, 8
jr $ra

Saída gerada no MARS 4.5
























Palavras chave:

Factorial with MIPS Assembly
Factorial con ensamblaje MIPS
Faktoriell med MIPS-montering
פקטוריאלי עם MIPS Assembly
Silnia z zespołem MIPS
MIPS সমাবেশের সাথে ফ্যাক্টরিয়াল
Faktorial dengan Majelis MIPS
Факториал с MIPS монтаж
Factorial cu Asamblare MIPS