Menu English Ukrainian Russo Início

Biblioteca técnica gratuita para amadores e profissionais Biblioteca técnica gratuita


ENCICLOPÉDIA DE RÁDIO ELETRÔNICA E ENGENHARIA ELÉTRICA
Biblioteca gratuita / Esquemas de dispositivos radioeletrônicos e elétricos

Programadores iniciantes de microcontroladores PIC. Enciclopédia de rádio eletrônica e engenharia elétrica

Biblioteca técnica gratuita

Enciclopédia de eletrônica de rádio e engenharia elétrica / Radioamador iniciante

Comentários do artigo Comentários do artigo

[um erro ocorreu no processamento desta diretiva]

Com base em minha própria experiência de começar a estudar programação de microcontroladores, tentarei dar alguns conselhos práticos sobre como escrever programas em assembler. Todos os exemplos de programação abaixo são dados em relação aos controladores Pic da família Microchip médio, como os mais adequados para início de desenvolvimento, devido a sua arquitetura relativamente simples e um sistema simples de comandos montador.

Os programas propostos podem ser utilizados na forma de macros prontas (sub-rotinas completas) e não estão vinculados a um controlador específico, portanto, os dados das planilhas devem ser levados em consideração no momento da aplicação.

1. Aplicação de interrupções de estouro do temporizador TMR0 (RTCC)

Vamos pegar a frequência do relógio - Ftact. = 4,096 MHz (quartzo padrão). Então o tempo de ciclo será tc = 1 / Ftact. * 4 = 0,97656 µs

INI_TMR ; inicialização do modo de interrupção do RTCC
bsf ESTADO,RP0 ; escolha o banco 1
movlw b'00000100'
movwf OPÇÃO ; prescaler para RTCC 1: 32
bcf ESTADO,RP0 ; banco 0
movlw b'10100000'
movwf INTCON ; Interrupção RTCC habilitada
movlw .96 ; carregando o número preliminar 96 para RTCC
movwf TMR0

Obtenha o tempo de interrupção:
ti = tc * 32 * (256 - 96 = 160)
ti = 0,97656 * 32 * 160 = 5 µs = 000 ms

Agora, se você inserir um loop infinito em qualquer programa (o chamado loop de espera de interrupção) e traduzir o final do programa para esse loop, obteremos uma referência de tempo de 5 ms. E após a interrupção, o programa retornará ao endereço indicado pelo vetor de interrupção (mais frequentemente é 04h). Para o que pode ser usado - veja abaixo.

Assim:

;
organização 0
COMEÇAR ; programa começa depois
; ligar
org 04h ; e este é o endereço do vetor de interrupção, no qual
principal ; o programa principal será executado
;
COMEÇAR ; geralmente é aqui que a inicialização obrigatória
INI_TMR ; cialização de portas, modos, registradores, etc.
INI_PORTS
laço
goto-loop; e este é um loop infinito
;-----------------------------------------------------------------

principal
; Em seguida vem o corpo do programa principal,
; em que é necessário criar um programa de serviço de interrupção do RTCC,
; chamado pelo comando CALL:

ServTMR
btfsc INTCON,RTIF ; verifique o sinalizador de gatilho de interrupção RTCC e
chamar SET_TMR; se sim, inicialize o TMR0 novamente
retornar; se "não" - retornar ao local da chamada ServTMR em
; programa principal principal
;
SET_TMR movimento .96
movwf TMR0 ; faça o upload do número 96 novamente
bcf INTCON,RTIF ; redefinir o sinalizador de gatilho
refie ; retornar com habilitação de interrupção para ServTMR e
; em seguida, para o programa principal principal

Um exemplo de utilização de uma interrupção RTCC para receber um segundo pulso em uma das saídas, digamos, porta B - RB0 : Utilize o registrador Rsec, que deve ser previamente declarado no campo de endereço dos registradores de trabalho.

Assim, na saída da porta RB0, o nível do sinal mudará de '0' para '1' a cada segundo.

Nos registradores do controlador, as informações geralmente estão na forma binária (em código binário). Mas muitas vezes é necessário obter informações em formato binário - decimal (BCD - código), digamos, para controlar um indicador de sete segmentos de sete dígitos.

Vamos considerar exemplos de conversões do código binário b2 para binário-decimal BCD e vice-versa.

Em um registrador de 8 bits, você pode escrever um número binário de 0 a 255 (de b'00000000' a b'11111111'). Vamos converter um número binário em três dígitos de um código binário - decimal - "centenas", "dezenas" e "unidades". Para isso, utilizaremos os seguintes cadastros, que devem ser declarados previamente no campo de endereço dos cadastros de trabalho:

Rbin - registrador para armazenar um número em código binário b2
Rhan - registrar "centenas" de código BCD
Rdec - registrar "dezenas" do código BCD
Rsim - registro "um" do código BCD

As transformações são realizadas usando as operações de subtração dos números 100 e depois 10, contando o número de subtrações positivas.

FORM_1S ; em cada ciclo, e dura a interrupção RTCC
incf Rsec,w ; 5 ms, aumente o registro Rsec em 1 até o número 200
xorlw .200 ; (5ms * 200 = 1 segundo)
btfsc ESTADO,z
ir para OUT_PORT ; com Rsec = 200 sinalizador z = '1' e transição para controle
; pino RB0 da porta B
retornar; voltar ao programa principal principal
;
OUT_PORT btfss PORTB,0 ; verifique o estado da saída RB0
ir para OUT_ON ; se RB0 = '0' então defina como '1'
bcf PORTB,0 ; caso contrário - definido como '0'
ir para principal; voltar ao programa principal
;
OUT_ON bsf PORTB,0 ; definir RB0 = '1'
ir para o principal

CON_100 movlw .100 ; subtraia 100 de Rbin e verifique se
subwf Rbin,w ; o resultado não é negativo. Flag 'c' = 1 quando
btfss ESTADO,c ; resultado > ou = 0, e 'c' = 0 quando < 0
ir para CON_10
incf Rhan,f ; contando "centenas"
movwf Rbin ; o resultado da subtração é primeiro armazenado em um registrador
vá para CON_100 ;bateria e só então volte para Rbin
; para não perder o resto com um negativo
; resultado da subtração.
CON_10 movlw .10 ; da mesma forma defina "dezenas"
subwf Rbin,w
btfss ESTADO,c
ir para end_con
incfRdec,f
movwf Rbin
ir para CON_10;
fim_con
movf Rbin,w
movwf Rsim ; após as subtrações, inserimos o restante em "unidades"
;continua a execução do programa

Conversão reversa de BCD - código para b2. Usamos os mesmos registradores Rhan, Rdec, Rsim onde o número está no código BCD, os registradores RbinH são os de ordem superior e RbinL - a ordem inferior para números (> 255) no código b2 e os registradores auxiliares RM1 - "multiplicador", RM2 - "multiplicador". transfira para a ordem superior, se necessário. Para a multiplicação, usamos a operação de adição.

B2X_100 movlw .99 ; convertendo "centenas"
movwf RM2 ; multiplicador = número de adições (100) menos um
movf Rhan,w
movwf RM1 ; multiplicando = "centenas"
loopX100 addwf RM1,w btfsc STATUS,c ; verifique a transferência para o dígito mais alto
incf RbinH,f ; se houver transferência
decfsz RM2,f ; controlar o número de adições
ir para loopX100
movwf RbinL ; o resultado da adição é inserido no registrador ml. descarga
;
B2X_10 movlw .9 ; convertendo "dezenas"
movwf RM2 ; multiplicador = número de adições (10) menos um
movf Rdec,w
movwf RM1 ; multiplicando = "dezenas"
loopX10 addwf RM1,w ; aqui a transferência pode ser omitida, porque resultado
decfsz RM2,f ; sempre < 255
ir para loopX10
addwf RbinL,f ; adicione o resultado da conversão de "dezenas"
btfsc ESTADO,c ; tendo em conta a possível transferência em dígitos
incf
RbinH,f
movf Rsim,w
addwf Rbin,f ; adicionar "unidades" tendo em conta a possível transferência
btfsc ESTADO,c
incf RbinH,f

Fim das transformações e continuação da execução do programa. Nos registradores RbinL e RbinH obtiveram um número de 16 bits no código b2.

Para realizar a operação aritmética de divisão, por analogia com a multiplicação discutida acima, é utilizada a operação de subtração. Suponha que precisamos dividir o número localizado nos registradores RHsum (dígitos maiores) e RLsum (dígitos menores) - por um divisor (vamos pegar um divisor não > 255) localizado no registrador Rdel.

O resultado será inserido nos registradores RHrez e RLrez (dígitos altos e baixos, respectivamente):

OP_DEL
movfRdel,w
subwf Rlsum,w
btfss ESTADO,c ; verificar se o resultado é negativo?
ir para DEF_carry ; se "sim", fazemos um empréstimo do art. descarga
incf RLrez,f ; conte o número de subtrações, levando em consideração
btfsc ESTADO,c ; possível promoção a nível superior
incf RHRez,f
movwf RLsum ; restaurar o resto para não perder
ir para OP_DEL ; com um resultado negativo de subtração
;
DEF_carry
movimento 0h
xorwf RHsum,w ; todos passaram da categoria sênior para a júnior?
btfsc ESTADO,z ; se "sim", ou seja, RHdel = 0 e negado em OP_DEL
ir para OUT_DEL ; gato. resultado - fim da divisão e saída
decf RHsum,f ; se "não" - um empréstimo da categoria sênior e pro-
incf RLrez,f ; devemos continuar
btfsc ESTADO,c ; verificar a necessidade de transferência para a categoria sênior
incf RHRez,f
ir para OP_DEL

Autor: Vladimir D., degvv@mail.ru; Publicação: cxem.net

Veja outros artigos seção Radioamador iniciante.

Leia e escreva útil comentários sobre este artigo.

<< Voltar

Últimas notícias de ciência e tecnologia, nova eletrônica:

Máquina para desbastar flores em jardins 02.05.2024

Na agricultura moderna, o progresso tecnológico está se desenvolvendo com o objetivo de aumentar a eficiência dos processos de cuidado das plantas. A inovadora máquina de desbaste de flores Florix foi apresentada na Itália, projetada para otimizar a etapa de colheita. Esta ferramenta está equipada com braços móveis, permitindo uma fácil adaptação às necessidades do jardim. O operador pode ajustar a velocidade dos fios finos controlando-os a partir da cabine do trator por meio de um joystick. Esta abordagem aumenta significativamente a eficiência do processo de desbaste das flores, proporcionando a possibilidade de adaptação individual às condições específicas do jardim, bem como à variedade e tipo de fruto nele cultivado. Depois de testar a máquina Florix durante dois anos em vários tipos de frutas, os resultados foram muito encorajadores. Agricultores como Filiberto Montanari, que utiliza uma máquina Florix há vários anos, relataram uma redução significativa no tempo e no trabalho necessários para desbastar flores. ... >>

Microscópio infravermelho avançado 02.05.2024

Os microscópios desempenham um papel importante na pesquisa científica, permitindo aos cientistas mergulhar em estruturas e processos invisíveis aos olhos. Porém, vários métodos de microscopia têm suas limitações, e entre elas estava a limitação de resolução ao utilizar a faixa infravermelha. Mas as últimas conquistas dos pesquisadores japoneses da Universidade de Tóquio abrem novas perspectivas para o estudo do micromundo. Cientistas da Universidade de Tóquio revelaram um novo microscópio que irá revolucionar as capacidades da microscopia infravermelha. Este instrumento avançado permite ver as estruturas internas das bactérias vivas com incrível clareza em escala nanométrica. Normalmente, os microscópios de infravermelho médio são limitados pela baixa resolução, mas o desenvolvimento mais recente dos pesquisadores japoneses supera essas limitações. Segundo os cientistas, o microscópio desenvolvido permite criar imagens com resolução de até 120 nanômetros, 30 vezes maior que a resolução dos microscópios tradicionais. ... >>

Armadilha de ar para insetos 01.05.2024

A agricultura é um dos sectores-chave da economia e o controlo de pragas é parte integrante deste processo. Uma equipe de cientistas do Conselho Indiano de Pesquisa Agrícola-Instituto Central de Pesquisa da Batata (ICAR-CPRI), em Shimla, apresentou uma solução inovadora para esse problema: uma armadilha de ar para insetos movida pelo vento. Este dispositivo aborda as deficiências dos métodos tradicionais de controle de pragas, fornecendo dados sobre a população de insetos em tempo real. A armadilha é alimentada inteiramente por energia eólica, o que a torna uma solução ecologicamente correta que não requer energia. Seu design exclusivo permite o monitoramento de insetos nocivos e benéficos, proporcionando uma visão completa da população em qualquer área agrícola. “Ao avaliar as pragas-alvo no momento certo, podemos tomar as medidas necessárias para controlar tanto as pragas como as doenças”, diz Kapil ... >>

Notícias aleatórias do Arquivo

Transistor híbrido baseado em seda 19.10.2023

Cientistas da Universidade Tufts, nos EUA, apresentaram um transistor híbrido inovador baseado em seda, abrindo novas perspectivas no campo de interfaces neurais e eletrônica de biossensores. Esse material biológico está sendo integrado ao processo padrão de fabricação de chips, possibilitando seu uso em massa. O novo transistor possui propriedades únicas que permitem que circuitos eletrônicos respondam simultaneamente a sinais elétricos e biológicos.

Os pesquisadores têm procurado superar a fronteira entre o animado e o inanimado, criando perspectivas para o desenvolvimento de interfaces neurais que ligam a eletrônica e os organismos vivos. Novos transistores poderão se tornar um elemento-chave no desenvolvimento de redes neurais, biossensores e neuroprocessadores, prometendo mudar a interação humana com a tecnologia. Embora a mudança definitiva possa não ocorrer amanhã, estas tecnologias proporcionam uma visão importante do futuro.

Resta saber se os novos transistores híbridos liderarão essas mudanças ou cairão no esquecimento. Porém, nesta fase, a tecnologia apresenta uma série de propriedades interessantes, incluindo a integração em processos tecnológicos modernos de produção de microcircuitos.

Os cientistas usam a proteína fibroína, incorporada em fios de seda e teias de aranha, como material de entrada em um processador híbrido. Esta proteína apresenta alta sensibilidade à regulação da condutância iônica por pulsos eletrônicos e biomarcadores. Em essência, o funcionamento do transistor se assemelha ao princípio de funcionamento de uma célula de memória ReRAM, alterando a resistência sob a influência de íons, o que vai além do escopo da memória resistiva ou memristor.

Os cientistas criaram com sucesso um sensor de respiração baseado em uma nova solução sensível à umidade. O “transistor de seda” poderá tornar-se um elemento-chave no domínio da saúde, abrindo novas perspectivas para o desenvolvimento de tecnologias inovadoras.

Outras notícias interessantes:

▪ 160A MOSFET para aplicações automotivas da Toshiba

▪ Um novo tipo de golfinho

▪ Arranha-céus - fazendas solares

▪ Cristais que mudam de forma

▪ Stonehenge cria miragens sonoras

Feed de notícias de ciência e tecnologia, nova eletrônica

 

Materiais interessantes da Biblioteca Técnica Gratuita:

▪ seção do site para o designer de rádio amador. Seleção de artigos

▪ artigo Fiz o que pude, deixe quem pode fazer melhor. expressão popular

▪ artigo Por que partes do metrô de Nova York são incompatíveis entre si? Resposta detalhada

▪ artigo Economizador de marcha lenta forçada. transporte pessoal

▪ artigo Acionamento eletrônico-mecânico da bomba de combustível. Enciclopédia de rádio eletrônica e engenharia elétrica

▪ artigo Provérbios e provérbios Tabasaran. Grande seleção

Deixe seu comentário neste artigo:

Имя:


E-mail opcional):


Comentário:





Todos os idiomas desta página

Página principal | Biblioteca | Artigos | Mapa do Site | Revisões do site

www.diagrama.com.ua

www.diagrama.com.ua
2000-2024