Mạch phát 2 nút nhấn
Mạch thu
Chương trình điều khiển
Phần phát
#include <REGX51.H>
void bekle()
{
unsigned int i;
for (i=0;i<7600;i++)
{
;
}
}
void Hizi_Arttir() interrupt 0
{
while(!TI);
SBUF=0xF1; // Hizi arttir butonuna basilinca aliciya F1H gonder
bekle();
}
void Hizi_Azalt() interrupt 2
{
while(!TI);
SBUF=0xF2; // Hizi azalt butonuna basilinca aliciya F2H gonder
bekle();
}
void main()
{
SCON=0x40; // 8 bit uart modu
TMOD=0x20; // Z/S 1 icin 8 bit otomatik yukleme modu
TH1=0xE8; // yaklasik 1200 bit/s (11.059 Mhz kristal icin)
TR1=1; // Z/S'i calistir
TI=1;
EX0=1; // INT0'in yetkilendirilmesi
EX1=1; // INT1'in yetkilendirilmesi
IT0=1; // INT0 dusen kenarda tetiklensin
IT1=1; // INT1 dusen kenarda tetiklensin
EA=1; // Butun kesmelerin yetkilendirilmesi
P3=0xFF; //Butonlar giris icin ayarlandi
while(1)
{
;
}
}
Phần thu
#include <REGX51.H>
#define MOTOR P2
bit HiziArttir, HiziAzalt;
void Tusa_Basildi() interrupt 4
{
while(RI)
{
if (SBUF==0xF1)
HiziArttir=0;
if (SBUF==0xF2)
HiziAzalt=0;
RI=0;
}
}
void main()
{
unsigned int periyot=1000; // PWM darbesinin 20'de 1'i
unsigned int hiz;
int i; // darbe suresini ayarlamak icin
TMOD=0x21; // T0 16-bit (Mod 1) zamanlayici + T1 icin 8 bit otomatik yukleme modu
TL0=-periyot%256; // pals'in dusuk degeri
TH0=-periyot/256; // pals'in yuksek degeri
SCON=0x40; // 8 bit uart modu
TH1=0xE8; // yaklasik 1200 bps (11.059 Mhz kristal icin)
TR1=1; // Z/S'i calistir
REN=1;
ES=1; // Seri haberlesme kesmesinin yetkilendirilmesi
EA=1; // Butun kesmelerin yetkilendirilmesi
P2=0;
while(1)
{
TR0=1; // T0'in saymaya baslamasi
while(TF0) // Z/S'nin tasma bayragini kontrol et
{
TR0=0; // Timer'i durdur
TF0=0; // Tasma bayragini temizle
i++;
if(i<hiz) // PWM darbe icerisindeki '1' olma suresi
MOTOR=1;
else // PWM darbe icerisindeki '0' olma suresi
MOTOR=0;
if (i==20) i=0; // PWM darbenin peryodu (1 msn x 20 = 20 msn)
// Timer her çalistirmada sayacagi degere yeniden kuruluyor
TL0=-periyot%256;
TH0=-periyot/256;
}
// 20 msn'lik periyot icerisinde 1 olma süresi belirleniyor
if (!HiziArttir) // HiziArttir butonuna basildi mi?
{
HiziArttir=1; // HiziArttir butonu birakildi mi?
if (hiz<20) // hiz degiskenin sinirlandirilmasi
hiz=hiz+1;
}
if (!HiziAzalt) // HiziAzalt butonuna basildi mi?
{
HiziAzalt=1; // HiziAzalt butonu birakildi mi?
if (hiz>0) // hiz degiskenin sinirlandirilmasi
hiz=hiz-1;
}
}
}
Không có nhận xét nào:
Đăng nhận xét