Autor Tema: al hacer un debug en proteus hay una variable que no cambia su valor--que deberi  (Leído 5335 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Eduardo2

  • PIC24H
  • ******
  • Mensajes: 1004
Re:al hacer un debug en proteus hay una variable que no cambia su valor--que deberi
« Respuesta #15 en: 07 de Abril de 2022, 18:04:46 »
....
El código es el que esta en la imagen que adjunté

Es evidente que me refiero al que incluye las modificaciones.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:al hacer un debug en proteus hay una variable que no cambia su valor--que deberi
« Respuesta #16 en: 07 de Abril de 2022, 20:23:27 »
Es que justamente para eso usan CCS, es como usar Arduino y no usar las funciones de Arduino..

Código: C
  1. void main(void)
  2. {
  3.   setup_comparator(NC_NC_NC_NC);
  4.   setup_adc_ports(NO_ANALOG);
  5.  
  6.   while(1) {
  7.    output_high(PIN_A0);
  8.    delay_ms(10);
  9.    output_low(PIN_A0);
  10.   }
  11. }

Si esto funciona entonces solo resta agregar la interrupcion..

Desconectado mauruxuus

  • PIC10
  • *
  • Mensajes: 8
Re:al hacer un debug en proteus hay una variable que no cambia su valor--que deberi
« Respuesta #17 en: 07 de Abril de 2022, 20:38:27 »
Les agradezco a todos por sus respuestas, ya se soluciono el problema; me dió curiosidad por comentar casi todas las lineas de código menos las lineas que configuran A0 como salida y las que ponen A0 en alto, lo simulé y prendió el led del pin A0, luego descomente las lineas de código que antes había comentado para habilitar el desbordamiento por timer0 el cual al desbordarse solo cambia el estado de A0 de alto a bajo y viceversa, pero la verdad no se que hice para hacerlo funcionar.

el código quedó así:

#include<18F4550.h>
#fuses XT,NOWDT,NOLVP
#use delay (crystal=4MHz)


#byte INTCON = 0xFF2 //registro de interrupcion ->
#byte T0CON = 0xFD5  //->
#byte ADCON1 = 0xFC1 //->
#bit A0 = 0xF80.0 //direccion de mem del reg PORTA ->
#byte TRISA = 0xF92 //direccion de mem del reg TRISA ->
#byte TMR0L = 0xFD6 //registro contador ->


#INT_TIMER0
void timer0_isr(){
      TMR0L = 6; //->
      A0 = ~A0; //->
}

void main(){

  ADCON1 = 0x0F; //->
 
  T0CON = 0b11000001; //conf como timer PRE x4 ->
  INTCON = 0b10100000; //interrupcions globales e int por timer ->
 
  //T0CON = 0b11101000; //conf como contador
  //INTE = 0b10010000; //interrupcions globales e int por señal ext
 
  bit_clear(TRISA,0); //A0 como salida ->
  A0 = 1;// estado inicial alto ->
  TMR0L = 6; //->
 
 
  while(1){
  }
}//cierra main

Les adjunto el resultado de la simulación