Fórum Eletrônica2002 (Brasil)
Seja bem vindo ao fórum Eletrônica2002.

Para ter acesso a todo o conteúdo do fórum você precisa estar cadastrado e fazer o login!

Se não é cadastrado no fórum: aproveite e faça.

Para criar um tópico, você precisa se cadastrar e estar conectado.
Ao criar um tópico, vc deve colocar a marca/modelo/e defeito do aparelho no título do tópico. Isto é regra neste fórum!
http://eletronica2002.forumeiros.com/forum-de-reparacao-de-aparelhos-eletronicos-f1/regras-do-forum-t19731.htm

Falar com o administrador?
Mande um e-mail: valdeni@eletronica2002.com.br
.
Menu de navegação


Clique nas imagens abaixo para acessar os fóruns desejados.

Fóruns:





---------------------------

PARCEIROS

E PATROCINADORES

DO FÓRUM 2002:

================

Clique nos banners:




================

Quer ser um patrocinador do fórum?

Mande um e-mail para:

Valdeni@eletronica2002.com.br


_________________
Últimos assuntos
» Auto Rádio Philips CEM2000 não liga
Ontem à(s) 23:23 por Ohm

» Central Multimídia - MediaNav Renault Duster - Tela branca
Ontem à(s) 15:41 por rafaquino91

» SOM PHILIPS FWM593/BK SEM SOM
Ontem à(s) 13:50 por HAHNRAHN

» MICROSSISTEM PANASSONIC SA-MAX200 ARMANDO PROTEÇÃO
Ontem à(s) 13:20 por negoleo21

» MÓDULO PYRAMID PB310GX SEM ÁUDIO
Ontem à(s) 10:12 por glob

» MIXER BEHRINGER VMX 300 COM TRAFO ALTERADO.
Ontem à(s) 08:59 por Oficina do SOM

» tv philips mod 14GX1618/78R ñ muda de canal(travada)
Ontem à(s) 07:29 por Nill

» TV SONY kv29fs100 Imagem rolando e ronco no áudio
Seg 15 Out 2018, 21:39 por Luciano Ozorio

» tv semp toshiba 2092 lav com linhas de retraços
Seg 15 Out 2018, 16:18 por samucasvm

» nobreak pl1500b1 só liga fora da rede
Seg 15 Out 2018, 14:15 por nagkiller

» Receiver Yamaha mod RX. V. 640 entrando em proteção
Seg 15 Out 2018, 10:59 por Oficina do SOM

» Caixa amplificada lexsen LS12A MP3 não sai som
Seg 15 Out 2018, 10:50 por Oficina do SOM

» Receiver-Gradiente- r343-problema saida som baixa e fm para de funcionar apos alguns minuyos
Seg 15 Out 2018, 10:46 por Oficina do SOM

» som sharp cd-k1600z volume baixo e com ruido
Seg 15 Out 2018, 10:40 por Oficina do SOM

» caixa ativa donner clarity CL-200A com chiado.
Dom 14 Out 2018, 16:37 por Nill

» Som Sony HCD-GTX77 - Não toca pendriver
Dom 14 Out 2018, 16:36 por Nill

» tv lg RP-14CB25A não liga
Dom 14 Out 2018, 12:05 por MARIO Y. SEGAWA

» Som lg // cm 4330 // s-proteção
Sab 13 Out 2018, 21:00 por antonio benedito de queir

» tv lg cp29k30 nao liga
Sab 13 Out 2018, 20:41 por antonio benedito de queir

» tv lg 21fs4rlg-ls desliga e fica em standby
Sex 12 Out 2018, 20:22 por antonio benedito de queir

» TV Sanyo CTP6707 fonte alta
Sex 12 Out 2018, 07:29 por tomate

» CAIXA AMPLIFICADA CICLOTRON PREMIUM 800! QUEIMANDO SAÍDAS DE ÁUDIO
Sex 12 Out 2018, 07:14 por tomate

» TV LG RP 29FA35A - Tensões nas linhas SCL e SDA oscilando.
Qua 10 Out 2018, 22:16 por glob

» Amplificador deaudio JRC SPA750 (em curto)
Qua 10 Out 2018, 21:58 por Oficina do SOM

» Nobreak Tsshara upsmp14 (upsmini 500va) esquema ou ajuda
Qua 10 Out 2018, 10:34 por MARCINHOXP

» projetor epson 12+
Ter 09 Out 2018, 16:10 por Nill

» Microondas Panasonic NN-ST654 Liga com porta aberta ao plugar na tomada
Seg 08 Out 2018, 23:58 por EDUEVERLAST14

»  som Philips FWM9000X/78 como RESETAR?
Seg 08 Out 2018, 22:53 por Oficina do SOM

» som aiwa nsx-s509 desarmando rele da fonte ao ligar e som baixo com volume maximo.
Seg 08 Out 2018, 22:46 por Oficina do SOM

» TV TECTOY TVS 1410 não sai do standiby
Seg 08 Out 2018, 14:46 por Nill

Quem está conectado
80 usuários online :: 3 usuários cadastrados, 1 Invisível e 76 Visitantes :: 3 Motores de busca

binho-elet.vital fontoura, CACÁ, Quinalha

O recorde de usuários online foi de 1034 em Sex 24 Jul 2015, 10:41

Adicionar botão a PIC16F84

Ir em baixo

Adicionar botão a PIC16F84

Mensagem por andref em Qua 18 Fev 2015, 21:25

Boas pessoal,
Estou a fazer um protejo com um PIC16F84, e estou programando em assembly.
Fiz o programa a mostrar varias informações num ecrã, mas mostra cada informação num certo período de tempo, depois muda para a outra. Gostava de inserir na programação em assembly um botão que alterna-se as informações mostradas, ou seja quando ligasse o PIC mostrava por ex.: a temperatura ambiente, depois ao carregar no botão mostrava a data, carregando outra vez mostrava a temperatura máxima atingida, voltando a carregar voltava a temperatura ambiente, sempre assim neste ciclo.
Alguem me sabe dizer o que devo de adicionar, ou alguem tem algum exemplo identico?
A programação das tarefas (informação a mostrar) já esta concluida, basta so adicionar o botão a programação.
Obrigado.
avatar
andref
NOVATO
NOVATO

DESCRIÇÃO: : Técnico em Eletrônica e informática
TEMPO DE EXPERIÊNCIA : 3 anos
Sexo : Masculino
Número de Mensagens : 2
Idade : 25
Cidade/Estado: : Lisboa
Data de inscrição : 18/02/2015

Voltar ao Topo Ir em baixo

Re: Adicionar botão a PIC16F84

Mensagem por nagkiller em Sab 21 Fev 2015, 09:49

Poste todo o seu projeto para que possamos analisar...

Quer fazer isso com apenas 1 botão??? E esta tarefa de mostrar automaticamente, ainda quer quer aconteça, ou quer a substitui-la pelo botão???

Uma maneira simples é criar uma variável e ir adicionando valor cada vez que este botão é pressionado, chegando ao limite de sua conta, inicie novamente a contagem...
E conforme a contagem, o display mostrará a mensagem desejada.

Flw...

_________________
No mundo só existem 10 tipos de pessoas: as que conhecem binário e as que não conhecem!!!
avatar
nagkiller
Moderador do fórum
Moderador do fórum

DESCRIÇÃO: : Técnico em Eletrônica e informática
TEMPO DE EXPERIÊNCIA : Desde 1990
Sexo : Masculino
Número de Mensagens : 1796
Idade : 38
Cidade/Estado: : Garça - São Paulo
Humor : Depende
Data de inscrição : 23/11/2011

Voltar ao Topo Ir em baixo

Re: Adicionar botão a PIC16F84

Mensagem por andref em Sab 21 Fev 2015, 12:25

[Você precisa estar registrado e conectado para ver este link.] escreveu:Poste todo o seu projeto para que possamos analisar...

Quer fazer isso com apenas 1 botão??? E esta tarefa de mostrar automaticamente, ainda quer quer aconteça, ou quer a substitui-la pelo botão???

Uma maneira simples é criar uma variável e ir adicionando valor cada vez que este botão é pressionado, chegando ao limite de sua conta, inicie novamente a contagem...
E conforme a contagem, o display mostrará a mensagem desejada.

Flw...
sim quero fazer isto com apenas um botão e excluir a tarefa de mostrar automaticamente
aqui esta o excerto do codigo que faz mostra automaticamente
Código:

        ; show speed 30 times (~1.5 minutes)
   movlw   0x1e
   movwf   mainTemp
mainloop1
   call   showSpeed
   call   delay_1_sec
   call   delay_1_sec
   decfsz   mainTemp
   goto   mainloop1
   ; show top speed for 10 seconds
   call   showTopSpeed
   call   delay_10_sec
   ; show speed 30 times (~1.5 minutes)
   movlw   0x1e
   movwf   mainTemp
   goto   mainloop1
   return
e aqui esta o codigo completo
Código:

; Ports

#define      DIS   PORTB,1      ; Display on
#define      SDA   PORTB,2      ; SDA TID
#define      SCL   PORTB,3      ; SCL TID
#define      MRQ   PORTB,4      ; MRQ TID

; Programm memory
CounterA   EQU   0eh
CounterB   EQU   0fh
CounterC   EQU   10h
CounterD   EQU   11h
W1      EQU   12h
W2      EQU   13h
W3      EQU   14h
I2CBYTE      EQU   15h
AREG      EQU   16h
BREG      EQU   17h
CREG      EQU   18h
DREG      EQU   19h
TID1      EQU   1ah
TID2      EQU   2bh
TID3      EQU   2ch
TID4      EQU   2dh
TID5      EQU   2eh
TID6      EQU   2fh
TID7      EQU   20h
TID8      EQU   21h
TIDtemp      EQU   22h
TIDtextNr   EQU   23h
speed1      EQU   24h
speed10      EQU   25h
speed100   EQU   26h
currentSpeed   EQU   27h
temp      EQU   28h
mainTemp   EQU   29h

; Internal EEPROM
eepTID      EQU   01h   ; address of TID message number
eepSpeed   EQU   00h   ; address of maximum speed value


; Configuration
   list p=16f84,f=inhx8m
   Title "tid.asm"

   include p16f84.inc
   
   __CONFIG   _PWRTE_ON & _WDT_OFF & _XT_OSC

; init EEPROM
org H'2100'   ; init EEPROM      ; virtual address of EEPROM
DE   D'0'         ; unused
DE   D'0'         ; message position
DE   D'159'         ; top speed (set to 0 or your own value)


   org   00h
start
; Port B is output
   bsf     STATUS,RP0
   clrf    TRISB
   bcf     STATUS,RP0
   clrf   PORTB
; Port A is output, only iSDAin and RA4 are input
   bsf     STATUS,RP0
   movlw   B'00011000'   ; PortA all output excluding SDAin and RA4 (speed)
   movwf   TRISA
   bcf     STATUS,RP0
   clrf   PORTA
; set counter settings
   bsf     STATUS,RP0
   bsf   OPTION_REG,T0CS   ; Counter on RA4
   bsf   OPTION_REG,PSA   ; use no prescaler
   bcf     STATUS,RP0


; start with TID text 0
   movlw   0x00
   movwf   TIDtextNr

; welcome message
   call   TIDon

   movlw   0x41
   call   addCharTID   ; "A"

   movlw   0x4E
   call   addCharTID   ; "N"

   movlw   0x44
   call   addCharTID   ; "D"

   movlw   0x52
   call   addCharTID   ; "R"

   movlw   0x45
   call   addCharTID   ; "E"

   movlw   0x20
   call   addCharTID   ; " "

   movlw   0x46
   call   addCharTID   ; "F"

   movlw   0x49
   call   addCharTID   ; "I"

   movlw   0x55
   call   addCharTID   ; "U"

   movlw   0x5A
   call   addCharTID   ; "Z"

   movlw   0x41
   call   addCharTID   ; "A"

   call   TIDoff

mainloop
   call   delay_10_sec   ; esperar 10 segundos
   call   TIDon
   ; show speed init message
   movlw   0x43
   call   addCharTID   ; "C"
   movlw   0x4F
   call   addCharTID   ; "O"
   movlw   0x52
   call   addCharTID   ; "R"
   movlw   0x53
   call   addCharTID   ; "S"
   movlw   0x41
   call   addCharTID   ; "A"
   movlw   0x20
   call   addCharTID   ; " "
   movlw   0x54
   call   addCharTID   ; "T"
   movlw   0x44
   call   addCharTID   ; "D"
   movlw   0x20
   call   addCharTID   ; " "
   movlw   0x20
   call   addCharTID   ; " "
   movlw   0x20
   call   addCharTID   ; " "
   movlw   0x20
   call   addCharTID   ; " "
   movlw   0x20
   call   addCharTID   ; " "
   movlw   0x20
   call   addCharTID   ; " "
   movlw   0x20
   call   addCharTID   ; " "
   movlw   0x20
   call   addCharTID   ; " "

   ; show speed 30 times (~1.5 minutes)
   movlw   0x1e
   movwf   mainTemp
mainloop1
   call   showSpeed
   call   delay_1_sec
   call   delay_1_sec
   decfsz   mainTemp
   goto   mainloop1
   ; show top speed for 10 seconds
   call   showTopSpeed
   call   delay_10_sec
   ; show speed 30 times (~1.5 minutes)
   movlw   0x1e
   movwf   mainTemp
   goto   mainloop1
   return   ;adicionado verificar repeticao


;-------------------
; Message displaying
;-------------------

; show top speed
showTopSpeed
   ; read top speed to w
   movlw   eepSpeed   ; address of top speed
   movwf   EEADR
   bsf   STATUS,RP0   ; Bank 1
   bsf   EECON1,RD   ; read
   bcf   STATUS,RP0   ; Bank 1
   movf   EEDATA,0   ; read from EEPROM
   call   convertSpeed   ; make ASCII values
   ; display top speed
   movlw   0x56       ; "V"
   movwf   TID1
   movlw   0x4d      ; "M"
   movwf   TID2
   movlw   0x41      ; "A"
   movwf   TID3
   movlw   0x58      ; "X"
   movwf   TID4
   movlw   D'32'      ; space
   movwf   TID5
   movf   speed100,w   ; 100
   movwf   TID6
   movf   speed10,w   ; 10
   movwf   TID7
   movf   speed1,w   ; 1
   movwf   TID8
   call   sendTIDText   ; display on TID
   return

;----------------
; TID subroutines
;----------------

; TID scrolling
; shift text one char to right and add new char from W
; then send to TID
addCharTID
   movwf   TIDtemp
   movf   TID2,0
   movwf   TID1
   movf   TID3,0
   movwf   TID2
   movf   TID4,0
   movwf   TID3
   movf   TID5,0
   movwf   TID4
   movf   TID6,0
   movwf   TID5
   movf   TID7,0
   movwf   TID6
   movf   TID8,0
   movwf   TID7
   movf   TIDtemp,0
   movwf   TID8
   call   delay_0.2_sec
   call   sendTIDText
   return

; Sends 8 chars to TID
sendTIDText
   call   startTID
   movf   TID1,0
   call   sendTID
   movf   TID2,0
   call   sendTID
   movf   TID3,0
   call   sendTID
   movf   TID4,0
   call   sendTID
   movf   TID5,0
   call   sendTID
   movf   TID6,0
   call   sendTID
   movf   TID7,0
   call   sendTID
   movf   TID8,0
   call   sendTID
   call   stopTID
   return

; Display on; init TID
TIDon
   ; init TID text (all spaces)
   movlw    0x20
   movwf    TID1
   movwf    TID2
   movwf    TID3
   movwf    TID4
   movwf    TID5
   movwf    TID6
   movwf    TID7
   movwf    TID8
   bsf   DIS      ; Display on
   call   wait01s
   ; send empty text 5 times
   movlw   0x05
   movwf   DREG
TIDon1   call   sendTIDText
   call   wait01s
   decfsz   DREG
   goto   TIDon1
   movlw   0x2a
   call   addCharTID   ; "*"
   movlw   0x2a
   call   addCharTID   ; "*"
   movlw   0x2a
   call   addCharTID   ; "*"
   movlw   0x20
   call   addCharTID   ; " "
   return

; Display off
; scroll out text
TIDoff
   movlw   0x20
   call   addCharTID   ; " "
   movlw   0x2a
   call   addCharTID   ; "*"
   movlw   0x2a
   call   addCharTID   ; "*"
   movlw   0x2a
   call   addCharTID   ; "*"
   movlw   0x20
   call   addCharTID   ; " "
   movlw   0x20
   call   addCharTID   ; " "
   movlw   0x20
   call   addCharTID   ; " "
   movlw   0x20
   call   addCharTID   ; " "
   movlw   0x20
   call   addCharTID   ; " "
   movlw   0x20
   call   addCharTID   ; " "
   movlw   0x20
   call   addCharTID   ; " "
   movlw   0x20
   call   addCharTID   ; " "
   bcf   DIS      ; Display off (show date)
   return


; Start condition for TID
startTID
   bcf   MRQ
   bcf   SDA      ; All high
   bcf   SCL   ;
   ; communication begins
   bsf   MRQ   ;
   call   wait1ms      ; MRQ neg. imp.
   bcf   MRQ   ;

   call   wait1ms
   ; I2C-start
   bsf   SDA      ; START:
   call   wait1ms      ; SCL=1, SDA=falling
   bsf   SCL      ;

   ; address
   movlw   0x4a      ; Addres
   call   sendTID

   bsf   MRQ      ; After the addres MRQ=0

   clrw
   call   sendTID      ; All lamp off
   clrw
   call   sendTID
   return

; Stop condition for TID
stopTID
   call   wait1ms
   bcf   MRQ      ; MRQ=1

   bsf   SDA
   call   wait1ms
   bcf   SCL      ; Stop:
   call   wait1ms
   bcf   SDA      ; SCL=1, SDA=raising
   call   wait1ms

   bcf   MRQ
   bcf   SDA      ; End: all high
   bcf   SCL
   return

; Send W to TID
; Calculate the parity
sendTID
   movwf   BREG      ; Send byte (W)
   movwf   I2CBYTE      ; Send byte (W)
   clrf   CREG      ; The number of 1
   movlw   0x07
   movwf   AREG      ; cycle value

send0   rrf   BREG      ; rotate the byte,
   btfsc   STATUS,C   ; and count the number of 1
   incf   CREG      ; (but only the low 7 bit)
   decfsz   AREG,1
   goto   send0

   rlf   I2CBYTE,1   ; Rotate, and behind the parity
   bcf   I2CBYTE,0
   btfss   CREG,0      ; if CREG odd, then clear parity
   bsf   I2CBYTE,0   ;

   ; send byte
   movlw   8      ;
   movwf   CREG      ; Cycle 8x

send1
   bsf   SCL      ; Clock=0
   call   wait025ms

   btfsc   I2CBYTE,7   ; byte <7> bit 0 or 1
   goto   send3
   bsf   SDA      ; 0
   goto   send4
send3
   bcf   SDA      ; 1
send4
   call   wait025ms
   bcf   SCL      ; Clock=1, valid data
   call   wait025ms

   rlf   I2CBYTE,1   ; rotate

   decfsz   CREG,1      ; Cycle
   goto   send1

   bsf   SCL      ; Clock = 0
   call   wait025ms

   ; ACK
   bcf   SDA      ; Output=1
   call   wait025ms
   bcf   SCL      ; Clock=1=> ACK
   
   call   wait025ms   ; ignore ACK

   bsf   SCL      ; Clock=0
   call   wait025ms
   bsf   SDA      ; data=0
   return


;-------------------------
; Speed messuring functions
;-------------------------

; Displays current speed on TID
showSpeed
   call   getSpeed   ; measure speed
   movwf   currentSpeed   ; save speed
   call   checkTopSpeed   ; check if we have a new top speed
   movf   currentSpeed,w   ; restore speed value
   call   convertSpeed   ; make ASCII values
   ; display speed
   movf   speed100,w   ; 100
   movwf   TID1
   movf   speed10,w   ; 10
   movwf   TID2
   movf   speed1,w   ; 1
   movwf   TID3
   movlw   D'32'      ; " "
   movwf   TID4
   movlw   0x4b
   movwf   TID5       ; "K"
   movlw   0x4d
   movwf   TID6      ; "M"
   movlw   0x2f
   movwf   TID7      ; "/"
   movlw   0x48
   movwf   TID8      ; "H"
   call   sendTIDText   ; display on TID
   return

; measures the speed and writes value to w
getSpeed
   clrf   TMR0      ; clear counter
   call   delay_speed   ; wait
   movf   TMR0,w      ; read speed from counter and write to w
   return

; converts speed in w to ASCII values speed1/10/100
convertSpeed
   ; split speed to decimal values
   clrf   speed100   ; clear digit
   decf   speed100, f
convertSpeed100
   incf   speed100, f
   movwf   temp      ; subtract 100
   movlw   D'100'      ; subtract 100
   subwf   temp,w      ; subtract 100
   btfsc   STATUS, C   ; overflow?
   goto   convertSpeed100   ; if no, once more
   addlw   D'100'      ; get state before last subtraction
   clrf   speed10      ; clear digit
   decf   speed10, f
convertSpeed10
   incf   speed10, f
   movwf   temp      ; subtract 10
   movlw   D'10'      ; subtract 10
   subwf   temp,w      ; subtract 10
   btfsc   STATUS, C   ; overflow?
   goto   convertSpeed10   ; if no, once more
   addlw   D'10'      ; get state before last subtraction
   movwf   speed1      ; digit for 1 is the rest
   ; make ASCII values
   movf   speed100,f   ; test for 0
   btfss   STATUS, Z   ; zero?
   goto   convertSpeed10next   ; if not zero, do not touch speed100 and speed10
   movlw   D'240'      ; if zero, make space
   movwf   speed100   ; set to 240, will become space later
   movf   speed10,f   ; test for 0
   btfss   STATUS, Z   ; zero?
   goto   convertSpeed10next
   movlw   D'240'      ; if zero, make space
   movwf   speed10      ; set to 240, will become space later
convertSpeed10next
   ; int -> ASCII
   movf   speed100,w   ; load to w
   addlw   D'48'      ; make ASCII value
   movwf   speed100
   movf   speed10,w   ; load to w
   addlw   D'48'      ; make ASCII value
   movwf   speed10
   movf   speed1,w   ; load to w
   addlw   D'48'      ; make ASCII value
   movwf   speed1
   return

; check if there is a new top speed
checkTopSpeed
   movwf   temp      ; save speed
   movlw   eepSpeed   ; address of top speed
   movwf   EEADR
   bsf   STATUS,RP0   ; Bank 1
   bsf   EECON1,RD   ; read
   bcf   STATUS,RP0   ; Bank 1
   movf   EEDATA,0   ; read from EEPROM
   subwf   temp,w      ; subtract top speed
   btfss   STATUS, C   ; overflow?
   return         ; if no, return
   ; new top speed, save to EEPROM
   movf   temp,w      ; restore speed
   movwf   EEDATA
   movlw   eepSpeed   ; address of top speed
   movwf   EEADR
   bsf   STATUS,RP0   ; Bank 1
   bcf   INTCON,GIE   ; disable interupts
   bsf   EECON1,WREN   ; write enable
   movlw   0x55
   movwf   EECON2      ; write 55h
   movlw   0xaa
   movwf   EECON2      ; write AAh
   bsf   EECON1,WR   ; begin write
checkTopSpeed_write
   btfsc   EECON1, WR
   goto   checkTopSpeed_write
   bcf   EECON1,WREN   ; write disable
   bsf   INTCON,GIE   ; reenable interupts
   bcf   STATUS,RP0   ; Bank 0
   return

; speed delay time = 32 / (3.6 * 1.80)

; Delay code generated by PiKloops (So 2005-Apr-10 12:34:45)
; Time Delay = 0.202387500s  with  Osc = 4.00000000MHz
delay_speed         ; for 1.791m wheel circumference
   movlw    D'2'
   movwf    CounterC
   movlw    D'7'
   movwf    CounterB
   movlw    D'167'
   movwf    CounterA
delay_0.2023875_sec_loop
   decfsz    CounterA,1
   goto    delay_0.2023875_sec_loop
   decfsz    CounterB,1
   goto    delay_0.2023875_sec_loop
   decfsz    CounterC,1
   goto    delay_0.2023875_sec_loop
   return


;-------------------
; Timing subroutines
;-------------------

; Delay code generated by PiKloops (Mo 2005-Mär-14 20:56:41)
; Time Delay = 0.00025000s  with  Osc = 4.00000000MHz
wait025ms
   movlw    D'83'
   movwf    CounterA
delay_0.00025_sec_loop
   decfsz    CounterA,1
    goto    delay_0.00025_sec_loop
   return

; Delay code generated by PiKloops (Mo 2005-Mär-14 20:55:35)
; Time Delay = 0.00100000s  with  Osc = 4.00000000MHz
wait1ms
   movlw    D'2'
   movwf    CounterB
   movlw    D'75'
   movwf    CounterA
delay_0.001_sec_loop
   decfsz    CounterA,1
    goto    delay_0.001_sec_loop
   decfsz    CounterB,1
    goto    delay_0.001_sec_loop
   return

; Delay code generated by PiKloops (Mo 2005-Mär-14 20:54:18)
; Time Delay = 0.09999500s  with  Osc = 4.00000000MHz
wait01s
   movlw    D'130'
   movwf    CounterB
   movlw    D'220'
   movwf    CounterA
delay_0.1_sec_loop
   decfsz    CounterA,1
    goto    delay_0.1_sec_loop
   decfsz    CounterB,1
    goto    delay_0.1_sec_loop
   return

; Delay code generated by PiKloops (Sa 2005-Mär-19 14:17:32)
; Time Delay = 0.19999300s  with  Osc = 4.00000000MHz
delay_0.2_sec
   movlw    D'2'
   movwf    CounterC
   movlw    D'5'
   movwf    CounterB
   movlw    D'183'
   movwf    CounterA
delay_0.2_sec_loop
   decfsz    CounterA,1
    goto    delay_0.2_sec_loop
   decfsz    CounterB,1
    goto    delay_0.2_sec_loop
   decfsz    CounterC,1
    goto    delay_0.2_sec_loop
   return

; Delay code generated by PiKloops (Mo 2005-Feb-28 20:42:10)
; Time Delay = 0.99999800s  with  Osc = 4.00000000MHz
delay_1_sec
   movlw    D'6'
   movwf    CounterC
   movlw    D'24'
   movwf    CounterB
   movlw    D'168'
   movwf    CounterA
delay_1_sec_loop
   decfsz    CounterA,1
   goto    delay_1_sec_loop
   decfsz    CounterB,1
   goto    delay_1_sec_loop
   decfsz    CounterC,1
   goto    delay_1_sec_loop
   return

; Delay code generated by PiKloops (Mo 2005-Mär-14 21:15:22)
; Time Delay = 9.99999800s  with  Osc = 4.00000000MHz
delay_10_sec
   movlw    D'51'
   movwf    CounterC
   movlw    D'237'
   movwf    CounterB
   movlw    D'173'
   movwf    CounterA
delay_10_sec_loop
   decfsz    CounterA,1
   goto    delay_10_sec_loop
   decfsz    CounterB,1
   goto    delay_10_sec_loop
   decfsz    CounterC,1
   goto    delay_10_sec_loop
   return

; Delay code generated by PiKloops (Mo 2005-Apr-11 13:45:23)
; Time Delay = 60.00000000s  with  Osc = 4.00000000MHz
delay_60_sec
   movlw    D'2'
   movwf    CounterD
   movlw    D'51'
   movwf    CounterC
   movlw    D'146'
   movwf    CounterB
   movlw    D'19'
   movwf    CounterA
delay_60_sec_loop
   decfsz    CounterA,1
   goto    delay_60_sec_loop
   decfsz    CounterB,1
   goto    delay_60_sec_loop
   decfsz    CounterC,1
   goto    delay_60_sec_loop
   decfsz    CounterD,1
   goto    delay_60_sec_loop
   return

end

avatar
andref
NOVATO
NOVATO

DESCRIÇÃO: : Técnico em Eletrônica e informática
TEMPO DE EXPERIÊNCIA : 3 anos
Sexo : Masculino
Número de Mensagens : 2
Idade : 25
Cidade/Estado: : Lisboa
Data de inscrição : 18/02/2015

Voltar ao Topo Ir em baixo

Re: Adicionar botão a PIC16F84

Mensagem por nagkiller em Sab 21 Fev 2015, 22:16

Pode adaptar esta função em seu código:

[Você precisa estar registrado e conectado para ver este link.]

Flw...

_________________
No mundo só existem 10 tipos de pessoas: as que conhecem binário e as que não conhecem!!!
avatar
nagkiller
Moderador do fórum
Moderador do fórum

DESCRIÇÃO: : Técnico em Eletrônica e informática
TEMPO DE EXPERIÊNCIA : Desde 1990
Sexo : Masculino
Número de Mensagens : 1796
Idade : 38
Cidade/Estado: : Garça - São Paulo
Humor : Depende
Data de inscrição : 23/11/2011

Voltar ao Topo Ir em baixo

Re: Adicionar botão a PIC16F84

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Voltar ao Topo


 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum