• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

omni_way

microprocessadores 8051

13 mensagens neste tópico

boas tou enraskado para um trabalho para a fac em que tenho que programar um dirigivel, o da goodyear.

O trabalho integrador proposto tem por objectivo permitir o controlo de um dirgível

Goodyear Blimp1, usando para o efeito uma linguagem simples, composta por comandos

semelhantes aos da linguagem LOGO (e que por essa razão designaremos aqui por PL —

Pseudo–LOGO). A implementação será feita por recurso a um modelo telecomandado que

será controlado por um microcontrolador 80C51. Para todos os efeitos, o canal de

comunicação RF pode ser ignorado, tudo se passando como se a carta do 80C51 se

encontrasse embarcada no dirigível.

O código fonte em PL será escrito num PC (ficheiro de texto) e posteriormente convertido

para código objecto através de um assemblador universal, comandado por uma tabela que

relaciona cada comando PL com o respectivo código objecto em hexadecimal. Para este

efeito pode usar-se o TASM (Telemark Cross Assembler), que é um “table-driven cross

assembler” “shareware”, disponível a partir de <http://home.comcast.net/~tasm/>. O

ficheiro com o código objecto será então enviado via RS-232C para o microcontrolador,

dando-se início à execução assim que se premir o botão “Run”.

A escrita do programa PL será feita com base nos comandos2 apresentados na tabela 2. A

implementação dos comandos de movimento deve ser feita de modo a desencadear uma

reacção automática, no caso de ser activada a respectiva entrada de detecção de

obstáculo — por exemplo, se for detectado um obstáculo à frente durante a execução do

comando FRONT, o movimento deve ser abortado e feito um pequeno recuo, antes de se

passar à execução do comando seguinte.

Tarefas principais

A realização do trabalho proposto envolve um conjunto de tarefas que devem ser

partilhadas entre os elementos do grupo, tanto quanto possível de forma disjunta (o grupo

deve no entanto decidir em conjunto os caminhos a seguir para a resolução de cada

tarefa). As tarefas principais que se identificam neste trabalho podem descrever-se nos

termos apresentados a seguir.

Microprocessadores – 2.º ano da LEEC (2008 / 09)

JMF / PLM / RLC – Especificação do trabalho integrador para MICR 2008/09 (v 1.2) Pág. 7 / 8

Criação da tabela que permite ao TASM produzir o código objecto, a partir do

código fonte em PL

Definir todos os aspectos associados à comunicação RS-232C, incluindo os

parâmetros de comunicação (e.g. taxa de transmissão)

Definir todas as variáveis de sistema e dividir o código em segmentos que facilitem

o desenvolvimento de acordo com o modelo da programação modular (uso de

PUBLIC e EXTRN para partilhar variáveis e segmentos de código; uso de variáveis e

código declarados de forma recolocável)

Desenhar o fluxograma e escrever o código assembly que realiza o ciclo principal

do interpretador PL, assumindo que o código objecto correspondente ao programa

em PL está residente numa tabela armazenada em MD interna do 80C51, com início

no endereço 30H

Escrever os pequenos segmentos de código assembly que interpretam cada um dos

comandos PL (o interpretador usará estes segmentos para executar cada comando)

Escrever todos os restantes segmentos de código assembly

A escrita do código deve ser sempre acompanhada pela sua validação, fazendo-se a

simulação através da aplicação μVision3 (quanto mais tarde iniciar a validação, mais difícil

será a detecção e correcção de errros).

um video para terem uma ideia..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas,

Presumo que sejas da feup, ou se calhar não, mas pelo menos o vídeo é na feup.

Acho que não vais ter grande sorte... A malta aqui geralmente não acha muita graça à ideia de fazer trabalhos alheios. :P

Se tiveres dúvidas específicas, com certeza que quem souber te responderá, agora fazer-te um trabalho inteiro... Duvido que alguém te faça isso. :)

Devias pensar em pôr as mãos à obra e começar a trabalhar a sério nisso... Parece interessante até. :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas,

Presumo que sejas da feup, ou se calhar não, mas pelo menos o vídeo é na feup.

Acho que não vais ter grande sorte... A malta aqui geralmente não acha muita graça à ideia de fazer trabalhos alheios. :P 

Se tiveres dúvidas específicas, com certeza que quem souber te responderá, agora fazer-te um trabalho inteiro... Duvido que alguém te faça isso. :)

Devias pensar em pôr as mãos à obra e começar a trabalhar a sério nisso... Parece interessante até. :P

presumes bem..

o meu problema passa pelo simples facto que nao sei sequer o que fazer e como o fazer..

e tendo em conta que o tenho que entregar dia 4 :S

o meu GRANDE PROBLEMA é esse..

pq se a coisa q a minha fac tem de bom é ter mini testes, trabalhos apresentacoes tudo junto :S

obrigado á mesma :s

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Estamos à espera que apresentes dúvidas concretas para te podermos ajudar ;) Ninguém vai fazer o trabalho por ti.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

boas minha gente meti mãos a obra e conegui até fazer parte significativa do trabalho..

mas à algo que ainda nao percebi...

o interpretador é suposto fazer o que?

assim cm o timer?

isto porque me disseram para dividir o programa em tres partes, o main, timer e interpretador...consegui fazer e inclusive parte das coisas sem ajuda, e dps com uns toques dos amigos la me desenraskei, mas se perceber ao certo quais sao as funcões destas duas pates qu eu mencionei.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
o interpretador é suposto fazer o que?
O código fonte em PL será escrito num PC (ficheiro de texto) e posteriormente convertido para código objecto através de um assemblador universal, comandado por uma tabela que relaciona cada comando PL com o respectivo código objecto em hexadecimal.
Desenhar o fluxograma e escrever o código assembly que realiza o ciclo principal do interpretador PL, assumindo que o código objecto correspondente ao programa em PL está residente numa tabela armazenada em MD interna do 80C51, com início no endereço 30H

Escrever os pequenos segmentos de código assembly que interpretam cada um dos comandos PL (o interpretador usará estes segmentos para executar cada comando)

Ou seja, tens um ficheiro em PL, que é traduzido para código objecto (ficheiro HEX) pelo TASM em conjunto com a tabela de tradução que tens que criar, o qual será interpretado pelo teu código Assembly de forma a controlar o dirigível.

assim cm o timer?

O timer... em princípio será para controlar as comunicações.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

mnem. args. opcode bytes modop. class

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

FRONT * 46 02 NOTOUCH 1

BACK * 42 02 NOTOUCH 1

RIGHT * 52 02 NOTOUCH 1

LEFT * 4C 02 NOTOUCH 1

UP  * 55 02 NOTOUCH 1

DOWN * 44 02 NOTOUCH 1

LD R, * 43 03 NOTOUCH 1

DRJNZ * 5A 02 NOTOUCH 1

JPNIN0 * 0A0 02 NOTOUCH 1

JPNIN1 * 0A1 02 NOTOUCH 1

JPNIN2 * 0A2 02 NOTOUCH 1

JPNIN3 * 0A3 02 NOTOUCH 1

JP  * 4A 02 NOTOUCH 1

HALT "" 48 01 NOTOUCH 1

EOP  "" EE 01 NOTOUCH 1

esta foi a tabela tasm que eu criei...

entao

O código fonte em PL será escrito num PC (ficheiro de texto) e posteriormente convertido para código objecto através de um assemblador universal, comandado por uma tabela que relaciona cada comando PL com o respectivo código objecto em hexadecimal.

entao o que o interpretador descodifica os valores que eu tenho na tabela para saber o q tm a fazer e redericiona para o programa principal é isso?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Se percebi bem o que queres dizer, sim.

O que o teu código interpretador vai ter de fazer é ler um byte do código objecto, determinar que tipo de argumentos tem, e ler mais se for preciso. Depois, conforme o significado do opcode, executa o código assembler que fará o dirigível executar a acção desejada. É o mesmo princípio que um switch/case.

Se quiseres que tente exemplificar, diz.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

se nao tiveres mt ocupado pa eu ficar mais ilucidado  :biggrin:

já agora podes me ajudar a construir o portugues para definir o timer, interpretador e main?

tipo é isto e tem c objectivo fazer isto..

pq o portugues nao é mm o meu forte..

é para escrever no relatorio

pq eu a tenho a explicar passo por passo o que cada m**** faz!!

:D

obrigado desde ja..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Tenho o asm do 8051 um bocado enferrujado... mas vamos ver o que se arranja.

Quanto ao relatório... já vai um bocado além da ajuda em programação ;P além de que também não é, de longe, o meu forte.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora