Ir ao conteúdo
  • Cadastre-se
lincolnlss

RESOLVIDO Cronometro PIC 16f628A - Dúvida sobre complilação

Recommended Posts

Ola noite.

 

Estou com dúvida em relação a um código que achei na internet de cronometro c/ PIC 16f628A. Tentei simular no Proteus e deu erro.

Este código precisa de algum comando para iniciar? não sei qual linguagem ele se encontra.

 

  1. sbit LCD_RS at RB6_bit;
  2. sbit LCD_EN at RB1_bit;
  3. sbit LCD_D4 at RB2_bit;
  4. sbit LCD_D5 at RB3_bit;
  5. sbit LCD_D6 at RB4_bit;
  6. sbit LCD_D7 at RB5_bit;
  7.  
  8. sbit LCD_RS_Direction at TRISB6_bit;
  9. sbit LCD_EN_Direction at TRISB1_bit;
  10. sbit LCD_D4_Direction at TRISB2_bit;
  11. sbit LCD_D5_Direction at TRISB3_bit;
  12. sbit LCD_D6_Direction at TRISB4_bit;
  13. sbit LCD_D7_Direction at TRISB5_bit;
  14.  
  15. sbit Zerar at PORTB.B7;
  16.  
  17. unsigned MicroSegundos at TMR1L;
  18.  
  19. typedef struct
  20. {
  21. char minutos;
  22. char segundos;
  23. unsigned mSegundos;
  24. }Cronometro;
  25.  
  26. Cronometro Crono = {0,0,0};
  27.  
  28. //1us( contagem dos microsegundos )
  29. void Timer1_Init()
  30. {
  31. T1CON = 0b00000000; //Prescaler 1:1 e stop
  32. }
  33.  
  34. //1ms
  35. void Timer0_Init()
  36. {
  37. OPTION_REG = 0x81; //prescaler 1:4
  38. TMR0 = 6; // (4/clock) * (256 - 6) * 4 = 1ms
  39. TMR0IE_Bit = 0; //stop
  40. }
  41.  
  42. void Interrupt()
  43. {
  44. if( TMR0IF_Bit )
  45. {
  46. TMR0IF_Bit = 0;
  47. TMR0 = 6;
  48.  
  49. MicroSegundos = 0;
  50. Crono.mSegundos++;
  51. if( Crono.mSegundos >= 1000 )
  52. {
  53. Crono.mSegundos = 0;
  54. Crono.segundos++;
  55. if( Crono.segundos >= 60 )
  56. {
  57. Crono.segundos = 0;
  58. Crono.minutos++;
  59. if( Crono.minutos >= 99 )
  60. {
  61. Crono.minutos = 0;
  62. }
  63. }
  64. }
  65.  
  66. }
  67. else if( INTF_Bit ) // Iniciar/Pausar
  68. {
  69. INTF_Bit = 0;
  70. TMR0IF_Bit = 0;
  71. TMR0 = 6;
  72. TMR0IE_Bit = ~TMR0IE_Bit;
  73. TMR1ON_Bit = ~TMR1ON_Bit;
  74. }
  75. }
  76.  
  77. void main()
  78. {
  79. char flag = 0;
  80. #define zerar_flag flag.B1
  81.  
  82. CMCON = 7;
  83.  
  84. Lcd_Init();
  85. Lcd_Cmd( _LCD_CURSOR_OFF );
  86. Lcd_Out( 1, 5, " m s ms us" );
  87.  
  88. TRISB.B7 = 1;
  89.  
  90. GIE_bit = 1;
  91. PEIE_Bit = 1;
  92. INTE_Bit = 1;
  93.  
  94. MicroSegundos = 0;
  95. Timer0_Init();
  96. Timer1_Init();
  97.  
  98. while(1)
  99. {
  100. if( Zerar ) zerar_flag = 1;
  101. if( !Zerar && zerar_flag )
  102. {
  103. zerar_flag = 0;
  104. Crono.minutos = 0;
  105. Crono.segundos = 0;
  106. Crono.mSegundos = 0;
  107. MicroSegundos = 0;
  108. }
  109.  
  110. Lcd_Chr( 2, 5, Crono.minutos/10 + '0' );
  111. Lcd_Chr_CP( (Crono.minutos%10) + '0' );
  112. Lcd_Chr_CP(':');
  113. Lcd_Chr_CP( Crono.segundos/10 + '0' );
  114. Lcd_Chr_CP( (Crono.segundos%10) + '0' );
  115. Lcd_Chr_CP(':');
  116. Lcd_Chr_CP( Crono.mSegundos/100 + '0' );
  117. Lcd_Chr_CP( (Crono.mSegundos/10%10) + '0' );
  118. Lcd_Chr_CP( (Crono.mSegundos%10) + '0' );
  119. Lcd_Chr_CP(':');
  120. Lcd_Chr_CP( MicroSegundos/100 + '0' );
  121. Lcd_Chr_CP( (MicroSegundos/10%10) + '0' );
  122. Lcd_Chr_CP( (MicroSegundos%10) + '0' );
  123. }
  124.  
  125. }

Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante
lincolnlss

 

 Esse código esta em C do mikroC, crie um novo projeto, escolha o PIC e a frequência ai cola ele no compilador e clique em compilar, na pasta do projeto tera um HEX, você devera usar esse HEX no Proteus (dando dois click's em cima do PIC e depois clicando onde esta escrito "progam File" ai você navega até o HEX)

 Poste aqui qual foi o erro encontrado para podermos lhe ajudar melhor.. OK?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Complementandos as informações acima:

 

A linguagem utilizada é o C, e o compilador, o MikroC, cuja versão gratuita pode ser baixada no site da MIkroElektronika

 

Depois de instalar o compilador, abra um novo projeto,

 

  • No passo 1, "Projects Setting", defina o nome do projeto, o diretório onde serão guardados os arquivos, o microcontrolador (16F628A) e o clock (4MHz)
  • Pule o passo 2 "Select Files you want to add to project";
  • No passo 3, "Select inicial state for library manager", clique em "Select all"
  • No passo 4, clique em "finish"

 

A IDE do MikroC vai criar um arquivo inicial de extensão .c, e com o mesmo nome que você deu para o projeto, com o código default void main() {}. Copie o código do cronômetro e cole nessa janela, sobreescrevendo o default do MIkroC.

 

Depois é só compilar (CONTROL+F9) e usar o hex gerado no Proteus.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Complementandos as informações acima:

 

A linguagem utilizada é o C, e o compilador, o MikroC, cuja versão gratuita pode ser baixada no site da MIkroElektronika

 

Depois de instalar o compilador, abra um novo projeto,

 

  • No passo 1, "Projects Setting", defina o nome do projeto, o diretório onde serão guardados os arquivos, o microcontrolador (16F628A) e o clock (4MHz)
  • Pule o passo 2 "Select Files you want to add to project";
  • No passo 3, "Select inicial state for library manager", clique em "Select all"
  • No passo 4, clique em "finish"

 

A IDE do MikroC vai criar um arquivo inicial de extensão .c, e com o mesmo nome que você deu para o projeto, com o código default void main() {}. Copie o código do cronômetro e cole nessa janela, sobreescrevendo o default do MIkroC.

 

Depois é só compilar (CONTROL+F9) e usar o hex gerado no Proteus.

Muito obrigado pelas respostas.

 

 

LMolinari, segui sua dica e apresentou os seguintes erros:

post-702356-0-83304200-1396636786_thumb.

post-702356-0-62025900-1396636792_thumb.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu testei aqui e compilou sem erros.

 

Reveja o passo a passo, é provável que:

 

1) você tenha errado o copiar-colar, copiando parcialmente o código;

 

2) tenha esquecido de clicar em "Select All" na janela do passo 3

 

Anexei ao post o projeto que fiz aqui para o caso de dificuldades.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu testei aqui e compilou sem erros.

 

Reveja o passo a passo, é provável que:

 

1) você tenha errado o copiar-colar, copiando parcialmente o código;

 

2) tenha esquecido de clicar em "Select All" na janela do passo 3

 

Anexei ao post o projeto que fiz aqui para o caso de dificuldades.

Continua dando erro. Vou tentar reinstalar o compilador

Continua dando erro. Vou tentar reinstalar o compilador

Reinstalei agora rodou sem erros. Muito obrigado pela ajuda..

Compartilhar este post


Link para o post
Compartilhar em outros sites
Visitante
Este tópico está impedido de receber novos posts.





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×