Está en la página 1de 2

#include <8052.

h>
//#include <reg51.h>
//***definicion de registros******
#define TMOD 0x89 //registro que controla timer's
#define TCON 0x88 //registro de control de la interrupcion
#define TCONB 0x91 //registro para controlar PWM
#define IE 0xA8 //registro para habilitar interrupciones
#define P1M0 0xC2 //registro que controla modo del puerto 1
#define P1M1 0xc3 //registro que controla modo del puerto 1
#define P3M0 0xc6 //registro que controla modo del puerto 3
#define P3M1 0xc7 //registro que controla modo del puerto 3
#define pwmt1 P3.5 //bit 5 del puerto 3
#define pwmt0 P3.4 //bit 4 del puerto 3
#define puls P3.0 //bit 0 del puerto 3
#define TL0 0x8A //define el registro TL0
#define TL1 0x8B //define el registro TL1
#define TH0 0x8c //define el registro TH0
#define TH1 0x8d //define el refistro TH1
#define RH0 0x94
#define RH1 0x95
//*********************************
int i=0;
//****definicion de funciones******
void T0Delay(void);
void T0Delay2(void);
//*********************************
//***funcion de retardo de 500ms***
//*********************************
//**Programa Principal*************
void main()
{
__asm
mov P3M0,#0 ;colocamos el puerto 3 como salida
mov P3M1,#0 ;colocamos el puerto 3 como salida
setb pwmt0 ;colocamos en 1 el bit 4 del puerto 3
setb pwmt1 ;colocamos en 1 el bit 5 del puerto 3
mov TCONB,#227 ;activamos el pwm 0, salida t0, sin prescalador
mov TCON,#80 ;activamos timer 1 y timer 2 activando los bits
TR1 y TR0
mov TMOD,#1 ;cargamos el valor 1 al registro para que funcio
ne como timer/contador de 16 bits
mov TL0,#0 ;inicializamos
mov TH0,#254 ;se carga el valor maximo al contador para hacer
mas alto el ciclo util
mov RH0,#11 ;valor a comparar para el ciclo util de la pwm
mov TL1,#0 ;inicializamos
mov TH1,#254 ;se carga el valor maximo al contador para hacer
mas alto el ciclo util
mov RH1,#180 ;valor a comparar para el ciclo util de la pwm
__endasm;
while(1)
{
P3_0=0;
//T0Delay2();
P3_0=1;
//T0Delay2();
};
}
//***********************************/
/*
void T0Delay()
{
__asm
MOV TMOD,#2 ;CARGO AL REGISTRO TMOD EL VALOR 2 PARA QUE SEA
TIMER DE 8 BITS, CON EL VALOR 1 ES TIMER DE
16 BITs
MOV TL0,#1 ;CARGA A TL0 EL VALOR INICIAL 0
MOV TH0,#254 ;carga el valor maximo del conteo
MOV TR0,#1 ;
AGAIN: dJNZ TF0,AGAIN ;repite el lazo hasta que se haya cumplido el ti
empo
MOV TR0,#0 ;
MOV TF0,#0 ;
__endasm;
return;
}
void T0Delay2()
{
T0Delay();
T0Delay();
T0Delay();
T0Delay();
T0Delay();
T0Delay();
T0Delay();
T0Delay();
return;
}*/
P3_4=1; //colocamos en 1 el bit 4 del puerto 3
P3_5=1; //colocamos en 1 el bit 5 del puerto 3
TCONB=227; //activamos el pwm 0, salida t0, sin prescalador
TCON=80; //activamos timer 1 y timer 2 activando los bits TR1 y T
R0
TMOD=1; //cargamos el valor 1 al registro para que funcione como

TL0=#0; //inicializamos
TH0=254; //se carga el valor maximo al contador para hacer mas al
to el
RH0=11; //valor a comparar para el ciclo util de la pwm
TL1=0; //inicializamos
TH1=254; //se carga el valor maximo al contador para hacer mas al
to el
RH1=180;

También podría gustarte