Olá! Brasilma...
Vamos completar essa lista....
Nos links abaixo podem ser baixados codigos fontes dos referentes livros...
************************************************************
Laboratório de Microcontroladores Família 8051 - Treino de Instruções, Hardware e Software
http://download.editoraerica.com.br/lab ... atorio.exe
************************************************************
Programação C para Microcontroladores 8051
http://download.editoraerica.com.br/pro ... cicios.exe
************************************************************
Microcontrolador 8051 com linguagem C - Prático e Didático - Família AT89S8252 Atmel
http://download.editoraerica.com.br/c80 ... encias.exe
************************************************************
ai vai um que eu baixei e testei...
#include<at89s8252.h>
char inicio[6]={0x38,0x38,0x06,0x0E,0x01,0x0C}; // matriz de início
char men[6][5]={"men1","men2","men3","men4","men5","men6"};// buffer - mensagens
void timer0(unsigned char vezes)
{ TMOD=0x01; // TIMER0 - modo1
while(vezes)
{ TH0=~(1000/256); // contagem de 1ms
TL0=-(1000%256); // contagem de 1ms
TR0=1; // inicia contagem
while(TR0); // espera término da contagem
vezes--;
}
}
void timer()interrupt 1 // função de atendimento à interrupção proveniente do TIMER0
{ TR0=0; }
void envia(int x)
{ P3_6=0; //clear bit P3.6
timer0(5); // chama função timer0 a fim de gerar atraso de (5*1) * tempo
P1=x; // escreve o dado no display
P3_6=1; // seta bit P3.6
}
void inicia() // inicia o Display
{ int y;
P3_5=0; //clear bit P3.5
for(y=0;y<6;y++)
{ envia(inicio[y]); }
P3_5=1; //seta bit P3.5
}
void instrucao(int y,int vezes)
{ while(vezes)
{ P3_5=0; //clear bit P3.5
envia(y);
P3_5=1; //seta bit P3.5
vezes--;
}
}
void main()
{ int x,y;
IE=0x82; // habilita interrupção pelo TIMER0
inicia(); // chama a função inicia
instrucao(0xC0,1); // chama função instrução - instrução 0xC0 - executa 1 vez
instrucao(0x14,5); // chama função instrução - instrução 0x14 - executa 5 vezes
for(x=0;x<6;x++)
{ for(y=0;y<5;y++)
{ envia(men[x][y]); // chama a função envia a fim de apresentar a mensagem
timer0(1000); // chama função timer0
}
instrucao(0x10,5); // chama função instrução - instrução 0x10
}
fim: goto fim; // após apresentar todas as mensagens, o programa //fica travado
}
"Nós nos transformamos naquilo que praticamos com frequência.
A perfeição,portanto, não é um ato isolado. É um hábito".
Aristóteles