Software e Hardware para linha x51
Moderadores: 51, guest2003, Renie, gpenga
por mindú » 29 Mar 2007 17:06
Olá galera!!
Gostaria de saber se alguém tem algum exemplo de PWM feito em C para controlar a intesidade de LED's de alta potência usando o AT89S8252.
Vlw pessoal!!
-
mindú
-
- Mensagens: 2
- Registrado em: 21 Mar 2007 16:32
por rebelk » 11 Abr 2007 11:38
//
// MODULAÇÃO EM PWM por soft
// 100htz 50 passos
#include <at898252.h>
// #include <binario.h>
#include <delay_ms.h>
#define saida_pwm P1_7
unsigned char serra=0;
unsigned char set_pwm=0;
// unsigned char A=0;
bit dowm=0;
bit up=1;
/************************************************************************/
/*************************************************************************/
main()
{
TMOD=0x11;
saida_pwm=0;
ET1=1;
EA=1; // habilita todas as interr.
TH1=0xff;
TL1=200;
TR1=1; // ; libera o timer/contador0 para começar a contagem
while(1)
{
set_pwm++;
if(set_pwm > 100) set_pwm=1;
delay_ms(500);
}
}
/* *****************************************************************/
/*******************************************************************/
/* interrupção do timer 1 */
timer1 () interrupt 3
{
TR1=0;
P1_6=!P1_6;
if(serra < set_pwm )
{
saida_pwm=1;
}
else
{
saida_pwm=0;
}
if( up )
{
serra++;
serra++;
if(serra >= 100)
{
up=0;
dowm=1;
}
}
if( dowm )
{
serra--;
serra--;
if(serra == 0 )
{
up=1;
dowm=0;
}
}
TH1=0xff;
TL1=85;
TF1=0;
TR1=1; // ; libera o timer/contador0 para começar a contagem
}
/*===================================================================== */
// delay_ms.h
// função para milisegundos ou microsegundos
// NÃO ESQUECER DE PROGAMAr O TMOD
/* ********************************************************************** */
/* função para x milissegundos */
delay_ms(unsigned int ms)
{
unsigned int tms=0;
while(tms!=ms)
{
TL0=0x17;
TH0=0xfc; // 1ms
TR0=1;
while (!TF0){}
TF0=0;
TR0=0;
tms++;
}
}
/* ********************************************************************************************* */
/* ********************************************************************************************* */
-
rebelk
- Byte
-
- Mensagens: 301
- Registrado em: 15 Nov 2006 20:16
Voltar para 8051
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante