Página 1 de 3

CCS denovo...

MensagemEnviado: 08 Abr 2018 13:07
por vtrx
Ve se alguém me ajuda.

Queria 'portar' um código ASM para o CCS,mas em um trecho não entendo o que está acontecendo.
Veja o fragmento de código:

Código: Selecionar todos
   unsigned int16 Desloca,Letra;
   unsigned int8 Buf;
.........
      Buf = caracter[Letra];
      output_b(~Buf) ;//
   //output_b(~0b00111100);
............


Tenho uma tabela com várias posições onde devo pegar uma posição em sequencia,cada byte,e dar saída no PortB,isso não tem segredo,mas usando a lógica acima os Bits não correspondem,falta sempre algum.
Para testar se era o CCS,ja que em ASM funciona OK,fiz um teste usando output_b(~0b00111100); com a posição 33 da tabela.
A posição 33 da tabela contem o valor 0b00111100.
Usando direto a saída é como esperada,mas se usar Buf = caracter[Letra]; ou output_b(caractere[Letra]);e a variável Letra for 33,a saída não é como esperada,falta um bit.
Qual a magia?

Re: CCS denovo...

MensagemEnviado: 08 Abr 2018 20:18
por KrafT
Tenta fazer:
Código: Selecionar todos
   Buf = ~(caracter[Letra]);
      output_b(Buf) ;


O CCS é meio temperamental;

Re: CCS denovo...

MensagemEnviado: 08 Abr 2018 21:35
por andre_luis
A função output_b() do CCS espera como argumento uma variável do tipo int e nao unsigned int.
Se a dica acima não funcionar, experimenta declarar Buf como deste tipo.

Re: CCS denovo...

MensagemEnviado: 08 Abr 2018 21:41
por vtrx
Não adiantou.
O problema não é o complemento(~),é realmente a variável.

Código: Selecionar todos
      Buf = ~(caracter[33]);
      output_b(Buf) ;

Funciona corretamente.

Carregando L com 33 não

Código: Selecionar todos
L = 33

Código: Selecionar todos
      Buf = ~(caracter[L]);
      output_b(Buf) ;


A tabela está iniciada do seguinte modo:
Código: Selecionar todos
unsigned int8 const caracter[]=


Os Buffer estão assim:
Código: Selecionar todos
   unsigned int8 Desloca,Letra;
   unsigned int8 Buf;


Não estava querendo usar o C18.

Re: CCS denovo...

MensagemEnviado: 09 Abr 2018 07:21
por KrafT
Testei teu código "as is" no CCS 5.036 num PIC18F4620, e não deu nenhum problema (com uma tabela bem pequena, claro):

Código: Selecionar todos
unsigned int8 const caracter[] = {0x55, 0xAA, 0xF0, 0x0F};

void main() {
    unsigned int16 Desloca, Letra;
    unsigned int8 Buf;
    set_tris_b(0);
    for (Letra = 0; Letra<sizeof (caracter); Letra++) {
        Buf = ~(caracter[Letra]);
        output_b(Buf);
    }
}
 

Re: CCS denovo...

MensagemEnviado: 09 Abr 2018 08:13
por vtrx
Mais a tarde vou postar o teste no proteus e código com a tabela para ver.
É uma varredura simples de Matriz de Leds e usa o Timer0,mas usei o CCS 5.070.

Re: CCS denovo...

MensagemEnviado: 09 Abr 2018 10:56
por andre_luis
O CCS não 'gosta' de arrays com mais de 255 bytes, mas o estranho é que isso deveria gerar erro ou warning, e ao menos acontecia comigo com um PIC da familia 16F na versão 3, mas já estamos na 5. Como voce está fazendo um mapeamento de caracteres, suponho que a tabela seja grande e seja um problema parecido com o que reportei nessa postagem.

Re: CCS denovo...

MensagemEnviado: 09 Abr 2018 11:48
por vtrx
Pega o teste em:
https://www.4shared.com/rar/haLLTCAoca/Leds_CCS_16F.html

Deixei os caracteres no arquivo 'tabela' em binário,assim fica mais fácil examinar os bits.
O arquivo hex ASM.hex,é o compilado em ASM,assim pode trocar no Proteus e verificar o resultado correto.
Na verdade o conteudo não ficará em uma tabela,mas sim numa Eeprom,mas para testar a varredura usei uma tabela.
André,o tamanho da tabela não é problema,é só um teste.
È um passa tempo meu antigo que quero passar para CCS usando USB com o 18F2550.

PS:esqueci de dizer a senha!
asm51

Re: CCS denovo...

MensagemEnviado: 10 Abr 2018 10:46
por vtrx
Ninguem vai me ajudar nesta curiosidade?

Re: CCS denovo...

MensagemEnviado: 10 Abr 2018 11:37
por eletroinf
Pois é, eu fiz a manobra de baixar o arquivo e tem senha! aí fica difícil

Re: CCS denovo...

MensagemEnviado: 10 Abr 2018 11:49
por eletroinf
O que exatamente acontece? Que bit falta?

Re: CCS denovo...

MensagemEnviado: 10 Abr 2018 12:20
por vtrx
SENHA=asm51

Re: CCS denovo...

MensagemEnviado: 10 Abr 2018 12:49
por KrafT
Desisti por não saber em qual dos 200 botões de "Download" clicar no 4Shared e tampouco querer logar/criar conta. Um link do Dropbox, Onedrive, GoogleDrive seria menos traumático.

Re: CCS denovo...

MensagemEnviado: 10 Abr 2018 13:21
por andre_luis
Ninguem vai me ajudar nesta curiosidade?


Porque nao simplesmente anexou aqui no asm51 ?

Re: CCS denovo...

MensagemEnviado: 10 Abr 2018 13:55
por vtrx
Porque não sei como...
Se for clicando no botão 'Download',aqui da erro.