Pic 16F877A não executa programa.

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Pic 16F877A não executa programa.

Mensagempor aparecido » 09 Mar 2011 12:21

Oi pessoal, fiz um simples programa de liga/desliga para acionar um buzzer com o Pic 16F877A, o pic é gravado tudo normal, mas o mesmo não aciona o buzzer, a placa esta ok sem curtos ou trilhas rompidas, no Proteus o programa funciona mas no pic não acontece nada, o que eu posso ter feito de errado? estou usando cristal de 20Mhz e os capacitores com ele de 22pF, configurei no MPLab para usar oscilador externo e coloquei a opção indicada aqui no forum, desabilitei o watchdog, coloquei também um capacitor de 100nF entre o VCC e GND.
Segue o código:

;*************************************************************************************************************
;Alarme residencial
;*************************************************************************************************************
#include <P16F877A.inc> ;modelo do PIC
;*************************************************************************************************************
TEMP1 equ 22h ;Variavel temporaria
TEMP2 equ 23h ;Variavel temporaria
TEMP3 equ 24h ;Variavel temporaria
#define BANK0 BCF STATUS, RP0 ;Seta o banco 0 de memória
#define BANK1 BSF STATUS, RP0 ;Seta o banco 1 de memória
#define buzzer PORTC,4

;*************************************************************************************************************
org 00h ;vetor de reset
goto inicio ;vai para o inicio do programa
;*************************************************************************************************************
;Rotina de inicio do programa
;*************************************************************************************************************
inicio

bsf STATUS,RP0 ;muda para banco 1
movlw 06h
movwf ADCON1 ;Usar as portas A e E como I/O e nao como A/D
movlw B'00000000'
clrf TRISA
clrf TRISB
clrf TRISC
clrf TRISD
clrf TRISE
movlw B'00000000'
movwf TRISA
movlw B'00000000'
movwf TRISC
movlw B'00000000'
movwf TRISD
movlw B'00000000'
movwf TRISE
movlw .31
movwf TRISB
clrf OPTION_REG

bcf STATUS,RP0 ;muda para banco 0
clrf PORTA
clrf PORTB
clrf PORTC
clrf PORTD
clrf PORTE

;*************************************************************************************************************
;Rotina principal
;*************************************************************************************************************
principal
bsf buzzer

call Delay
call Delay
call Delay
bcf buzzer

call Delay
call Delay
call Delay
goto principal

;*************************************************************************************************************
; Subrotina de atraso
;*************************************************************************************************************
Delay

movlw 10 ;move 10 para o acumulador
movwf TEMP1 ;move o valor do acumulador para TEMP1

LABEL1

movlw 50 ;move 50 para o acumulador
movwf TEMP2 ;move o valor do acumulador para TEMP2

LABEL2

movlw 50 ;move 50 para o acumulador
movwf TEMP3 ;move o valor do acumulador para TEMP3

LABEL3

decfsz TEMP3,F ;decrementa TEMP3, skip se zero
goto LABEL3 ;vai para o endereço LABEL3
decfsz TEMP2,F ;decrementa TEMP2, skip se zero
goto LABEL2 ;vai para o endereço LABEL2
decfsz TEMP1,F ;decrementa TEMP1, skip se zero
goto LABEL1 ;vai para o endereço LABEL1
return

end ;diretiva de fim do programa


Uma coisa que começou a acontecer hoje, ao tentar abrir o MPLab aparece a mensagem "Acesso Negado" e fecha o MPLab, não consigo mais usar o programa (meu SO é o Windows 7 x64 RC 7600), tentei abrir o MPLab como administrador e acontece a mesma coisa, alguem sabe como resolver isso tambem? obrigado, até mais.
aparecido
Nibble
 
Mensagens: 69
Registrado em: 22 Jan 2009 19:27

Mensagempor marquim » 09 Mar 2011 17:00

Não parei pra ler o seu programa inteiro, tampouco vou dar palpites quanto ao "pau" do MPLAB, mas vamos considerar algumas coisas importantes sobre a sua dúvida:

1) Por que você não configura a palavra de configuração ("fusíveis") diretamente no programa? Isso pode ser feito com a diretiva __config, como você pode observar na página 55 do MPASM/MPLINK User's Guide.

2) Não basta configurar o PIC para operação com oscilador externo, pois esse oscilador pode ser do tipo RC, cristal <= 4MHz, cristal >= 4MHz, etc... E diga-se de passagem que o 16F877A nem tem clock interno.

3) Qual gravador você está usando? Já conseguiu gravar algum programa que funcionasse nesse PIC? Observe se o MPLAB está configurado corretamente para o seu microcontrolador.

4) Posta o circuito pra gente. O Proteus às vezes "engole" umas coisas que só funcionam nele, então nos dê mais detalhes.

Abracetas.
Avatar do usuário
marquim
Bit
 
Mensagens: 16
Registrado em: 11 Out 2006 21:26

Mensagempor vtrx » 09 Mar 2011 18:34

Sobre o erro do Windows 7 (o erro é no windows e não no compilador),clique com o mouse direito na pasta do MplAb e de todas as permições).
Ve se assim acontece algo.

Código: Selecionar todos
;*************************************************************************************************************
;ALARME RESIDENCIAL
;*************************************************************************************************************
   __CONFIG  _BODEN_OFF & _CP_OFF & _PWRTE_ON & _WDT_OFF & _LVP_OFF & _CPD_OFF & DEBUG_OFF & _WRT_OFF & _XT_OSC ; (COM CRISTAL)

#INCLUDE <P16F877A.INC> ;MODELO DO PIC
;*************************************************************************************************************
   CBLOCK   0X70
TEMP1     ;VARIAVEL TEMPORARIA
TEMP2    ;VARIAVEL TEMPORARIA
TEMP3    ;VARIAVEL TEMPORARIA
   ENDC

#DEFINE BANK0 BCF STATUS, RP0 ;SETA O BANCO 0 DE MEMÓRIA
#DEFINE BANK1 BSF STATUS, RP0 ;SETA O BANCO 1 DE MEMÓRIA
#DEFINE BUZZER PORTC,4

;*************************************************************************************************************
   ORG 00H ;VETOR DE RESET
   GOTO INICIO ;VAI PARA O INICIO DO PROGRAMA
   ORG   0x04      ;ENDEREÇO INICIAL DA INTERRUPÇÃO
   RETFIE         ;RETORNA DA INTERRUPÇÃO
;*************************************************************************************************************
;ROTINA DE INICIO DO PROGRAMA
;*************************************************************************************************************
INICIO

BSF STATUS,RP0 ;MUDA PARA BANCO 1
MOVLW 06H
MOVWF ADCON1 ;USAR AS PORTAS A E E COMO I/O E NAO COMO A/D
MOVLW B'00000000'
CLRF TRISA
CLRF TRISB
CLRF TRISC
CLRF TRISD
CLRF TRISE
MOVLW B'00000000'
MOVWF TRISA
MOVLW B'00000000'
MOVWF TRISC
MOVLW B'00000000'
MOVWF TRISD
MOVLW B'00000000'
MOVWF TRISE
MOVLW .31
MOVWF TRISB
CLRF OPTION_REG

BCF STATUS,RP0 ;MUDA PARA BANCO 0
CLRF PORTA
CLRF PORTB
CLRF PORTC
CLRF PORTD
CLRF PORTE

;*************************************************************************************************************
;ROTINA PRINCIPAL
;*************************************************************************************************************
PRINCIPAL
BSF BUZZER

CALL DELAY
CALL DELAY
CALL DELAY
BCF BUZZER

CALL DELAY
CALL DELAY
CALL DELAY
GOTO PRINCIPAL

;*************************************************************************************************************
; SUBROTINA DE ATRASO
;*************************************************************************************************************
DELAY

MOVLW 10 ;MOVE 10 PARA O ACUMULADOR
MOVWF TEMP1 ;MOVE O VALOR DO ACUMULADOR PARA TEMP1

LABEL1

MOVLW 50 ;MOVE 50 PARA O ACUMULADOR
MOVWF TEMP2 ;MOVE O VALOR DO ACUMULADOR PARA TEMP2

LABEL2

MOVLW 50 ;MOVE 50 PARA O ACUMULADOR
MOVWF TEMP3 ;MOVE O VALOR DO ACUMULADOR PARA TEMP3

LABEL3

DECFSZ TEMP3,F ;DECREMENTA TEMP3, SKIP SE ZERO
GOTO LABEL3 ;VAI PARA O ENDEREÇO LABEL3
DECFSZ TEMP2,F ;DECREMENTA TEMP2, SKIP SE ZERO
GOTO LABEL2 ;VAI PARA O ENDEREÇO LABEL2
DECFSZ TEMP1,F ;DECREMENTA TEMP1, SKIP SE ZERO
GOTO LABEL1 ;VAI PARA O ENDEREÇO LABEL1
RETURN

END ;DIRETIVA DE FIM DO PROGRAMA
Avatar do usuário
vtrx
Dword
 
Mensagens: 2239
Registrado em: 20 Abr 2008 21:01

Mensagempor renatokodaira » 09 Mar 2011 19:42

Pra cristal de 20MHz, a configuraçao precisa ser HS e nao XT no oscilador.
renatokodaira
Byte
 
Mensagens: 402
Registrado em: 11 Out 2006 15:15

Mensagempor aparecido » 09 Mar 2011 19:46

Estou tentando alterar as permissões do Mplab aqui e vou testar o que me sugeriram, dai posto os resultados, obrigado pelas mensagens, abraço.
aparecido
Nibble
 
Mensagens: 69
Registrado em: 22 Jan 2009 19:27

Mensagempor vtrx » 09 Mar 2011 20:03

Não ví quera cristal de 20 Mhz.
Mude o final da configuração para _HS_OSC ;
Avatar do usuário
vtrx
Dword
 
Mensagens: 2239
Registrado em: 20 Abr 2008 21:01

Mensagempor aparecido » 09 Mar 2011 20:16

vtrx eu alterei aqui as permissões e habilitei todas para a pasta Microchip e as subpastas, ainda aparece a mensagem acesso negado.
O caminho que fiz foi botão direito > propriedades > aba segurança > nomes de grupo/usuario deixei selecionado proprietario criador e cliquei em editar e assinalei todos itens da coluna permitir > cliquei em aplicar e ok nas outras telas.
Deixei passar algum detalhe na alteração de permissões? obrigado.
aparecido
Nibble
 
Mensagens: 69
Registrado em: 22 Jan 2009 19:27

Mensagempor vtrx » 09 Mar 2011 21:27

Quando voce click em 'Nome de grupo ou usuario',voce ve em baixo quais a s permissões estão liberadas.
Verifique todas,em 'Usuário (seu nome/etc '),veja se stá com tudo habilitado.
Avatar do usuário
vtrx
Dword
 
Mensagens: 2239
Registrado em: 20 Abr 2008 21:01

Mensagempor aparecido » 09 Mar 2011 21:32

Não aparece nem os campos (vazio ou apagado), eu clico pra editar as permissões, habilito todas, dai em seguida clico para editar novamente para ver se habilitou e estão todas apagadas novamente.
Parece que não salva quando habilito todas permissões.
aparecido
Nibble
 
Mensagens: 69
Registrado em: 22 Jan 2009 19:27

Mensagempor vtrx » 09 Mar 2011 21:38

Talvez voce não esteja como ADM?
Algun ati-virus online??Desabilite-o.
A inútil 'Central de Segurança' ta rodando?Desative.
Tente tambem,com mouse direito,em cima do executável e selecionar 'Executar como Administrador'.
Editado pela última vez por vtrx em 09 Mar 2011 21:46, em um total de 1 vez.
Avatar do usuário
vtrx
Dword
 
Mensagens: 2239
Registrado em: 20 Abr 2008 21:01

Mensagempor aparecido » 09 Mar 2011 21:45

Desabilitei o antivirus (Eset Nod 32) e estou logado como administrador, continua o mesmo problema . :(
aparecido
Nibble
 
Mensagens: 69
Registrado em: 22 Jan 2009 19:27

Mensagempor vtrx » 09 Mar 2011 21:46

Tente tambem,com mouse direito,em cima do executável e selecionar 'Executar como Administrador'.
Avatar do usuário
vtrx
Dword
 
Mensagens: 2239
Registrado em: 20 Abr 2008 21:01

Mensagempor aparecido » 09 Mar 2011 21:49

Mesmo resultado, executei como administrador e acesso negado.
aparecido
Nibble
 
Mensagens: 69
Registrado em: 22 Jan 2009 19:27

Mensagempor vtrx » 09 Mar 2011 21:55

Faz o seguinte,habilite a conta de ADM.
No menu 'executar',digite cmd.
Vai aparecer no menu em cima a palavra 'cmd',clicka com mouse direito nela e escolhe "Executar como administrador" .
Quando abrir a janela do CMD,digite: net user administrador /active:yes.
Da um Reboot no sistema e veja como ta a conta de ADM,e veja se as alterações que fez antes estão funcionando.
Avatar do usuário
vtrx
Dword
 
Mensagens: 2239
Registrado em: 20 Abr 2008 21:01

Mensagempor vtrx » 09 Mar 2011 22:03

Aparecido,verifique se voce deu permissão corretamente.
Escolha a pasta 'Arquivos de programas', clique nela com o botão direito e escolha propriedades\Clique na guia Segurança\ agora clique no botão abaixo AVANÇADAS\ Na aba Proprietário clique em editar e selecione agora o usuário atual que você possui no Windows 7 e marque a opção
"SUBSTITUIR O PROPRIETÁRIO EM SUBCONTAINERS E OBJETOS" depois disso clique em ok , ele informará uma mensagem e fará um processo de permissão para as pastas e sub-pastas.
Depois que terminar clique em OK em todas as janelas e tente acesso denovo.
Avatar do usuário
vtrx
Dword
 
Mensagens: 2239
Registrado em: 20 Abr 2008 21:01

Próximo

Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x