26
Sistemas Microprocessados sato<at>utfpr<dot>edu<dot>br http://pessoal.utfpr.edu.br/sato/

gs 0908 c 8051 v0 - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/sato/material-didatico/sistemas-micro... · /* BYTE Registers */ ... – – etc. ... de

  • Upload
    lekhue

  • View
    213

  • Download
    0

Embed Size (px)

Citation preview

Page 1: gs 0908 c 8051 v0 - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/sato/material-didatico/sistemas-micro... · /* BYTE Registers */ ... –  – etc. ... de

Sistemas Microprocessados

sato<at>utfpr<dot>edu<dot>brhttp://pessoal.utfpr.edu.br/sato/

Page 2: gs 0908 c 8051 v0 - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/sato/material-didatico/sistemas-micro... · /* BYTE Registers */ ... –  – etc. ... de

C para o 8051

sato<at>utfpr<dot>edu<dot>br

Page 3: gs 0908 c 8051 v0 - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/sato/material-didatico/sistemas-micro... · /* BYTE Registers */ ... –  – etc. ... de

Sobre o material

• Essas transparências foram baseadas nos livros: Embedded C de Michael J. Pont e Microcontrolador 8051 com Linguagem C: Prático e Didático de Nicolosi e Bronzeri, no help do MicroVision 3.

Page 4: gs 0908 c 8051 v0 - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/sato/material-didatico/sistemas-micro... · /* BYTE Registers */ ... –  – etc. ... de

C para 8051• PC x Sistema embarcado

– Sistema Operacional

– Acesso direto ao HW– Loop infinito

• C para 8051– Similar ao ANSI C para PC

– Peculiaridades– Keil

Page 5: gs 0908 c 8051 v0 - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/sato/material-didatico/sistemas-micro... · /* BYTE Registers */ ... –  – etc. ... de

Acesso ao HW• Arquivo de header (.h)

– Facilita o acesso ao HW

– Específico para cada microcontrolador• Ex: 89c51rd2.h, at89x52.h

– <reg52.h>• Genérico

– Exemplo: #include <reg52.h>

Page 6: gs 0908 c 8051 v0 - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/sato/material-didatico/sistemas-micro... · /* BYTE Registers */ ... –  – etc. ... de

<reg52.h>/*--------------------------------------------------------------------------REG52.H

Header file for generic 80C52 and 80C32 microcontroller.Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil

Software, Inc.All rights reserved.--------------------------------------------------------------------------*/

#ifndef __REG52_H__#define __REG52_H__

Page 7: gs 0908 c 8051 v0 - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/sato/material-didatico/sistemas-micro... · /* BYTE Registers */ ... –  – etc. ... de

<reg52.h>/* BYTE Registers */sfr P0 = 0x80;sfr P1 = 0x90;sfr P2 = 0xA0;sfr P3 = 0xB0;sfr PSW = 0xD0;sfr ACC = 0xE0;sfr B = 0xF0;sfr SP = 0x81;sfr DPL = 0x82;sfr DPH = 0x83;

/* BYTE Registers */sfr PCON = 0x87;sfr TCON = 0x88;sfr TMOD = 0x89;sfr TL0 = 0x8A;sfr TL1 = 0x8B;sfr TH0 = 0x8C;sfr TH1 = 0x8D;sfr IE = 0xA8;sfr IP = 0xB8;sfr SCON = 0x98;sfr SBUF = 0x99;

Page 8: gs 0908 c 8051 v0 - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/sato/material-didatico/sistemas-micro... · /* BYTE Registers */ ... –  – etc. ... de

<reg52.h>

/* 8052 Extensions */sfr T2CON = 0xC8;sfr RCAP2L = 0xCA;sfr RCAP2H = 0xCB;sfr TL2 = 0xCC;sfr TH2 = 0xCD;

/* BIT Registers *//* PSW */sbit CY = PSW^7;sbit AC = PSW^6;sbit F0 = PSW^5;sbit RS1 = PSW^4;sbit RS0 = PSW^3;sbit OV = PSW^2;sbit P = PSW^0;

Page 9: gs 0908 c 8051 v0 - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/sato/material-didatico/sistemas-micro... · /* BYTE Registers */ ... –  – etc. ... de

<reg52.h>

/* TCON */sbit TF1 = TCON^7;sbit TR1 = TCON^6;sbit TF0 = TCON^5;sbit TR0 = TCON^4;sbit IE1 = TCON^3;sbit IT1 = TCON^2;sbit IE0 = TCON^1;sbit IT0 = TCON^0;

/* IE */sbit EA = IE^7;sbit ET2 = IE^5;

//8052 onlysbit ES = IE^4;sbit ET1 = IE^3;sbit EX1 = IE^2;sbit ET0 = IE^1;sbit EX0 = IE^0;

Page 10: gs 0908 c 8051 v0 - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/sato/material-didatico/sistemas-micro... · /* BYTE Registers */ ... –  – etc. ... de

<reg52.h>

/* IP */sbit PT2 = IP^5;sbit PS = IP^4;sbit PT1 = IP^3;sbit PX1 = IP^2;sbit PT0 = IP^1;sbit PX0 = IP^0;

/* P3 */sbit RD = P3^7;sbit WR = P3^6;sbit T1 = P3^5;sbit T0 = P3^4;sbit INT1 = P3^3;sbit INT0 = P3^2;sbit TXD = P3^1;sbit RXD = P3^0;

Page 11: gs 0908 c 8051 v0 - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/sato/material-didatico/sistemas-micro... · /* BYTE Registers */ ... –  – etc. ... de

<reg52.h>

/* SCON */sbit SM0 = SCON^7;sbit SM1 = SCON^6;sbit SM2 = SCON^5;sbit REN = SCON^4;sbit TB8 = SCON^3;sbit RB8 = SCON^2;sbit TI = SCON^1;sbit RI = SCON^0;

/* T2CON */sbit TF2 = T2CON^7;sbit EXF2 = T2CON^6;sbit RCLK = T2CON^5;sbit TCLK = T2CON^4;sbit EXEN2 = T2CON^3;sbit TR2 = T2CON^2;sbit C_T2 = T2CON^1;sbit CP_RL2 = T2CON^0;

Page 12: gs 0908 c 8051 v0 - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/sato/material-didatico/sistemas-micro... · /* BYTE Registers */ ... –  – etc. ... de

Tipos de Dados

• Tipos padrões do ANSI C.

• Tipos do compilador do Keil.

• Uso adequado para ocupação racional da memória.

Page 13: gs 0908 c 8051 v0 - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/sato/material-didatico/sistemas-micro... · /* BYTE Registers */ ... –  – etc. ... de

Tipos de Dados Padrão

0 a 4.294.697.295432unsigned long

-2.147.483.648 a +2.147.483.648432long

0 a 65.535216unsigned int

-32.768 a +32.767216int

0 a 65.535216unsigned short

-32.768 a +32.767216short

-32.768 a +32.767216enum

0 a 25518unsigned char

-128 a +12718char

FaixaBytesBits

Page 14: gs 0908 c 8051 v0 - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/sato/material-didatico/sistemas-micro... · /* BYTE Registers */ ... –  – etc. ... de

Tipos de Dados Keil

0 a 65.535216sfr16

0 a 25518sfr

0 e 101sbit

0 e 101bit

FaixaBytesBits

Page 15: gs 0908 c 8051 v0 - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/sato/material-didatico/sistemas-micro... · /* BYTE Registers */ ... –  – etc. ... de

Tipos de Dados Keil• Tipo bit

– Similar aos tipos padrão

– Não pode ser ponteiro

• Tipos sbit, sfr, sfr16– Acesso a bits e aos registros de função

especial (8 e 16 bits)

– Declarada fora da função

– Geralmente no header

Page 16: gs 0908 c 8051 v0 - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/sato/material-didatico/sistemas-micro... · /* BYTE Registers */ ... –  – etc. ... de

Tipos de Dados Keil

Exemplossfr P0 = 0x80;

sbit P10 = 0x90;

bit testbit = 0

Page 17: gs 0908 c 8051 v0 - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/sato/material-didatico/sistemas-micro... · /* BYTE Registers */ ... –  – etc. ... de

Tipos de Dados Keil

• O Keil suporta– struct

– union

– typedef

Page 18: gs 0908 c 8051 v0 - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/sato/material-didatico/sistemas-micro... · /* BYTE Registers */ ... –  – etc. ... de

Áreas de Memória Keil• 8051 tem áreas diferentes de

memória

• Keil tem extensões para especificar a área a ser ocupada por uma variável– data – memória de dados interna

acessada diretamente (128 bytes)

– idata – memória de dados interna acessada indiretamente (256 bytes)

– xdata – memória externa de dados

– code – memória de programa

Page 19: gs 0908 c 8051 v0 - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/sato/material-didatico/sistemas-micro... · /* BYTE Registers */ ... –  – etc. ... de

Áreas de Memória Keil

Exemploschar data var1;

char code text[] = "ENTER PARAMETER:";

unsigned long xdata array[100];

unsigned int idata x,y,z;

unsigned char xdata vector[10][4][4];

Page 20: gs 0908 c 8051 v0 - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/sato/material-didatico/sistemas-micro... · /* BYTE Registers */ ... –  – etc. ... de

Interrupção

Exemplo de função para serialvoid serial_int (void) interrupt 4

{

...

}

• Extensões para atendimento de interrupções– interrupt

– using

Page 21: gs 0908 c 8051 v0 - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/sato/material-didatico/sistemas-micro... · /* BYTE Registers */ ... –  – etc. ... de

Interrupção• Interrupções são identificadas por

números

40023hSerial

3001BhT/C1

20013hExterna 1

1000BhT/C0

00003hExterna 0

NúmeroVetor Interrupção

Page 22: gs 0908 c 8051 v0 - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/sato/material-didatico/sistemas-micro... · /* BYTE Registers */ ... –  – etc. ... de

Interrupção

Exemplo de função para serialvoid serial_int (void) interrupt 4 using 1

{

...

}

• interrupt 4 → serial

• using 1 → usa banco de registradores 1

Page 23: gs 0908 c 8051 v0 - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/sato/material-didatico/sistemas-micro... · /* BYTE Registers */ ... –  – etc. ... de

Função Recursiva

• Função Recursiva– Função que pode ser chamada por ela

mesma

• Extensão para função recursiva– Reentrant

• Declaração de função recursiva– int minha_funcao (int parametro) reentrant

Page 24: gs 0908 c 8051 v0 - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/sato/material-didatico/sistemas-micro... · /* BYTE Registers */ ... –  – etc. ... de

Biblioteca

• ANSI C– Nem todas funções ANSI C existem nas

bibliotecas do Keil C

• Keil C– Possui funções não existentes no ANSI C

• Consultar o help do Keil

Page 25: gs 0908 c 8051 v0 - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/sato/material-didatico/sistemas-micro... · /* BYTE Registers */ ... –  – etc. ... de

Include Files

• Fora o header específico do microcontrolador (ex: <reg52.h>), outros headers podem ser incluídos– <stdio.h>

– <math.h>

– <string.h>

– etc

Page 26: gs 0908 c 8051 v0 - paginapessoal.utfpr.edu.brpaginapessoal.utfpr.edu.br/sato/material-didatico/sistemas-micro... · /* BYTE Registers */ ... –  – etc. ... de

Sobre o material

• Essas transparências foram baseadas nos livros: Embedded C de Michael J. Pont e Microcontrolador 8051 com Linguagem C: Prático e Didático de Nicolosi e Bronzeri, no help do MicroVision 3.