Ir ao conteúdo
  • Cadastre-se

PIC calculo de delay em pic 877a


Posts recomendados

desculpa a demora, tirei a parte dos butões pra ficar menor o cidigo

<

    
    list    p=16f877a
    list    n=0
    include
    __config _cp_off & _wdt_off & _boden_off & _pwrte_on & _xt_osc & _lvp_off & _cpd_off & _debug_off
    errorlevel -302
    #define bank0    bcf    status,rp0    ;volta para banco 0
    #define bank1    bsf status,rp0      ;seleciona banco 1
    cblock 0x20
load
load2
flags 
cycles
countnum
countai
countjq
countrz
countsp
rall1     

    endc
dcounter1 equ 0x0c


 #define bt_enter            portd,0 
 #define bt_back             portd,1 
 #define bt_space           portd,2
 #define bt_numero        portd,3 
 #define bt_ai                   portd,4
 #define bt_jq                   portd,5 
 #define bt_rz                   portd,6

;*************************************

     org 0x00             ;this sets up the ports  
      goto inicio
     org 0x04
     retfie
;***********************
tablent  
             addwf 02h,1
             retlw b'00000001'  ;     enter
             retlw b'00000001' 
             retlw b'00000001' 
             retlw b'00000001' 
             retlw b'00000001' 
             retlw b'00000000' 
;***********************
tablesp
             addwf 02h,1      ;add w to program counter    
             retlw b'00000000'  ;         space
             retlw b'00000000' 
             retlw b'00000000' 
             retlw b'00000000' 
             retlw b'00000000' 
             retlw b'00000000' 

;***********************
tablenum ; numeros
             addwf 02h,1      ;add w to program counter    
             retlw 3eh  ;         ;0
             retlw 41h 
             retlw 41h
             retlw 41h
             retlw 3eh
             retlw b'00000000' 
             retlw 00h           ;1
             retlw 10h
             retlw 20h
             retlw 7fh 
             retlw 00h
             retlw b'00000000' 
           retlw 27h           ;2
             retlw 49h
             retlw 49h
             retlw 49h
             retlw 31h
             retlw b'00000000' 
             retlw 22h           ;3
             retlw 41h
             retlw 49h 
             retlw 49h
             retlw 36h
             retlw b'00000000' 
             retlw 0ch           ;4
             retlw 14h
             retlw 24h
             retlw 7fh
             retlw 04h
             retlw b'00000000' 
             retlw 7ah           ;5
             retlw 49h
             retlw 49h
             retlw 49h
             retlw 46h
             retlw b'00000000' 
             retlw 3eh           ;6
             retlw 49h
             retlw 49h 
             retlw 49h 
             retlw 26h
             retlw b'00000000' 
             retlw 40h           ;7
             retlw 47h
             retlw 48h
             retlw 50h
             retlw 60h
             retlw b'00000000' 
             retlw 36h            ;8
             retlw 49h
             retlw 49h
             retlw 49h
             retlw 36h
             retlw b'00000000' 
             retlw 32h            ;9
             retlw 49h
             retlw 49h
             retlw 49h 
             retlw 3eh
             retlw b'00000000'   

             retlw b'00001000'  ; traço    
             retlw b'00001000' 
             retlw b'00001000' 
             retlw b'00001000' 
             retlw b'00001000' 
             retlw b'00000000' 

              retlw b'00000000'  ;parentese        
             retlw b'00000000' 
             retlw b'00111110' 
             retlw b'01000001' 
             retlw b'00000000' 
             retlw b'00000000' 

             retlw b'00000000'  ;parentese        
             retlw b'01000001' 
             retlw b'00111110' 
             retlw b'00000000' 
             retlw b'00000000' 
             retlw b'00000000' 

             retlw b'00000000'  ;barra       
             retlw b'00000001' 
             retlw b'00000100' 
             retlw b'00010000' 
             retlw b'01000000' 
             retlw b'00000000' 

             retlw b'00000000'  ;barra       
             retlw b'01000000' 
             retlw b'00010000' 
             retlw b'00000100' 
             retlw b'00000001' 
             retlw b'00000000' 

             retlw b'00000000'  ; exclamação      
             retlw b'00000000' 
             retlw b'01111101' 
             retlw b'00000000' 
             retlw b'00000000' 
             retlw b'00000000' 

;****************************************
tableai 
             addwf 02h,1      ;add w to program counter    
             retlw b'00111111'  ;a        
             retlw b'01001000' 
             retlw b'01001000' 
             retlw b'01001000' 
             retlw b'00111111' 
             retlw b'00000000' 

             retlw b'01111111'  ;  b      
             retlw b'01001001' 
             retlw b'01001001' 
             retlw b'01001001' 
             retlw b'00110110' 
             retlw b'00000000' 

             retlw b'00111110'  ;  c    
             retlw b'01000001' 
             retlw b'01000001' 
             retlw b'01000001' 
             retlw b'00100010' 
             retlw b'00000000' 

             retlw b'01111111'  ;  d    
             retlw b'01000001' 
             retlw b'01000001' 
             retlw b'01000001' 
             retlw b'00111110' 
             retlw b'00000000' 

             retlw 7fh ;e
             retlw 49h
             retlw 49h
             retlw 49h
             retlw 41h
             retlw b'00000000' 

             retlw b'01111111'  ; f     
             retlw b'01001000' 
             retlw b'01001000' 
             retlw b'01001000' 
             retlw b'01000000' 
             retlw b'00000000' 

             retlw b'00111110'  ; g     
             retlw b'01000001' 
             retlw b'01000001' 
             retlw b'01000101' 
             retlw b'00100110' 
             retlw b'00000000' 


             retlw b'01111111'  ; h   
             retlw b'00001000' 
             retlw b'00001000' 
             retlw b'00001000' 
             retlw b'01111111' 
             retlw b'00000000' ; 

             retlw b'00000000'  ; i     
             retlw b'01000001' 
             retlw b'01111111' 
             retlw b'01000001' 
             retlw b'00000000' 
             retlw b'00000000'  
;*********************************
tablejq
             addwf 02h,1             ;             add w to program counter
             retlw b'00000110' ; j     
             retlw b'00000001' 
             retlw b'00000001'
             retlw b'00000001'
             retlw b'01111110' 
             retlw b'00000000' 

             retlw b'01111111' ; k   
             retlw b'00001000' 
             retlw b'00010100'
             retlw b'00100010'
             retlw b'00000001' 
             retlw b'00000000' 

             retlw b'01111111' ;l     
             retlw b'00000001' 
             retlw b'00000001'
             retlw b'00000001'
             retlw b'00000001' 
             retlw b'00000000' 

             retlw b'00111100' ;ç    
             retlw b'01000010' 
             retlw b'01000011'
             retlw b'01000010'
             retlw b'00100100' 
             retlw b'00000000' 

             retlw b'01111111'; m
             retlw b'00100000'
             retlw b'00011110'
             retlw b'00100000'
             retlw b'01111111'
             retlw b'00000000' 

             retlw b'01111111' ;n    
             retlw b'00100000' 
             retlw b'00011000'
             retlw b'00000100'
             retlw b'01111111' 
             retlw b'00000000' 

             retlw 3eh ;o
             retlw 41h
             retlw 41h
             retlw 41h
             retlw 3eh
             retlw b'00000000' 

             retlw b'01111111' 😜  
             retlw b'01001000' 
             retlw b'01001000'
             retlw b'01001000'
             retlw b'00110000' 
             retlw b'00000000' 

             retlw b'00111110' ;q  
             retlw b'01000001' 
             retlw b'01000101'
             retlw b'01000011'
             retlw b'00111111' 
             retlw b'00000000' 
;**************************************
tablerz
             addwf 02h,1             ;          add w to program counter
             retlw b'01111111' ;r  
             retlw b'01001000' 
             retlw b'01001100'
             retlw b'01001010'
             retlw b'00110001' 
             retlw b'00000000' 

             retlw 32h ;s
             retlw 49h
             retlw 49h
             retlw 49h
             retlw 26h
             retlw b'00000000' 

             retlw 40h ;t
             retlw 40h
             retlw 7fh
             retlw 40h
             retlw 40h
             retlw b'00000000' 

             retlw b'01111110' ;u  
             retlw b'00000001' 
             retlw b'00000001'
             retlw b'00000001'
             retlw b'01111110' 
             retlw b'00000000' 

             retlw b'01111000' ;v  
             retlw b'00000110' 
             retlw b'00000001'
             retlw b'00000110'
             retlw b'01111000' 
             retlw b'00000000' 

             retlw b'01111110' ; w
             retlw b'00000001' 
             retlw b'00011111'
             retlw b'00000001'
             retlw b'01111110' 
             retlw b'00000000' 

             retlw b'01000001' ; x 
             retlw b'00100010' 
             retlw b'00011100'
             retlw b'00100010'
             retlw b'01000001' 
             retlw b'00000000' 

             retlw b'01100000' ;y  
             retlw b'00010000' 
             retlw b'00001111'
             retlw b'00010000'
             retlw b'01100000' 
             retlw b'00000000' 

             retlw b'01000011' ;z 
             retlw b'01000101' 
             retlw b'01001001'
             retlw b'01010001'
             retlw b'01100001' 
             retlw b'00000000'  
;****************************************

ghost      ; auqi se usar taé 8 caractere fica bom 
                      bcf porta,0           
                      bsf porta,1
            nop
            bcf porta,1
;************************
              movf 2ch,0 
              call dela
              movf 2dh,0 
              call dela
              movf 2eh,0
              call dela
              movf 2fh,0
              call dela
              movf 30h,0 
              call dela
           
              movf 31h,0
              call dela
              movf 32h,0
              call dela
              movf 33h,0
              call dela
              movf 34h,0 
              call dela
              movf 35h,0 
              call dela
              movf 36h,0
              call dela

              movf 37h,0
              call dela
              movf 38h,0
              call dela
              movf 39h,0
              call dela
              movf 3ah,0 
              call dela
              movf 3bh,0
              call dela
              movf 3ch,0
              call dela
              movf 3dh,0
              call dela

              movf 3eh,0 
              call dela        
              movf 3fh,0  
              call dela
              movf 40h,0
              call dela
              movf 41h,0
              call dela
              movf 42h,0
              call dela
              movf 43h,0 
              call dela

              movf 44h,0 
              call dela
              movf 45h,0
              call dela
              movf 46h,0
              call dela
              movf 47h,0
              call dela
              movf 48h,0 
              call dela
              movf 49h,0  
              call dela
    
              movf 4ah,0
              call dela
              movf 4bh,0
              call dela
              movf 4ch,0
              call dela
              movf 4dh,0
              call dela     
              movf 4eh,0  
              call dela
              movf 4fh,0
              call dela
          return
              movf 50h,0
              call dela
              movf 51h,0
              call dela
              movf 52h,0 
              call dela
              movf 53h,0 
              call dela
              movf 54h,0
              call dela
              movf 55h,0
              call dela

              movf 56h,0
              call dela 
              movf 57h,0 
              call dela
              movf 58h,0  
              call dela
              movf 59h,0
              call dela
              movf 5ah,0
              call dela
              movf 5bh,0
              call dela
        
              movf 5ch,0
              call dela
              movf 5dh,0  
              call dela
              movf 5eh,0
              call dela
              movf 5fh,0
              call dela
              movf 60h,0
              call dela
              movf 61h,0 
              call dela
  
            
              movf 62h,0  
              call dela
              movf 63h,0
              call dela
              movf 64h,0
              call dela
              movf 65h,0
              call dela
              movf 66h,0 
              call dela
              movf 67h,0           

              return    
;************************
        
dela
        movwf portb
     movlw 0x30        
    movwf dcounter1       
loop    
    decfsz dcounter1, 1
    goto loop
            bsf porta,0
            bsf porta,1
            bcf porta,1
            return


;***************************  
inicio

    bank1
    movlw b'11111100'
    movwf trisa ; seta porta como entrada
    movlw b'00000000' 
    movwf trisb ; seta portb como saida
    movlw b'00001111'
    movwf trisc ; seta portc como entrada
    movlw b'11111111'
    movwf trisd ; seta portd como saida/entrada
    movlw b'00000000'
    movwf trise ; seta porte como saida
    movlw b'10000001' ; ps0=1;prescale 1:4;psa= timer0;tose=subida;tocs=clockinternorbpu=0pullupativados
    movwf option_reg ; pull up desabilitados e tmr0 1:256
    movlw b'10000000' ;
    movwf intcon ;interrupção timer0 habilitada
    movlw b'00000110' ;00000110
    movwf adcon1        
    bank0 
    movlw h'7'
       movwf cmcon
        
;*************************************************
       clrf load2
       clrf load
       clrf  cycles 
       clrf countnum
       clrf countsp
       clrf countai
       clrf countjq
       clrf countrz
       clrf rall1
       clrf porta
       clrf portb
       clrf portc
       clrf portd
       clrf porte
       clrf 73h   ;  entra

      goto main


        end


 
 
    >

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Amigo é admirável alguém trabalhar com matriz de leds (ou qualquer coisa menos inútil que um pisca led) em assembly. Me parece bem desafiador mesmo pra alguém com muita experiência o que não me parece ser seu caso. Até mesmo em c puro considero não muito trivial. Hoje em dia já tem muita coisa arduína mastigada mas antigamente o bixo pegava.

Recomendo que consulte alguns tópicos do forum pela busca no forum de matriz hc595 (clique) Numa delas achei isso...

que espero que continue não sendo totalmente inútil 😁. Em algum outro post publiquei até os fontes e tal mas tô com preguiça de procurar

Olha isso também...

muitíssimo menos inútil que minhas publicações 😁

Até senti vontade ressuscitar o tópico do amigo Paulão kk

  • Amei 1
  • Haha 1
Link para o comentário
Compartilhar em outros sites

Em 28/12/2021 às 20:28, dmmartins disse:

ola galera, essa é a parte que mostra na matriz de led 7x 12, acontece que os digitos ficam piscando sem parar, mas se eu usar o return até seis digitos

fica bem melhor, queria usar 24 digitos, mas ta difícil.não sei se é problema de pilha ou delay errado.


 

clubematrizdeled.txt 16 kB · 1 download

 

A grosso modo, você tem de aumentar a velocidade da varredura para 4x mais, só que tem de se preocupar em manter o digito aceso por um tempo um pouco maior senão eles vão parecer bem mais fracos.

 

Outra coisa que pode acontecer é os displays parecerem que estão sempre um pouco acesos.... mas tem como solucionar, desde que você apague o display por alguns microssegundos logo antes de deixar eles acesos por um pouquinho de tempo.

 

Eu pastei com isso também, meu amigo, mesmo em Basic , quando montei uma matriz com 12 displays desses ficava tudo piscando também  e ainda parecia que sempre estavam um pouco acesos, tive de ajustar o Timing de deixar ON e OFF na prática  ..... imagino que no Asm dos Pics deve ser bem mais trabalhoso.

 

 

6 horas atrás, .if disse:

Até senti vontade ressuscitar o tópico do amigo Paulão kk

 

Sempre pode ressuscitar viu !!!! Vou melhorar a qualidade do PDF e aviso aqui.

 

Paulo

Link para o comentário
Compartilhar em outros sites

@dmmartins

 

Infelizmente não posso te ajudar, embora eu goste muito de programar em Asm, mas nunca entendí esse conceito de bancos dos Pics. Se fosse num AVR .......

 

Caso você precise, segue o documento que a @.if solicitou, em resolução bem maior agora :

 

COMO USAR DISPLAYS DE LEDS MULTIPLEXADOS_hr.pdf

 

Paulo

Link para o comentário
Compartilhar em outros sites

3 horas atrás, dmmartins disse:

Pois é, mas alguém tem como me ajudar em asm , preciso acender 12 matriz 7x6

com 9 74hc164n e portb do pic877a

Acredito que seja problema na varredura,pois no pic 628 acontece o mesmoo,

e ele troca de banco altomaticamente . ou não.

A troca de banco não é automática,lembre-se que em ASM voce é o comandante de todo o sistema/hardware.

voce não teria esse projeto rodando no proteus para postar?

Não sei que ponto esta seu projeto,mas em 2012 eu postei um exemplo em ASM/16F628 usando duas matrizes de 7 segmentos.

voce pode dar uma olhando que o código esta bem comentado e usa interrupção no tempo,isso ajuda com menos erros de temporização,comece com dois módulos e vá aumentando e testando,ma ja adianto que conforme o código aumenta,terá que alterar o Program Counter pois tem o limite de páginas no PIC antes de mudar de banco.

 

7seg.rar

Link para o comentário
Compartilhar em outros sites

6 horas atrás, dmmartins disse:

o assunto é matriz de led 12x5 assembly. usar tabela alfanumerica e delay vesez coluna.

SIMULADORFIXO877chw.rar 47 kB · 1 download

Olá.

Qual compilador usou?

Posta o código completo,com botões,o que voce postou esta faltando a referencia ao MAIN.

 

PS:De qualquer forma,tambem fiz usando matriz em ASM em 2012.

È antigo,mal feito e nunca montei um hardware real e usa um 16F628a.

voce estudo o código e adapta,e ele usa a mudança de bancos que falei pois de qualquer forma vai ter que alterar os bancos pelo tamanho do código que postou.

 

leds.rar

Link para o comentário
Compartilhar em outros sites

Olá.

Se for sobre o tópico,é preferível continuarmos aqui para mais pessoas ajudarem.

Fora do tópico não poderia ajudar pois tenho outras tarefas e não teria tempo.

Uma dúvida seria,voce esta usando ASM por qual motivo?

Suas dúvidas estão relacionadas a alguma tarefa de algum curso?

Fora isso não vejo motivo de não utilizar o tutorial postado aqui usando outra linguagem,que no caso seria BASCOM que esta todo comentado no tutorial.

A adaptação para o que voce quer fazer não serial um impedimento.

Link para o comentário
Compartilhar em outros sites

ola vtrx, gosto de assebly mesmo, tenho a placa uno, fiz algumas coisas em delphi7, mas gostaria de ver este tutorial em bascom, Não é curso, é meu hobby mesmo e quero terminar esse projeto, vou postar o codigo que falta para continuar o topico. A respeito do email era pra manter o contato. grato amigo.

<

                            ;80x7 Display 
                       ; projeto dm_led  
                       ; iniciado em 23/10/2021
                       ; desenvolvido por Dino Martins
    list    p=16F877A
    list    n=0
    include <P16F877A.INC>
    __CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _LVP_OFF & _CPD_OFF & _DEBUG_OFF
    ERRORLEVEL -302
    #DEFINE bank0    bcf    STATUS,RP0    ;volta para banco 0
    #DEFINE bank1    bsf STATUS,RP0      ;seleciona banco 1
    cblock 0x20
load
load2
flags 
cycles
countnum
countai
countjq
countrz
countsp
rall1     
temp1
temp2
    ENDC
DCounter1 EQU 0X0C


 #DEFINE bt_enter            portd,0 
 #DEFINE bt_back             portd,1 
 #DEFINE bt_space           portd,2
 #DEFINE bt_numero        portd,3 
 #DEFINE bt_ai                   portd,4
 #DEFINE bt_jq                   portd,5 
 #DEFINE bt_rz                   portd,6

;*************************************
     ORG 0x00             ;This sets up
      GOTO INICIO
     ORG 0X04
     RETFIE
  ;***********************
tablent  
             ADDWF 02h,1
             RETLW b'00000001'  ;     enter
             RETLW b'00000001' 
             RETLW b'00000001' 
             RETLW b'00000001' 
             RETLW b'00000001' 
             RETLW b'00000000' 
;***********************
Tablesp
             ADDWF 02h,1      ;Add W to Program Counter    
             RETLW b'00000000'  ;         space
             RETLW b'00000000' 
             RETLW b'00000000' 
             RETLW b'00000000' 
             RETLW b'00000000' 
             RETLW b'00000000' 

;***********************
Tablenum ; numeros
             ADDWF 02h,1      ;Add W to Program Counter    
             RETLW 3Eh  ;         ;0
             RETLW 41h 
             RETLW 41h
             RETLW 41h
             RETLW 3Eh
             RETLW b'00000000' 
             RETLW 00h           ;1
             RETLW 10h
             RETLW 20h
             RETLW 7Fh 
             RETLW 00h
             RETLW b'00000000' 
           RETLW 27h           ;2
             RETLW 49h
             RETLW 49h
             RETLW 49h
             RETLW 31h
             RETLW b'00000000' 
             RETLW 22h           ;3
             RETLW 41h
             RETLW 49h 
             RETLW 49h
             RETLW 36h
             RETLW b'00000000' 
             RETLW 0Ch           ;4
             RETLW 14h
             RETLW 24h
             RETLW 7Fh
             RETLW 04h
             RETLW b'00000000' 
             RETLW 7Ah           ;5
             RETLW 49h
             RETLW 49h
             RETLW 49h
             RETLW 46h
             RETLW b'00000000' 
             RETLW 3Eh           ;6
             RETLW 49h
             RETLW 49h 
             RETLW 49h 
             RETLW 26h
             RETLW b'00000000' 
             RETLW 40h           ;7
             RETLW 47h
             RETLW 48h
             RETLW 50h
             RETLW 60h
             RETLW b'00000000' 
             RETLW 36h            ;8
             RETLW 49h
             RETLW 49h
             RETLW 49h
             RETLW 36h
             RETLW b'00000000' 
             RETLW 32h            ;9
             RETLW 49h
             RETLW 49h
             RETLW 49h 
             RETLW 3Eh
             RETLW b'00000000'   

             RETLW b'00001000'  ; traço    
             RETLW b'00001000' 
             RETLW b'00001000' 
             RETLW b'00001000' 
             RETLW b'00001000' 
             RETLW b'00000000' 

              RETLW b'00000000'  ;parentese        
             RETLW b'00000000' 
             RETLW b'00111110' 
             RETLW b'01000001' 
             RETLW b'00000000' 
             RETLW b'00000000' 

             RETLW b'00000000'  ;parentese        
             RETLW b'01000001' 
             RETLW b'00111110' 
             RETLW b'00000000' 
             RETLW b'00000000' 
             RETLW b'00000000' 

             RETLW b'00000000'  ;barra       
             RETLW b'00000001' 
             RETLW b'00000100' 
             RETLW b'00010000' 
             RETLW b'01000000' 
             RETLW b'00000000' 

             RETLW b'00000000'  ;barra       
             RETLW b'01000000' 
             RETLW b'00010000' 
             RETLW b'00000100' 
             RETLW b'00000001' 
             RETLW b'00000000' 

             RETLW b'00000000'  ; exclamação      
             RETLW b'00000000' 
             RETLW b'01111101' 
             RETLW b'00000000' 
             RETLW b'00000000' 
             RETLW b'00000000' 

;****************************************
Tableai 
             ADDWF 02h,1      ;Add W to Program Counter    
             RETLW b'00111111'  ;A        
             RETLW b'01001000' 
             RETLW b'01001000' 
             RETLW b'01001000' 
             RETLW b'00111111' 
             RETLW b'00000000' 

             RETLW b'01111111'  ;  B      
             RETLW b'01001001' 
             RETLW b'01001001' 
             RETLW b'01001001' 
             RETLW b'00110110' 
             RETLW b'00000000' 

             RETLW b'00111110'  ;  C    
             RETLW b'01000001' 
             RETLW b'01000001' 
             RETLW b'01000001' 
             RETLW b'00100010' 
             RETLW b'00000000' 

             RETLW b'01111111'  ;  D    
             RETLW b'01000001' 
             RETLW b'01000001' 
             RETLW b'01000001' 
             RETLW b'00111110' 
             RETLW b'00000000' 

             RETLW 7Fh ;E
             RETLW 49h
             RETLW 49h
             RETLW 49h
             RETLW 41h
             RETLW b'00000000' 

             RETLW b'01111111'  ; F     
             RETLW b'01001000' 
             RETLW b'01001000' 
             RETLW b'01001000' 
             RETLW b'01000000' 
             RETLW b'00000000' 

             RETLW b'00111110'  ; G     
             RETLW b'01000001' 
             RETLW b'01000001' 
             RETLW b'01000101' 
             RETLW b'00100110' 
             RETLW b'00000000' 

             RETLW b'01111111'  ; H   
             RETLW b'00001000' 
             RETLW b'00001000' 
             RETLW b'00001000' 
             RETLW b'01111111' 
             RETLW b'00000000' ; 

             RETLW b'00000000'  ; I     
             RETLW b'01000001' 
             RETLW b'01111111' 
             RETLW b'01000001' 
             RETLW b'00000000' 
             RETLW b'00000000'  
;*********************************
tablejq
             ADDWF 02h,1             ;             Add W to Program Counter
             RETLW b'00000110' ; J     
             RETLW b'00000001' 
             RETLW b'00000001'
             RETLW b'00000001'
             RETLW b'01111110' 
             RETLW b'00000000' 

             RETLW b'01111111' ; K   
             RETLW b'00001000' 
             RETLW b'00010100'
             RETLW b'00100010'
             RETLW b'00000001' 
             RETLW b'00000000' 

             RETLW b'01111111' ;L     
             RETLW b'00000001' 
             RETLW b'00000001'
             RETLW b'00000001'
             RETLW b'00000001' 
             RETLW b'00000000' 

             RETLW b'00111100' ;Ç    
             RETLW b'01000010' 
             RETLW b'01000011'
             RETLW b'01000010'
             RETLW b'00100100' 
             RETLW b'00000000' 

             RETLW b'01111111'; M
             RETLW b'00100000'
             RETLW b'00011110'
             RETLW b'00100000'
             RETLW b'01111111'
             RETLW b'00000000' 

             RETLW b'01111111' ;N    
             RETLW b'00100000' 
             RETLW b'00011000'
             RETLW b'00000100'
             RETLW b'01111111' 
             RETLW b'00000000' 

             RETLW 3Eh ;O
             RETLW 41h
             RETLW 41h
             RETLW 41h
             RETLW 3Eh
             RETLW b'00000000' 

             RETLW b'01111111' 😜  
             RETLW b'01001000' 
             RETLW b'01001000'
             RETLW b'01001000'
             RETLW b'00110000' 
             RETLW b'00000000' 

             RETLW b'00111110' ;Q  
             RETLW b'01000001' 
             RETLW b'01000101'
             RETLW b'01000011'
             RETLW b'00111111' 
             RETLW b'00000000' 
;**************************************
tablerz
             ADDWF 02h,1             ;          Add W to Program Counter
             RETLW b'01111111' ;R  
             RETLW b'01001000' 
             RETLW b'01001100'
             RETLW b'01001010'
             RETLW b'00110001' 
             RETLW b'00000000' 

             RETLW 32h ;S
             RETLW 49h
             RETLW 49h
             RETLW 49h
             RETLW 26h
             RETLW b'00000000' 

             RETLW 40h ;T
             RETLW 40h
             RETLW 7Fh
             RETLW 40h
             RETLW 40h
             RETLW b'00000000' 

             RETLW b'01111110' ;U  
             RETLW b'00000001' 
             RETLW b'00000001'
             RETLW b'00000001'
             RETLW b'01111110' 
             RETLW b'00000000' 

             RETLW b'01111000' ;v  
             RETLW b'00000110' 
             RETLW b'00000001'
             RETLW b'00000110'
             RETLW b'01111000' 
             RETLW b'00000000' 

             RETLW b'01111110' ; W
             RETLW b'00000001' 
             RETLW b'00011111'
             RETLW b'00000001'
             RETLW b'01111110' 
             RETLW b'00000000' 

             RETLW b'01000001' ; X 
             RETLW b'00100010' 
             RETLW b'00011100'
             RETLW b'00100010'
             RETLW b'01000001' 
             RETLW b'00000000' 

             RETLW b'01100000' ;Y  
             RETLW b'00010000' 
             RETLW b'00001111'
             RETLW b'00010000'
             RETLW b'01100000' 
             RETLW b'00000000' 

             RETLW b'01000011' ;Z 
             RETLW b'01000101' 
             RETLW b'01001001'
             RETLW b'01010001'
             RETLW b'01100001' 
             RETLW b'00000000'  
;****************************************

;*************************
GHOST      
                      BCF PORTA,0           
                      BSF PORTA,1
            NOP
            BCF PORTA,1
;************************
              MOVF 2ch,0    ;01
              CALL DelA
              MOVF 2dh,0 
              CALL DelA
              MOVF 2eh,0
              CALL DelA
              MOVF 2fh,0
              CALL DelA
              MOVF 30h,0 
              CALL DelA
           
              MOVF 31h,0  ;02
              CALL DelA
              MOVF 32h,0
              CALL DelA
              MOVF 33h,0
              CALL DelA
              MOVF 34h,0 
              CALL DelA
              MOVF 35h,0 
              CALL DelA
              MOVF 36h,0
              CALL DelA

              MOVF 37h,0   ;03
              CALL DelA
              MOVF 38h,0
              CALL DelA
              MOVF 39h,0
              CALL DelA
              MOVF 3ah,0 
              CALL DelA
              MOVF 3bh,0
              CALL DelA
              MOVF 3ch,0
              CALL DelA
              MOVF 3dh,0
              CALL DelA

              MOVF 3eh,0  ;04
              CALL DelA        
              MOVF 3fh,0  
              CALL DelA
              MOVF 40h,0
              CALL DelA
              MOVF 41h,0
              CALL DelA
              MOVF 42h,0
              CALL DelA
              MOVF 43h,0 
              CALL DelA

              MOVF 44h,0 ;05
              CALL DelA
              MOVF 45h,0
              CALL DelA
              MOVF 46h,0
              CALL DelA
              MOVF 47h,0
              CALL DelA
              MOVF 48h,0 
              CALL DelA
              MOVF 49h,0  
              CALL DelA
             return ;até fica regular
              MOVF 4ah,0  ;06
              CALL DelA
              MOVF 4bh,0
              CALL DelA
              MOVF 4ch,0
              CALL DelA
              MOVF 4dh,0
              CALL DelA     
              MOVF 4eh,0  
              CALL DelA
              MOVF 4fh,0
              CALL DelA

              MOVF 50h,0   ;07
              CALL DelA
              MOVF 51h,0
              CALL DelA
              MOVF 52h,0 
              CALL Dela
              MOVF 53h,0 
              CALL Dela
              MOVF 54h,0
              CALL Dela
              MOVF 55h,0
              CALL Dela
              

              MOVF 56h,0  ;08
              CALL Dela 
              MOVF 57h,0 
              CALL Dela
              MOVF 58h,0  
              CALL Dela
              MOVF 59h,0
              CALL Dela
              MOVF 5ah,0
              CALL Dela
              MOVF 5bh,0
              CALL Dela
                
              MOVF 5ch,0   ;09
              CALL DelA
              MOVF 5dh,0  
              CALL DelA
              MOVF 5eh,0
              CALL DelA
              MOVF 5fh,0
              CALL DelA
              MOVF 60h,0
              CALL DelA
              MOVF 61h,0 
              CALL DelA
              
            
              MOVF 62h,0  ;10
              CALL DelA
              MOVF 63h,0
              CALL DelA
              MOVF 64h,0
              CALL DelA
              MOVF 65h,0
              CALL DelA
              MOVF 66h,0 
              CALL DelA
              MOVF 67h,0           
              CALL DelA

              MOVF 68h,0  ;10
              CALL DelA
              MOVF 69h,0
              CALL DelA
              MOVF 6ah,0
              CALL DelA
              MOVF 6bh,0
              CALL DelA
              MOVF 6ch,0 
              CALL DelA
              MOVF 6dh,0
              CALL DelA
           
              MOVF 6eh,0  ;10
              CALL DelA
              MOVF 6fh,0
              CALL DelA
              MOVF 70h,0
              CALL DelA
              MOVF 71h,0
              CALL DelA
              MOVF 72h,0 
              CALL DelA
              MOVF 73h,0           
              CALL DelA
              RETURN    
;*****************************
DelA
        MOVWF PORTB
     MOVLW .16       
    MOVWF DCounter1       
LOOP    
    DECFSZ DCounter1, 1
    GOTO LOOP
            BSF PORTA,0
            BSF PORTA,1
            BCF PORTA,1
            RETURN
;*****************************
F_entra  
          MOVLW 06
          MOVWF cycles       ;5 cycles of Loading
          MOVFW load          ;11H
          MOVWF fsr    ;Move start of Ghost locations to FSR
FillGh2ent
          MOVF 73h,0      ; 37H Move table pointer to W
          CALL Tablent
          MOVWF 00        ;(move into what FSR looks at)
          INCF FSR,1      ;Increment the FSR to look at next file
          INCF 73h,1
          DECFSZ  cycles ,1
          GOTO FillGh2ent
          RETURN
;*****************SPACE*********************
F_SPACE  
          MOVLW 06
          MOVWF cycles       ;5 cycles of Loading
          MOVFW load          ;11H
          MOVWF fsr    ;Move start of Ghost locations to FSR
FillGh2SP 
          MOVF countSP,0      ; 37H Move table pointer to W
          CALL Tablesp
          MOVWF 00        ;(move into what FSR looks at)
          INCF FSR,1      ;Increment the FSR to look at next file
          INCF countSP,1
          DECFSZ  cycles ,1
          GOTO FillGh2SP
          RETURN
;*********** NUMEROS **********************
F_numero 
          MOVLW 06
          MOVWF cycles       ;5 cycles of Loading
          MOVFW load          ;11H
          MOVWF fsr    ;Move start of Ghost locations to FSR
FillGh2numm 
          MOVF countnum,0 ; 
          CALL Tablenum ; numeros
          MOVWF 00        ;(move into what FSR looks at)
          INCF FSR,1      ;Increment the FSR to look at next file
          INCF countnum,1
          DECFSZ  cycles ,1
          GOTO FillGh2numm
          RETURN
;*****************************
F_x   ;back
          MOVLW 07
          MOVWF cycles       ;5 cycles of Loading
          MOVFW load2          ;11H
          MOVWF fsr    ;Move start of Ghost locations to FSR
FillGh12 
       CLRF INDF     ;apagar o registrador INDF  
       DECF FSR,1     ;incrementar o ponteiro
          DECFSZ  cycles ,1
          GOTO FillGh12
          INCF FSR,1
          RETURN
;*****************************
F_ai  
          MOVLW 06
          MOVWF cycles       ;5 cycles of Loading
          MOVFW load          ;11H
          MOVWF fsr    ;Move start of Ghost locations to FSR
FillGhlaii
          MOVF countai,0      ; 37H Move table pointer to W
          CALL Tableai
          MOVWF 00        ;(move into what FSR looks at)
          INCF FSR,1      ;Increment the FSR to look at next file
          INCF countai,1
          DECFSZ  cycles ,1
          GOTO FillGhlaii
          RETURN
;**********************************
F_jq  
          MOVLW 06
          MOVWF cycles       ;5 cycles of Loading
          MOVFW load          ;11H
          MOVWF fsr    ;Move start of Ghost locations to FSR
FillGhljqq
          MOVF countjq,0      ; 37H Move table pointer to W
          CALL Tablejq
          MOVWF 00        ;(move into what FSR looks at)
          INCF FSR,1      ;Increment the FSR to look at next file
          INCF countjq,1
          DECFSZ  cycles ,1
          GOTO FillGhljqq
          RETURN
;*****************************
F_rz
          MOVLW 06
          MOVWF cycles       ;5 cycles of Loading
          MOVFW load          ;11H
          MOVWF fsr    ;Move start of Ghost locations to FSR
FillGhlrzz
          MOVF countrz,0      ; 37H Move table pointer to W
          CALL Tablerz
          MOVWF 00        ;(move into what FSR looks at)
          INCF FSR,1      ;Increment the FSR to look at next file
          INCF countrz,1
          DECFSZ  cycles ,1
          GOTO FillGhlrzz
          RETURN

;*****************************
Main      

              MOVLW 00
              MOVWF countnum
               movlw   2cH
               movwf   load
               call F_numero 
Main1  
        bcf portd,0 ;enter
        bcf portd,1 ;backspace
        bcf portd,2 ;space
        bcf portd,3 ;numero
        bcf portd,4 ;ai
        bcf portd,5 ;jq
        bcf portd,6 ;rz
        bcf portd,7 ;space
      
;********************************
Main2      
               CALL  RESET1          
               CALL  GHOST

              btfss  bt_numero    
              goto   numeros         ;zero
               btfss  bt_ai
               goto   L_AI  
               btfss  bt_jq
               goto   L_JQ 
              btfss  bt_rz
               goto   L_RZ
               btfss  bt_space
               goto space1   
               btfss  bt_enter
               goto   entra
               btfss bt_back
               goto back
               goto main1
;******flags**********
flags_1
       
        bsf portd,0 ;enter
        bsf portd,1 ;back
        bsf porta,2 ;space
        bsf portd,3 ;numero
        bsf portd,4 ;ai
        bsf portd,5 ;jq
        bsf portd,6 ;rz
      
        return
;********************
entra
        btfsc portd,0 
        goto Main2
        bsf portd,0
        clrf countai
        clrf countjq
        clrf countrz
        clrf countnum
        clrf countsp
        movf 73h,0          
        XORLW 36h       
        btfss 03,2   
        goto passent
        goto main2
passent
        clrf 73h
        movf fsr,0
        movwf load
        call flags_1
        call f_entra
        clrf countnum
ent
        btfsc portd,0 ; testa se 0
        goto main1
        goto ent      
;**************
back ;volta
        btfsc portd,1 
        goto Main2
        bsf portd,1
        clrf countai
        clrf countjq
        clrf countrz
        clrf countnum
      movf fsr,0          
        XORLW 2ch        
       btfss 03,2   
      goto pass
        goto main2
pass
        clrf load2
        movf fsr,0
        movwf load2
        call flags_1
        call F_x 
        movf fsr,0
        movwf load 
bk
        btfsc portd,1 ; testa se 0
        goto main2
       goto bk    
;****************
space1 ; espaço
        btfsc portd,2   
        goto Main2
        bsf portd,2
         clrf countai
         clrf countjq
         clrf countrz
         clrf countnum
         clrf countsp
        movf fsr ,0          
        XORLW 3eh  ;fim da tabela       
        btfss 03,2   
        goto passpace
         clrf countsp
         goto main1
passpace
        movf fsr,0
        clrf load
        movwf load
        call flags_1
        call F_space
         nop
       clrf countsp
       movf fsr,0
        clrf load
        movwf load     
        call F_space
        clrf countnum
spe
        btfsc portd,2 ; testa se 0
       goto main1  
       goto spe

;**************
numeros
     btfsc    portd,3   ;pula se zero
         goto    Main2 
         bsf      portd,3   
         movf   countnum,0          
         XORLW 60h        
         BTFSS 03,2         
         goto  fillnum    ; faz o fill
         goto passnum ; jump
fillnum
         call flags_1      ; all flags bsf
         call f_numero  ;call fill
nu
         btfss portd,3 ; testa se 0
         goto nu
         goto main1
passnum
         clrf            countnum
         call flags_1
         call f_numero   
num
         btfsc portd,3 ; testa se 0
         goto main1
         goto num

;******* LETRAS *******
L_AI   
      btfsc     portd,4   ;pula se zero
         goto      Main2    
         bsf         portd,4 
         nop
         clrf countjq
         clrf countrz
         clrf countnum
         movf      countai,0
         XORLW 36H       
         BTFSS 03,2    
         goto fillai
         goto passai
fillai
        call flags_1 ;marca como press
         call f_ai
na
         btfsc portd,4 ; testa se 0
         goto main1
         goto na

passai
         call flags_1
         clrf countai
         call f_ai
nai
         btfsc portd,4
         goto main1
      goto nai
;****************
L_JQ 
      btfsc      portd,5   ;pula se zero
         goto       Main2     
         bsf          portd,5 
         nop
         clrf countai
         clrf countrz
         clrf countnum
         movf       countjq,0
         XORLW 36h       
         BTFSS 03,2    
         goto  filljq
          goto passjq
filljq
         call flags_1
         call f_jq
nj
         btfsc portd,5 ; testa se 0
         goto main1
         goto nj

passjq
         clrf     countjq
         call flags_1
         call f_jq
njq
         btfsc portd,5 ; testa se 0
         goto main1
         goto njq

;**************
L_RZ 
      btfsc       portd,6   ;pula se zero
         goto         Main2     
         bsf           portd,6
         nop
         clrf countjq
         clrf countai
         clrf countnum
         movf countrz,0
         XORLW 36h           
         BTFSS 03,2    
         goto fillrz
         goto passrz
fillrz
         call flags_1
         call f_rz
nr
         btfsc portd,6 ; testa se 0
         goto main1
         goto nr

passrz
         call flags_1
         clrf countrz
         call f_rz
nrz
         btfsc portd,6 ; testa se 0
         goto main1
         goto nrz

;**************
RESET1
             MOVLW 107
             MOVWF RALL1
             BSF PORTA,0
RALL2
         nop
            nop
             DECFSZ RALL1,1
             GOTO CLK
             RETURN
CLK      BSF PORTA,1
             BCF PORTA,1
             GOTO RALL2  
;***************************  
INICIO

    BANK1
    MOVLW b'11111100'
    MOVWF TRISA ; SETA PORTA COMO ENTRADA
    MOVLW b'00000000' 
    MOVWF TRISB ; SETA PORTB COMO SAIDA
    MOVLW b'00001111'
    MOVWF TRISC ; SETA PORTC COMO ENTRADA
    MOVLW b'11111111'
    MOVWF TRISD ; SETA PORTD COMO SAIDA/ENTRADA
    MOVLW b'00000000'
    MOVWF TRISE ; SETA PORTE COMO SAIDA
    MOVLW b'10000001' ; ps0=1;prescale 1:4;psa= timer0;tose=subida;tocs=clockinternorbpu=0pullupativados
    MOVWF OPTION_REG ; PULL UP DESABILITADOS E TMR0 1:256
    MOVLW b'10000000' ;
    MOVWF INTCON ;INTERRUPÇÃO TIMER0 HABILITADA
    MOVLW b'00000110' ;00000110
    MOVWF ADCON1        
    BANK0 
    MOVLW H'7'
       MOVWF CMCON
        
;*************************************************
       clrf load2
       clrf load
       clrf  cycles 
       clrf countnum
       clrf countsp
       clrf countai
       clrf countjq
       clrf countrz
       clrf rall1
       clrf porta
       clrf portb
       clrf portc
       clrf portd
       clrf porte
       clrf 73h   ;  ENTRA       
      goto main
 
        END


 
 
    

>

o que eu quero é colocar de 12 a 24 caracters nesse display, 24 matrix 7x6 no total, mas quero começar com 12 x7 . não é scrolling. quero  letras fixas. assembly 

Link para o comentário
Compartilhar em outros sites

@dmmartins ,

 

Eu também gosto muito de assembly, mas os lineares, sem essa loucura de bancos ....

Segue o link para você baixar o meu post, dentro dele tem os arquivos com os programas fontes em Bascom. É exatamente  sobre os problemas que você tem passado com a multiplexação dos displays...

Vá para o final para baixar o PDF original com uma resolução bem maior do que o que tem no inicio ok ?

Existe também um Tutorial sobre o Bascom e Assembly, se precisar eu passo o link ok ?

 

 

Paulo

Link para o comentário
Compartilhar em outros sites

38 minutos atrás, dmmartins disse:

Obrigado aphawk, mas estou aguardando o retorno do vtrx, pois ele ja fez em asm um display, o que falta desenrrolar no meu projeto é a parte que mostras 12 digitos  nas 12 matriz de led.

Ta difícil.

Qual compilador voce usou?

Todo código que postou não simula no Proteus e a mudança de bancos é difícil.

Não espere muito de mim.

Link para o comentário
Compartilhar em outros sites

@dmmartins ,

 

O que eu te passei é um estudo meu, e contém maneiras de você calcular os tempos envolvidos em acendimentos e apagamentos de segmentos em seus loops para resolver o problema que você está tendo. Não conte que alguém vai perder tempo precioso para resolver esse seu problema,  por menos que eu entenda desse Assembly já notei que tem coisa errada, existe trecho de código aí que nunca será executado.

 

Como sempre falo, estamos aqui para ensinar, assim você mesmo tem condições de resolver o seu problema.

 

Você tem o fonte, que funciona mesmo piscando, então ajude a quem quer te ajudar :

 

1 - Crie esse seu projeto no Proteus

2 - Disponibilize o fonte e o compilador para que outros possam tentar simular no Proteus e te ajudar.

3 - Informe qual é o clock que seu processador está rodando.

4 - Disponibilize o projeto completo do Proteus.

 

Assim até eu posso te ajudar , pois posso medir tempos envolvidos com o Proteus.

 

Paulo

 

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!