|
resinba
|
 |
« Responder #15 em: Agosto 10, 2008, 00:51:46 » |
|
Como me sinto mais há vontade com assembler, é com ele mesmo que estou a fazer o código... e claro que vou tentar explicar ao máximo o como lá cheguei, e passo a passo como o código foi desenvolvido...
Mas olha, posso levar ate ao fim da semana que vem... ou precisas do programa para ontem?
|
|
|
|
|
Registado
|
Por favor, alterem o meu email no msn pois tenho outro email dedicado aos foruns, e vou bloquear todos os que se encontram no antigo email.
|
|
|
|
bettencourt
|
 |
« Responder #16 em: Agosto 10, 2008, 00:56:33 » |
|
|
|
|
|
|
Registado
|
|
|
|
|
resinba
|
 |
« Responder #17 em: Agosto 10, 2008, 01:03:43 » |
|
Olha não te quero enganar mas para terça feira vai ser muito difÃcil... é que só vou para minha casa no final de segunda feira... e não vou me por a instalar o MPLAB neste pc que não é meu. Mas até ao fim da proxima semana que vem, prometo que tenho o código feito, e simulado
|
|
|
|
|
Registado
|
Por favor, alterem o meu email no msn pois tenho outro email dedicado aos foruns, e vou bloquear todos os que se encontram no antigo email.
|
|
|
|
bettencourt
|
 |
« Responder #18 em: Agosto 10, 2008, 01:04:57 » |
|
ok, fico a espera Obrigado....
|
|
|
|
|
Registado
|
|
|
|
|
resinba
|
 |
« Responder #19 em: Agosto 13, 2008, 23:36:34 » |
|
Bem aqui está o código... espero que seja isto que precisas, uma nota muito importante... - os pinos de entrada são os pinos do porto b, mais precisamente do RB0 ao RB5 - os pinos são activos low - o programa só aceita um botão de cada vez, assim se estiverem mais que um botão a low esse define sempre o de menor peso. - as saÃdas são no porto a mais precisamente RA0 a RA3 de resto não me lembro de mais.
aqui está o código em Assembler (com calma irei dizer o que cada parte faz).
list p=16F84A ; list directive to define processor #include <p16F84A.inc> ; processor specific variable definitions
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _HS_OSC
; '__CONFIG' directive is used to embed configuration data within .asm file. ; The lables following the directive are located in the respective .inc file. ; See respective data sheet for additional information on configuration word.
;***** VARIABLE DEFINITIONS tempo EQU 0x0C ; variable used for context saving flag EQU 0x0D ; variable used for context saving
;********************************************************************** ORG 0x000 ; processor reset vector call PIC_CONFIG goto MAIN ; go to beginning of program
;******************************** TEMPO ;*** Rotina que gera 5s *** ;******************************** movlw d'100' movwf tempo return
;************************************************** DELAY ;*** Rotina que provoca um atraso de 50ms *** ;************************************************** clrf TMR0 clrf INTCON movlw d'60' movwf TMR0 LOOP_DELAY btfss INTCON, T0IF goto LOOP_DELAY decfsz tempo, 1 goto LOOP_DELAY_1 bsf flag,6 LOOP_DELAY_1 clrf INTCON return
;********************************** UM ;*** Rotina que gera o BCD 1 *** ;********************************** call DELAY btfsc PORTB, 0 goto LOOP_UM_1 movlw d'1' movwf PORTA LOOP_UM btfss PORTB,0 goto LOOP_UM call TEMPO goto MAIN LOOP_UM_1 bsf flag, 0 goto MAIN
;************************************ DOIS ;*** Rotina que gera o BCD 2 *** ;************************************ call DELAY btfsc PORTB, 1 goto LOOP_DOIS_1 movlw d'2' movwf PORTA LOOP_DOIS btfss PORTB,1 goto LOOP_DOIS call TEMPO goto MAIN LOOP_DOIS_1 bsf flag, 0 goto MAIN
;************************************ TRES ;*** Rotina que gera o BCD 3 *** ;************************************ call DELAY btfsc PORTB, 2 goto LOOP_TRES_1 movlw d'3' movwf PORTA LOOP_TRES btfss PORTB,2 goto LOOP_TRES call TEMPO goto MAIN LOOP_TRES_1 bsf flag, 0 goto MAIN
;************************************** QUATRO ;*** Rotina que gera o BCD 4 *** ;************************************** call DELAY btfsc PORTB, 3 goto LOOP_QUATRO_1 movlw d'4' movwf PORTA LOOP_QUATRO btfss PORTB,3 goto LOOP_QUATRO call TEMPO goto MAIN LOOP_QUATRO_1 bsf flag, 0 goto MAIN
;************************************* CINCO ;*** Rotina que gera o BCD 5 *** ;************************************* call DELAY btfsc PORTB, 4 goto LOOP_CINCO_1 movlw d'5' movwf PORTA LOOP_CINCO btfss PORTB,4 goto LOOP_UM call TEMPO goto MAIN LOOP_CINCO_1 bsf flag, 0 goto MAIN
;************************************ SEIS ;*** Rotina que gera o BCD 6 *** ;************************************ call DELAY btfsc PORTB, 5 goto LOOP_SEIS_1 movlw d'6' movwf PORTA LOOP_SEIS btfss PORTB,5 goto LOOP_SEIS call TEMPO goto MAIN LOOP_SEIS_1 bsf flag, 0 goto MAIN
;********************************************** TESTA_TECLA ;*** Rotina que testa as teclas *** ;********************************************** btfss PORTB,0 goto UM btfss PORTB,1 goto DOIS btfss PORTB,2 goto TRES btfss PORTB,3 goto QUATRO btfss PORTB,4 goto CINCO btfss PORTB,5 goto SEIS bsf flag, 0 goto MAIN
;************************ MAIN ;*** Rotina MAIN *** ;************************ btfss flag, 0 goto TESTA_TECLA bcf flag, 0 btfss flag,6 call DELAY btfss flag,6 goto MAIN call TEMPO clrf flag clrf PORTA goto MAIN
;************************************************ PIC_CONFIG ;*** Rotina de configuração do PIC *** ;************************************************ clrf PORTA clrf PORTB clrf flag clrf tempo clrf STATUS bsf STATUS, RP0 movlw b'11111111' movwf TRISB movlw b'11110000' movwf TRISA movlw b'11000111' movwf OPTION_REG bcf STATUS, RP0 call TEMPO return ;*************************** END ;*** Fim do programa *** ;***************************
e aqui fica o código em hexadecimal...
:020000040000FA :100000006B20602864308C00080081018B013C303B :1000100081000B1D09288C0B0E280D178B01080081 :1000200005200618192801308500061C1528022015 :1000300060280D14602805208618242802308500C9 :10004000861C2028022060280D146028052006192F :100050002F2803308500061D2B28022060280D1450 :100060006028052086193A2804308500861D362828 :10007000022060280D1460280520061A4528053046 :100080008500061E1528022060280D146028052012 :10009000861A502806308500861E4C2802206028CB :1000A0000D146028061C1028861C1B28061D2628F7 :1000B000861D3128061E3C28861E47280D14602800 :1000C0000D1C52280D100D1F05200D1F6028022049 :1000D0008D0185016028850186018D018C018301D8 :1000E0008316FF308600F0308500C7308100831210 :0400F00002200800E2 :02400E00F23F7F :00000001FF
NÃO TE ESQUEÇAS DE LER A NOTA COM ATENÇÃO
Reporta depois os resultados.
|
|
|
|
« Última modificação: Agosto 14, 2008, 20:00:44 por resinba »
|
Registado
|
Por favor, alterem o meu email no msn pois tenho outro email dedicado aos foruns, e vou bloquear todos os que se encontram no antigo email.
|
|
|
|
bettencourt
|
 |
« Responder #20 em: Agosto 14, 2008, 00:52:45 » |
|
muito obrigado....
depois ei de por duvidas correspondente ao codigo e simulação no mplab
amanha vou testar o codigo n o faço agora porque ja estou muito cansado de lixar e pintar
|
|
|
|
|
Registado
|
|
|
|
|
bettencourt
|
 |
« Responder #21 em: Agosto 14, 2008, 23:03:03 » |
|
boas,tive a testar o codio e ate agora nada  tou a ligar as cenas como disseste, tpo o 7448 ao porto a, neste momento so tenhum um interruptor ligado ao porto b para n geral muita confusão com fios. tou a utilizar o pic16f84a com um oscilador de 10M ja experimentei tambem com um de 12 e tou a utilizar os dois condensadores de 27pf ao programar o pic da tudo bem sem erros já agora estou a utilizar o programador por usb, estava com dificuldades em comunicar com ele, o problema era das drives... resinba o que sugeres que faça? :S
|
|
|
|
|
Registado
|
|
|
|
|
resinba
|
 |
« Responder #22 em: Agosto 15, 2008, 01:08:20 » |
|
o código foi feito para 4mhz (cristal), tenta usar uma malha rc em vez de cristal verás os valores no datasheet do 16f84a
|
|
|
|
|
Registado
|
Por favor, alterem o meu email no msn pois tenho outro email dedicado aos foruns, e vou bloquear todos os que se encontram no antigo email.
|
|
|
|
bettencourt
|
 |
« Responder #23 em: Agosto 15, 2008, 11:54:14 » |
|
tou a procura em placas velhas de elecrodomesticos de cristal de 4M se n encontrar vou tentar fazer como disseste com malha RC. + uma X obrigado pela ajuda a desenvolver esta aplicação 
|
|
|
|
|
Registado
|
|
|
|
|
bettencourt
|
 |
« Responder #24 em: Agosto 15, 2008, 15:58:47 » |
|
|
|
|
|
|
Registado
|
|
|
|
|
resinba
|
 |
« Responder #25 em: Agosto 15, 2008, 21:08:11 » |
|
quais foram o problemas que te deparas-te com o código... porque o que custou foi desenvolve-lo, agora é só alterações nada de mais... Quanto há explicação irei fazê-la dentro de pouco tempo... Abrirei um tópico na subsecção código, convém depois é o pessoal por duvidas sobre o que não perceber, pois posso não explicar bem certos pontos, não é por maldade... é mesmo por julgar ser banal... EDIT: É para informar que o tópico já foi iniciado, aqui em baixo: http://www.electronicapt.com/forum/index.php?topic=1464.0
|
|
|
|
« Última modificação: Agosto 15, 2008, 23:42:43 por resinba »
|
Registado
|
Por favor, alterem o meu email no msn pois tenho outro email dedicado aos foruns, e vou bloquear todos os que se encontram no antigo email.
|
|
|
|
bettencourt
|
 |
« Responder #26 em: Agosto 16, 2008, 10:45:41 » |
|
boas já tive a ver o codigo que esplicaste... mas mais logo vou imprimir e ver melhor... Tou a deparar que a minha maior dificuldade é não saber determinadas instruçoes especificas do fic tal vomo o movlw movwf btfss etc... O pouco que sei de assembly foi que aprendi para o 8051 o que é um pouco diferente deste Depois ei de por duvidas na outra secção
|
|
|
|
|
Registado
|
|
|
|
|
bettencourt
|
 |
« Responder #27 em: Agosto 17, 2008, 10:41:21 » |
|
boas respondendo a pergunta de problemas com o codigo,não é bem um problema é mais um ajuste
para funcionar bem com um cristal de 4M é preciso alterar o tempo para +/-1.5 2 segundos
|
|
|
|
|
Registado
|
|
|
|
|
bettencourt
|
 |
« Responder #28 em: Agosto 17, 2008, 11:31:10 » |
|
montagem em bradbord para fazer testes  caixa de velocidades onde vem um cena branca por baixo tem interruptores designados por micro switsh.  a caixa é igual citroen saxo, citroen AX
|
|
|
|
|
Registado
|
|
|
|
|
resinba
|
 |
« Responder #29 em: Agosto 17, 2008, 11:40:48 » |
|
Olha agarras no wordpad e editas a seguinte linha do codigo:
:100000006B20602864308C00080081018B013C303B
alteras para:
:100000006B2060281E308C00080081018B013C303B
salvas, e gravas de novo no pic, com esta alteração ficas com o tempo reduzido para 1,5s quando usado um cristal de 4MHz, para o baucing ele usa um retardo de 50ms, mas isso já tu descobriste.
|
|
|
|
|
Registado
|
Por favor, alterem o meu email no msn pois tenho outro email dedicado aos foruns, e vou bloquear todos os que se encontram no antigo email.
|
|
|
|