Bác nào giỏi về điện tử môn vi điều khiển, vi xử lý giải thích giúp em đoạn code này với ạ.

Dang dinh cu
21/6/2015 2:49Phản hồi: 0
///////////////////////////// Dieu khien toc do dong co bang xung PWM

///////////////// Khai bao thu vien

#include<reg52.h>

#include<math.h>

#include<stdio.h>

////////////////// Khai bao bien

sbit F=P2^7;

sbit T=P1^4;

sbit G=P1^5;

sbit QT=P1^6;

sbit QN=P1^7;

sbit QT1=P2^5;

sbit QN1=P2^6;

unsigned int i;


/////////////////// Ham tao xung PWM

void taoxung(unsigned int i)

{

F=1;

TR0=0;

TH0=-i/256;

TL0=-i%256;

TR0=1;

while(!TF0);

TF0=0;

F=0;

TR0=0;

TH0=-(1000-i)/256;

TL0=-(1000-i)%256;

TR0=1;

while(!TF0);

TF0=0;

}

/////////////// Tao momen cho DC

void momen(void)

{

if ((G==1)&&(T==1))

{

i=i+100;

taoxung(i);

}

if(i>=700) i=i-100;

}

/////////////// Tang toc do dong co

void tang(void)

{

if(T==1);

else

{

while ((G==1)&&(QT==1)&&(QN==1))

{

i=i+10;

taoxung(i);

if(i>=990) i=i-10;

} } }

/////////////// Giam toc do dong co

void giam(void)

{

if(G==1);

else

{

while ((T==1)&&(QT==1)&&(QN==1))

{

i=i-10;

taoxung(i);

if(i<=10) i=i+10;

}}}

/////////////// Dieu khien dong co quay thuan

void thuan(void)

{

if(QT==1)

{

QT1=0;

QN1=0;

}

else

{

while(QN==1)

{

QN1=0;

QT1=1;

tang();

giam();

momen();

}}}

//////////////////// Dieu khien dong co quay nghich

void nghich(void)

{

if(QN==1)

{

QT1=0;

QN1=0;

}

else

{

while(QT==1)

{

QN1=1;

QT1=0;

tang();

giam();

momen();

}}}

/////// Chuong trinh chinh

void main(void)

{

TMOD=0x01;

while(1)

{

thuan();

nghich();

}}
Chia sẻ

Xu hướng

Xu hướng

Bài mới








  • Chịu trách nhiệm nội dung: Trần Mạnh Hiệp
  • © 2025 Công ty Cổ phần MXH Tinh Tế
  • Địa chỉ: Số 70 Bà Huyện Thanh Quan, P. Võ Thị Sáu, Quận 3, TPHCM
  • Số điện thoại: 02822460095
  • MST: 0313255119
  • Giấy phép thiết lập MXH số 11/GP-BTTTT, Ký ngày: 08/01/2019