sexta-feira, 20 de março de 2015

Tela Experimento - versão 1




 

#*********************************************************************
# Autor:        ubiratã uaatsim itza I.
# Data:         15/03/2015
# Hora:         21:30:00
#*********************************************************************
# Arquivo:      testeIhm6.py
#
# Descrição:    O arquivo testeIhm6.py
#
#               Métodos: .
#
#               Atributos: .
#
# uso:          F5
#               from testeIhm6 import TesteIhm6
#               t = TesteIhm6
#
#               help(t)                 <-- docstring da classe.
#               help(t.versaoPadrao())  <-- docstring do metodo.
#
#*********************************************************************
#
#*********************************************************************
#!/usr/bin/env python
#-*- coding:utf-8 -*-
#*********************************************************************
#
#from tkinter import *
import tkinter
from tkinter import ttk
from tkinter import messagebox
from tkinter import StringVar

import sys, os

#*********************************************************************
class telaExperimento1():
    def __init__(self):
        '''Teste das funçoes de IHM.
        '''
        self.v_testeIhm = 'ti'
        self.comprimentoroot = 400
        self.larguraroot = 150
       
        self.root = tkinter.Tk()
    #    self.root.geometry('700x150')
        self.root.title("Tela Experimento 1")

        self.frames = ttk.Frame(self.root, padding=(3,3,10,10))
        self.telaprincipal = ttk.Frame(self.frames, borderwidth=5, relief="sunken")#, width=200, height=100)#, title='ola')
        self.style = ttk.Style()
        self.style.configure("BW.TLabel", foreground="black", background="white")
       
        self.varlblp = tkinter.StringVar()
        self.varlblp.set('Experimento')

        self.varlbls = tkinter.StringVar()
        self.varlbls.set('Grupo')

        self.ventranome = StringVar()
        self.ventranome.set('sem nome')
        self.namelbl = ttk.Label(self.telaprincipal, text="Experimento", style="BW.TLabel", textvariable=self.varlblp)#, bg='yellow')
        self.entraname = tkinter.Entry(self.telaprincipal)#, textvariable=self.ventranome)
        self.entraname.config(textvariable=self.ventranome)

        self.ventrasenha = StringVar()
        self.ventrasenha.set('sem grupo')
        self.senhalbl = ttk.Label(self.telaprincipal, text="Grupo", style="BW.TLabel", textvariable=self.varlbls)#, bg='yellow')
        self.entrasenha = tkinter.Entry(self.telaprincipal, textvariable=self.ventrasenha)

        self.btconectar = ttk.Button(self.telaprincipal, text="Feito")
       
        self.onevar = tkinter.IntVar()
        self.onevar.set(1)
        self.twovar = tkinter.IntVar()
        self.twovar.set(0)
        self.threevar = tkinter.IntVar()
        self.threevar.set(0)
       
        self.opclbl = ttk.Label(self.telaprincipal, text="Descriçao", style="BW.TLabel")#, bg='yellow')
        self.descricao = tkinter.Text(self.telaprincipal, height=10, width=30)
        self.descricao.insert('1.0','sem descriçao')
        self.lbldatai = ttk.Label(self.telaprincipal, text="Data inicio: ", style="BW.TLabel")#, bg='yellow')
        self.lbldataf = ttk.Label(self.telaprincipal, text="Data final: ", style="BW.TLabel")#, bg='yellow')

        self.ventradataini = StringVar()
        self.ventradataini.set('sem data')
        self.entradataini = tkinter.Entry(self.telaprincipal)#, textvariable=self.ventranome)
        self.entradataini.config(textvariable=self.ventradataini)

        self.ventradatafin = StringVar()
        self.ventradatafin.set('sem data')
        self.entradatafin = tkinter.Entry(self.telaprincipal)#, textvariable=self.ventranome)
        self.entradatafin.config(textvariable=self.ventradatafin)
       

        self.telaprincipal.grid(column=0, row=0)#, sticky=(N, S, E, W))
        self.frames.grid(column=0, row=0, columnspan=3, rowspan=2)#, sticky=(N, S, E, W))
        self.namelbl.grid(column=3, row=0, columnspan=2, padx=5, pady=5)#, sticky=(N, W))
        self.entraname.grid(column=3, row=1, columnspan=2, pady=5, padx=5)#, sticky=(N, E, W))
        self.senhalbl.grid(column=3, row=2, columnspan=2, padx=5, pady=5)#, sticky=(N, W))
        self.entrasenha.grid(column=3, row=3, columnspan=2, pady=5, padx=5)#, sticky=(N, E, W))
        self.descricao.grid(column=0, row=1, columnspan=2, pady=5, padx=5)
         
        self.opclbl.grid(column=0, row=0)
       
        self.btconectar.grid(column=4, row=4)
       
        self.lbldatai.grid(column=0, row=3)
        self.entradataini.grid(column=1, row=3)
       
        self.lbldataf.grid(column=0, row=4)
        self.entradatafin.grid(column=1, row=4)

        self.btconectar.bind("<Button-1>", self.fbtConectar)

        self.root.columnconfigure(0, weight=1)
        self.root.rowconfigure(0, weight=1)
        self.telaprincipal.columnconfigure(0, weight=3)
        self.telaprincipal.columnconfigure(1, weight=3)
        self.telaprincipal.columnconfigure(2, weight=3)
        self.telaprincipal.columnconfigure(3, weight=1)
        self.telaprincipal.columnconfigure(4, weight=1)
        self.telaprincipal.columnconfigure(5, weight=4)
        self.telaprincipal.rowconfigure(1, weight=1)

        print('Variaveis Tela Experimento 1 instanciadas.')
#------------------------------------------------------------------------------------------
    def versaoTesteIhm():
        """Exibe a versão do Teste IHM.
        """
        messagebox.showinfo("Informaçao", "Teste IHM Versão 1.6")
        print('Teste IHM Versão 1.6')

    def fbtConectar(self, event):
        '''Conecta ao sistema.
        '''
        n = self.ventranome.get()
        if n == 'sem nome':
            pass
        else:
            self.ventranome.set(n)
           
        s = self.ventrasenha.get()
        if s == 'sem senha':
            pass
        else:
            self.ventrasenha.set(s)

        if n == 'sem nome' or s == 'sem senha':
            pass
        else:
            i = messagebox.askyesnocancel('Conexao','Utilizador e senha registrados.\n\nContinuar?')
            if i == True:
                v = self.qtdevar.get()
                p = self.pessoavar.get()
                self.root.title('Conectado --> ' + n.upper() + v + p.upper())
                self.ventranome.set('....')
                self.ventrasenha.set('....')
                print('Tela 3: sim')
            elif i == False:
                print('Tela 3: não')
            elif i == None:
                print('Tela 3: saiu')
       
        print('Funçao do botao conectar.')

    def pessoa(self):
        '''Radiobutton 1, 2, 3 e 4.
        '''
        p = self.pessoavar.get()
        if p == 'adm':
            print('administrador')
        elif p == 'tec':
            print('tecnico')
        elif p == 'res':
            print('responsavel')
        elif p == 'uti':
            print('utilizador')
        else:
            print('nada')

    def qtdepessoas(self):
        '''
        '''
        pass

    def tela1Principal():
        '''
        '''
       
#------------------------------------------------------------------------------------------
if __name__ == '__main__':
    telaExperimento1()
    print ('Tela Experimento 1 instanciada.')
#************************************************************************



.

segunda-feira, 16 de março de 2015

Usando Tkinter no Linux


.


.
#*********************************************************************
# Autor:        ubiratã uaatsim itza I.
# Data:         15/03/2015
# Hora:         21:30:00
#*********************************************************************
# Arquivo:      testeIhm6.py
#
# Descrição:    O arquivo testeIhm6.py
#
#               Métodos: .
#
#               Atributos: .
#
# uso:          F5
#               from testeIhm6 import TesteIhm6
#               t = TesteIhm6
#
#               help(t)                 <-- docstring da classe.
#               help(t.versaoPadrao())  <-- docstring do metodo.
#
#*********************************************************************
#
#*********************************************************************
#!/usr/bin/env python
#-*- coding:utf-8 -*-
#*********************************************************************
#
#from tkinter import *
import tkinter
from tkinter import ttk
from tkinter import messagebox
from tkinter import StringVar

import sys, os

#*********************************************************************
class TesteIhm6():
    def __init__(self):
        '''Teste das funçoes de IHM.
        '''
        self.v_testeIhm = 'ti'
        self.comprimentoroot = 400
        self.larguraroot = 150
       
        self.root = tkinter.Tk()
  #      self.root.geometry('700x150')
        self.root.title("Modulo IHM 5")

        self.frames = ttk.Frame(self.root, padding=(3,3,10,10))
        self.telaprincipal = ttk.Frame(self.frames, borderwidth=5, relief="sunken")#, width=200, height=100)#, title='ola')
        self.style = ttk.Style()
        self.style.configure("BW.TLabel", foreground="black", background="white")
       
        self.ventranome = StringVar()
        self.ventranome.set('sem nome')
        self.ventrasenha = StringVar()
        self.ventrasenha.set('sem senha')
       
        self.namelbl = ttk.Label(self.telaprincipal, text="Utilizador", style="BW.TLabel")#, bg='yellow')
        self.entraname = tkinter.Entry(self.telaprincipal)#, textvariable=self.ventranome)
        self.entraname.config(textvariable=self.ventranome)
        self.senhalbl = ttk.Label(self.telaprincipal, text="Senha", style="BW.TLabel")#, bg='yellow')
        self.entrasenha = tkinter.Entry(self.telaprincipal, textvariable=self.ventrasenha, show='*')

        self.btconectar = ttk.Button(self.telaprincipal, text="Conectar")
       
        self.onevar = tkinter.IntVar()
        self.onevar.set(1)
        self.twovar = tkinter.IntVar()
        self.twovar.set(0)
        self.threevar = tkinter.IntVar()
        self.threevar.set(0)
       
        self.qtdevar = tkinter.StringVar()
        self.qtdevar.set("3")

        self.opc1 = ttk.Radiobutton(self.telaprincipal, text='Um', variable=self.qtdevar, value='1', command=self.qtdepessoas)
        self.opc2 = ttk.Radiobutton(self.telaprincipal, text='Dois', variable=self.qtdevar, value='2', command=self.qtdepessoas)
        self.opc3 = ttk.Radiobutton(self.telaprincipal, text='Tres', variable=self.qtdevar, value='3', command=self.qtdepessoas)
        self.opc4 = ttk.Radiobutton(self.telaprincipal, text='Quatro', variable=self.qtdevar, value='4', command=self.qtdepessoas)

        self.pessoavar = tkinter.StringVar()
        self.pessoavar.set("adm")
        ###indicatoron=0 # faz menu
       
        self.opclbl = ttk.Label(self.telaprincipal, text="Pessoas", style="BW.TLabel")#, bg='yellow')
        self.opcadm = ttk.Radiobutton(self.telaprincipal, text='Administrador', variable=self.pessoavar, value='adm', command=self.pessoa)
        self.opctec = ttk.Radiobutton(self.telaprincipal, text='Tecnico', variable=self.pessoavar, value='tec', command=self.pessoa)
        self.opcres = ttk.Radiobutton(self.telaprincipal, text='Responsavel', variable=self.pessoavar, value='res', command=self.pessoa)
        self.opcuti = ttk.Radiobutton(self.telaprincipal, text='Utilizador', variable=self.pessoavar, value='uti', command=self.pessoa)

        self.wspinlbl = ttk.Label(self.telaprincipal, text="Quantidade", style="BW.TLabel")#, bg='yellow')

        self.telaprincipal.grid(column=0, row=0)#, sticky=(N, S, E, W))
        self.frames.grid(column=0, row=0, columnspan=3, rowspan=2)#, sticky=(N, S, E, W))
        self.namelbl.grid(column=3, row=0, columnspan=2, padx=5, pady=5)#, sticky=(N, W))
        self.entraname.grid(column=3, row=1, columnspan=2, pady=5, padx=5)#, sticky=(N, E, W))
        self.senhalbl.grid(column=3, row=2, columnspan=2, padx=5, pady=5)#, sticky=(N, W))
        self.entrasenha.grid(column=3, row=3, columnspan=2, pady=5, padx=5)#, sticky=(N, E, W))
          
        self.opclbl.grid(column=0, row=0)
        self.opcadm.grid(column=0, row=1)
        self.opctec.grid(column=1, row=1)
        self.opcres.grid(column=0, row=2)
        self.opcuti.grid(column=1, row=2)

        self.opc1.grid(column=0, row=4)
        self.opc2.grid(column=1, row=4)
        self.opc3.grid(column=2, row=4)
        self.opc4.grid(column=3, row=4)
       
        self.btconectar.grid(column=4, row=4)
       
        self.wspinlbl.grid(column=0, row=3)

        self.btconectar.bind("<Button-1>", self.fbtConectar)

        self.root.columnconfigure(0, weight=1)
        self.root.rowconfigure(0, weight=1)
        self.telaprincipal.columnconfigure(0, weight=3)
        self.telaprincipal.columnconfigure(1, weight=3)
        self.telaprincipal.columnconfigure(2, weight=3)
        self.telaprincipal.columnconfigure(3, weight=1)
        self.telaprincipal.columnconfigure(4, weight=1)
        self.telaprincipal.columnconfigure(5, weight=4)
        self.telaprincipal.rowconfigure(1, weight=1)
#------------------------------------------------------------------------------------------
    def versaoTesteIhm():
        """Exibe a versão do Teste IHM.
        """
        print('Teste IHM Versão 1.6')

    def fbtConectar(self, event):
        '''Conecta ao sistema.
        '''
        n = self.ventranome.get()
        if n == 'sem nome':
            pass
        else:
            self.ventranome.set(n)
           
        s = self.ventrasenha.get()
        if s == 'sem senha':
            pass
        else:
            self.ventrasenha.set(s)

        if n == 'sem nome' or s == 'sem senha':
            pass
        else:
            i = messagebox.askyesnocancel('Conexao','Utilizador e senha registrados.\n\nContinuar?')
            if i == True:
                self.root.title('Conectado --> ' + n.upper())
                print('Tela 3: sim')
            elif i == False:
                print('Tela 3: não')
            elif i == None:
                print('Tela 3: saiu')
       
        print('Funçao do botao conectar.')

    def pessoa(self):
        '''Radiobutton 1, 2, 3 e 4.
        '''
        v = self.pessoavar.get()
        if v == 'adm':
            print('administrador')
        elif v == 'tec':
            print('tecnico')
        elif v == 'res':
            print('responsavel')
        elif v == 'uti':
            print('utilizador')
        else:
            print('nada')

    def qtdepessoas(self):
        '''Radiobutton 1, 2, 3 e 4.
        '''
        v = self.qtdevar.get()
        if v == '1':
            print('uma pessoa')
        elif v == '2':
            print('duas pessoas')
        elif v == '3':
            print('tres pessoas')
        elif v == '4':
            print('quatro pessoas')
        else:
            print('nenhuma pessoa')

    def tela1Principal():
        '''
        '''
       

#------------------------------------------------------------------------------------------
if __name__ == '__main__':
    TesteIhm6()
    print ('TesteIhm 6 ativado.')
#************************************************************************
.

segunda-feira, 9 de março de 2015

Usando Tkinter no Janelas

.


#*********************************************************************
# Autor:        ubiratã uaatsim itza I.
# Data:         10/03/2014
# Hora:         17:40:06
#*********************************************************************
# Arquivo:      padrao.py
#
# Descrição:   O arquivo padrao.py
#
#               Métodos:
#
# uso:          from padrao import Padrao
#               p = Padrao
#               p.
#
#*********************************************************************
#
#*********************************************************************
#!/usr/bin/env python
#-*- coding:utf-8 -*-
#*********************************************************************
#
#*********************************************************************
import random
import tkinter
from tkinter import ttk
from tkinter import messagebox
#from tkinter import Combobox
import sys, os
#*********************************************************************
#
#*********************************************************************
class Padrao(object):
    def __init__(self):
        self.v_padrao = 'p'
        p = Padrao

        self.tela1 = tkinter.Tk()
        self.style = ttk.Style()
        available_themes = self.style.theme_names()
        random_theme = random.choice(available_themes)
        self.style.theme_use(random_theme)
        self.tela1.title(random_theme)

        self.telax = tkinter.Tk()
        self.telax.title('tanzinho')
        frmx = ttk.Frame(self.telax)
        frmx.pack(expand=True, fill='both')
        self.b3 = ttk.Button(frmx, text='Tanzinho')
        self.b3['command'] = self.bt3telaxMuda
        self.b3.pack(pady=2)

        frm = ttk.Frame(self.tela1)
        frm.pack(expand=True, fill='both')
    # create a Combobox with themes to choose from
        self.combo = ttk.Combobox(frm, values=available_themes)
        self.combo.pack(padx=72, pady=10)
        self.combo.bind('<Return>', self.bt1muda_estilo)

     #   ttk.Separator()

        self.cbvalor = tkinter.StringVar()
        self.comboopcao = ttk.Combobox(frm, textvariable=self.cbvalor, state='readonly')
        self.comboopcao['values']=('grupos','pessoas','experimento','máquina')
        self.comboopcao.current(2)
        self.comboopcao.pack(padx=72, pady=10)
        self.comboopcao.bind('<<ComboboxSelected>>', self.cbMudanca)
       
    # make a Button to change the style
        self.b1 = ttk.Button(frm, text='Aceitar')
        self.b1['command'] = self.bt1muda_estilo
        self.b1.pack(pady=2)

        self.combo.bind('<Return>', self.bt2tela3)
        self.b2 = ttk.Button(frm, text='Opção')
        self.b2['command'] = self.bt2tela3
        self.b2.pack(pady=2)

        self.n=tkinter.StringVar()
        self.rotulonome = tkinter.Label(self.tela1, text='Nome', bg='yellow')
        self.rotulonome.pack(pady=10, padx=10)
        self.N1=tkinter.Entry(self.tela1, width=25, textvariable=self.n)
        self.N1.bind("<Return>", self.entradaNome)
     #   self.n.set("Entre com o seu nome: ")
        self.N1.pack(pady=10, padx=10)

        self.s=tkinter.StringVar()
        self.rotulosenha = tkinter.Label(self.tela1, text='Senha', bg='yellow')
        self.rotulosenha.pack(pady=10, padx=10)
        self.S1=tkinter.Entry(self.tela1, width=25, textvariable=self.s)
        self.S1.bind("<Return>", self.entradaSenha)
     #   self.s.set("Entre com a sua senha: ")
        self.S1.pack(pady=10, padx=10)

        self.spinval = tkinter.IntVar()
        self.wspin = tkinter.Spinbox(self.tela1, from_=0, to=10, textvariable=self.spinval, command=self.spinRetorno)
        self.wspin.pack(pady=10, padx=10)

        print('Atributos instanciados - Classe Padrão')
#*********************************************************************
    def versao():
        '''27/02/2015
        '''
        print('Classe Padrão - versao 1.0')

    def tela2():
        '''
        '''
        tela2 = tkinter.Tk()
        l = tkinter.Label(tela2, text="Ola, mondo!\nTkinter em ação!\nSee http://pythonce.sf.net.")
        b = tkinter.Button(tela2, text='Quit', command=tela2.destroy)
        l.pack()
        b.pack()
        print('tela 2')

    def bt1muda_estilo(self, event=None):
        """Muda a configuração do estilo com base no conteudo selecinado no Combobox"""
        conteudo = self.combo.get()
       
        try:
            self.style.theme_use(conteudo)
        except tkinter.TclError as err:
            messagebox.showerror('Error', err)
        else:
            self.tela1.title('Tela 1: '+conteudo)
        self.b1['text']='aceito'

    def bt2tela3(self, event=None):
        '''
        '''
        self.tela1.title('Tela 3')
        i = messagebox.askyesnocancel('Pergunta','Você vai mesmo fazer isto?\n\nContinuar?')
        if i == True:
            self.b2['text']='sim'
            print('Tela 3: sim')
        elif i == False:
            self.b2['text']='não'
            print('Tela 3: não')
        elif i == None:
            self.b2['text']='sai'
            print('Tela 3: saiu')
    #    self.b2.config(state='disabled')
    #    self.b2['text']='Escolhido'

    def bt3telaxMuda(self, event=None):
        '''
        '''
     #   self.telax.title('xxx')
        self.b3['text']='xx'
        print('Tela x')
#*********************************************************************
    def entradaNome(self, event=None):
        '''Entrada de informações.
        '''
        print(self.n.get())
       
    def entradaSenha(self, event=None):
        '''Entrada de informações.
        '''
        print(self.s.get())

    def spinRetorno(self):
        '''Quantidade de pessoas que se deseja cadastrar.
        '''
        print(self.spinval.get())

    def cbMudanca(self, event):
        '''Combobox
        '''
        cbo = self.comboopcao.get()
        print(self.comboopcao.current(),'cbo: ', cbo)
#*********************************************************************
if __name__ == '__main__':
    Padrao()
    print ('Classe instanciada - Padrao!')
#*********************************************************************



.

sábado, 20 de dezembro de 2014

Conjunto encaixotado

Um projeto de 2009 que tinha o objetivo de tornar portátil meus projetos de uC de 8 bits pois estava cursando a faculdade e necessitava tê-los comigo a todo momento.

Projeto: uC Atmega8 com gravador embutido e selecionável.
  Botão de reinício, chave liga/desliga, LED indicador de ligado.
 Positivo e negativo da fonte, fusível 5VCC, LED indicador de gravação.
Saídas com conexão rosqueáveis, conexão do gravador, chave selecionadora de gravação e conector da fonte externo de 5VCC.

Para a conclusão deste projeto foi necessário pesquisar sobre o uC e métodos e técnicas de gravação até definir um de baixo custo e eficiente.

Conclusão: Foi planejado e executado em um curto tempo além de funcionar satisfatoriamente.

Impressão pessoal: Este projeto me proporcionou muita motivação e entusiasmo neste tecnologia e com isto muitos outros projetos nasceram e se desenvolveram.

Neste projeto evidenciou-se a complexidade da concepção de produtos eletrônicos por envolver não somente o programa mas todas as partes físicas necessárias para a sua confecção.

Percebeu-se que um sistema é composto de muitas partes físicas que muitas vezes são negligenciadas na concepção e são somente percebidas na execução.

Logo muitas técnicas foram desenvolvidos na área de montagem de partes físicas, de eletrônica como confecção de PCI, esquema elétrico e também na montagem de protótipos eletrônicos.

.

quarta-feira, 17 de dezembro de 2014

Atmel Studio IDE 6.1

Este tipo de IDE possibilita que se direcione e gere arquivos com designações especificadas pelo utilizador. É bom ter o domínio deste processo para não se enganar e cometer erros fúteis.

Ao abrir a IDE Atmel Studio 6.1 o texto inserido no campo denominado de “Name” será o nome da aplicação, o texto inserido no campo denominado de “Solution name” será o nome do projeto este gera um novo diretório e no campo denominado “Location” será o caminho onde o diretório será gerado e os arquivos serão gravados.

Name: AplicacaoAssemblador
Location: C:\Users\UTL\Documents\Atmel Studio\6.1
Solution name: EstudoDoAssembly1

No caminho “C:\Users\UTL\Documents\Atmel Studio\6.1\EstudoDoAssembly1” será criado o arquivo do projeto nomeado de “EstudoDoAssembly1” com extensão atsln.

No caminho “C:\Users\UTL\Documents\Atmel Studio\6.1\EstudoDoAssembly1\AplicacaoAssemblador” serão gerados dois arquivos nomeados de “AplicacaoAssmeblador” com extensões asm e asmproj.

Na versão 6.1 da IDE padrão não é necessário inserir a diretriz: .INCLUDE "m32def.inc" na linha de código, caso seja inserida este código o compilador indicará erros.

Se necessário e com base nestes procedimentos geraremos novas aplicações mantendo o mesmo diretório.



















 


Linguagem: assembly
Tecnologia: 8 bits
uC: Atmega 32A
Placa desenvolvimento: raposa de fogo
IDE: Atmel Studio 6.1
S.O.: Windows
Gravador: AVRISP XPII



Pré requisitos
Computador pessoal
S.O.
IDE
Placa de desenvolvimento
Gravador

Objetivo
Apresentar o leitor com as tecnologias no desenvolvimento de soluções em uC de 8 bits.
Justificativa
Neste tipo de desenvolvimento de solução envolve inúmeras tecnologias e conhecimento multidisciplinar.

Iniciando na IDE

Uma grande parte de nosso tempo passaremos envolvidos com a IDE Atmel Studio 6.1 inserindo códigos logicamente planejado para cumprir o que queremos.

Este tipo de IDE possibilita que se direcione e gere arquivos com designações especificadas pelo utilizador. É bom ter o domínio deste processo para não se enganar e cometer erros fúteis.

Ao abrir a IDE Atmel Studio 6.1 o texto inserido no campo denominado de “Name” será o nome da aplicação, o texto inserido no campo denominado de “Solution name” será o nome do projeto este gera um novo diretório e no campo denominado “Location” será o caminho onde o diretório será gerado e os arquivos serão gravados.

Name: AplicacaoAssemblador
Location: C:\Users\UTL\Documents\Atmel Studio\6.1
Solution name: EstudoDoAssembly1

No caminho “C:\Users\UTL\Documents\Atmel Studio\6.1\EstudoDoAssembly1” será criado o arquivo do projeto nomeado de “EstudoDoAssembly1” com extensão atsln.

No caminho “C:\Users\UTL\Documents\Atmel Studio\6.1\EstudoDoAssembly1\AplicacaoAssemblador” serão gerados dois arquivos nomeados de “AplicacaoAssmeblador” com extensões asm e asmproj.

Na versão 6.1 da IDE padrão não é necessário inserir a diretriz: .INCLUDE "m32def.inc" na linha de código, caso seja inserida este código o compilador indicará erros.

Se necessário e com base nestes procedimentos geraremos novas aplicações mantendo o mesmo diretório.

Código básico
Em função da complexidade da tecnologia do dispositivo e dos requisitos da IDE somos obrigados a inserir algumas linhas de código de configuração do ambiente. Temos dez campos fixos os quais usaremos códigos padrão nestas áreas arbitrariamente definidos, são eles:

Datação
Versão
Valores fixos dos endereços de inicialização
Segmento de dados
Dados variáveis
Segmento de código
Preparação da memória de dados
Laço de infinito
Segmento de dados persistentes
Dados persistentes


/*
 * AplicacaoAssemblador.asm
 *
 *  Created: 17/12/2014 12:52:11
 *  Author: Ubiratã Uaatsim Itzá I
 */
 ;****************************
***************************************************
.MESSAGE "*****************************************"
.MESSAGE "* Dato: " __DATE__ "/ Horo: " __TIME__".....*"
.MESSAGE "*****************************************"
.MESSAGE "* Versão: 1.0.0 *"
.MESSAGE "*****************************************"
;*******************************************************************************
;
;*******************************************************************************
.MESSAGE "valores fixos dos endereços de inicialização."

.EQU VETOR_INT = 0x0000                        ; posição zero da flash *
.EQU APLICATIVO_INI = SPMRaddr + 4            ; último vetor mais quatro *
;*******************************************************************************
;
;*******************************************************************************
.MESSAGE "Variáveis alocadas."
;*******************************************************************************
;* RAM *
;* reg 0x00 - 0x1f *
;* e/s 0x20 - 0x5f *
;* sram 0x60 - 0xdf *
;*******************************************************************************
.DSEG ;de 0x60 a 0xDF (128 bytes)            ; área de dados *
;*******************************************************************************
.ORG SRAM_START
;*******************************************************************************
; variáveis ligadas ao HW
v_PORTA_C:            .BYTE 1
v_DDR_C:            .BYTE 1
v_mcucr:            .BYTE 1
v_wd:                .BYTE 1
v_mcucsr:            .BYTE 1
v_gicr:                .BYTE 1
v_CURSOR:            .BYTE 1
;*******************************************************************************
;
;*******************************************************************************
;* VETORES DE INTERRUPÇÕES *
;*******************************************************************************
.MESSAGE "VETOR da interrupção instalado."

.CSEG
.ORG VETOR_INT

.MESSAGE "Ativando o VETOR da interrupção de reinicio"
.ORG 0x0000
rjmp cefo                                    ; reinicio
; aqui demais códigos de interrupção iniciam aqui.
;*******************************************************************************
;
;*******************************************************************************
.MESSAGE "Rotina principal ativada."
;*******************************************************************************
.ORG APLICATIVO_INI
;*******************************************************************************
cefo:                cli                        ; pára as interrupções.
                    ldi r16,high(RAMEND)
                    out SPH,r16                ; posição inicial, final da SRAM.
                    ldi r16,low(RAMEND)
                    out SPL,r16                ; define o apontador de programa.
;------------------------------------------------------------------------------
            ;        chamadas de rotinas
;------------------------------------------------------------------------------
ligilo_senfine:        wdr                        ; limpa o cão de guarda.
                    nop
                    sleep                    ; dorme.
                    nop
                    nop
                    rjmp ligilo_senfine        ; laço infinitamente.
;*******************************************************************************
;
;*******************************************************************************
.ESEG ;de 0x000 à 0x03ff            ; área de dados *
;*******************************************************************************
.ORG 0x000
;*******************************************************************************
v_eeprom1:            .BYTE 1
;*******************************************************************************


.


terça-feira, 9 de dezembro de 2014

Nota fiscal paulista

Muito interessante ter este cartão durante as compras evita ficar pedindo que o lojista forneça nota fiscal.





Após estes passos é só plastificar, mantê-lo na carteira e apresentá-lo na hora do pagamento.
.

terça-feira, 28 de outubro de 2014

Transmissor de temperatura.

Alimentação: 24 VCC
Resistência: 250 Ohms
Sensor: PT-100
Comunicação: 4 à 20 mA
Temperatura: 0 à 50 .C
.

.