Página 1 de 1

Tratamento de Interrupção

MensagemEnviado: 01 Set 2018 18:03
por Vicente
Olá, estou usando esse código que incrementa uma variável quando ocorre uma interrupção de um timer. O chip é um Atmega 8L:

asm code
.org 0x006                         ;interrupção do timer1

push r16 ;salva r16 e sreg
in r16,sreg
push r16

lds r16,0x0060 ;aqui, incrementa uma variável, usando o r16
inc r16
sts 0x0060,r16

pop r16 ;recupera r16 e sreg salvos
out sreg,r16
pop r16

reti ;retorna da interrupção


Neste caso, eu preciso salvar o r16 e o sreg, incrementar a variável e, depois, recuperar r16 e sreg.
Gostaria de saber se alguém sabe uma outra forma de fazer isso, ou até mesmo se está faltando salvar algum outro registrador.

Re: Tratamento de Interrupção

MensagemEnviado: 02 Set 2018 10:59
por tcpipchip
eu sempre uso varíaveis como funcao do registrador a qual é jogado na pilha...


https://www.mikrocontroller.net/article ... Interrupts

Re: Tratamento de Interrupção

MensagemEnviado: 11 Fev 2019 09:22
por Guri
Como todo mundo, sabe! Sempre fui defensor do Assembly, inclusive dos Pics, desde 1985. Lembrando que sempre torci o nariz para linguagem C.

Mas depois que me deparei com uma situação, onde tinha que fazer uma rotina para um GLCD, foi ai que comecei a olhar com mais atenção para a linguagem C!

Resumindo, resolvi toda a questão do GLCD em apenas 1 dia.... :D

Hoje em dia não consigo pensar em assembly, nem que seja para piscar um Led :oops:

Re: Tratamento de Interrupção

MensagemEnviado: 11 Fev 2019 10:43
por tcpipchip
cara, nao abandone o assembly!!!!

Re: Tratamento de Interrupção

MensagemEnviado: 20 Abr 2019 22:29
por rafael
A velha briga... kkkk
Eu faço um misto... tenho algumas funções importantes escritas em assembly e chamo elas no C. Mas 99% do projeto eh C. :)


Enviado do meu iPhone usando Tapatalk

Re: Tratamento de Interrupção

MensagemEnviado: 22 Abr 2019 12:50
por tcpipchip
Eu visitei uma vez a WEG MOTORES.

Nem uma instruçao em C, tudo Assembly!

Tratamento de Interrupção

MensagemEnviado: 22 Abr 2019 12:54
por rafael
Xiiiiii, sem querer tu deu um péssimo exemplo! Pois a comunicação rs485 das SSW da Weg são super sensíveis... Dao pau muito fácil e tem que desligar/ligar o módulo de comunicação.

Vai ver que o firmware do módulo Foi escrito em “C”. Heheheh


Enviado do meu iPhone usando Tapatalk