- 210 vị trí nhớ có thể định vị bit.
và đi tiếp.
3.1.1 Chương trình nạp vào vi điều khiến A T89C52
Chương trình cho hệ thống điều khiến động cơ được soạn thảo trên
trình biên địch KeilC 4 bằng ngôn ngữ C. Sau đây là chương trình:
#include <REGX52.H> #define DCB P2 #define thuan 1 #define nguoc 0 #define co 1 #define khong 0 #define tien 1 #define lui 0 #define trai 1 #define phai 0 #define sang 0 #define tat 1
sbit P.S = P1^1; //Cong tac ben phai phia sau
sbit P.T = P1^3; //Cong tac ben phai phia truoc sbit T $ = P1^0; //Cong tac ben trai phia sau sbit TT = P1^2; //Cong tac ben trai phia truoc sbit D PS = P1^5; // Den bao ben phai phia sau sbit D PT = P1^6; // Den bao ben phai phia truoc
sSbit D T5 = P1^4; // Den bao ben trai phia sau sbit D TT = P1^7; // Den bao ben trai phia truoc
bit DC1, DC2, STOP; //1 la thuan 0 la nguoc
unsiơgned char CB_DCI[]={0x1,0x2,0x4,0x8)}; unsiơgned char CB_DC2[]={0x10,0x20,0x40,0x80};
unsigned char G_DC1,G DC2;//Vi tri cua moi dong co unsigned int cuon_ day?
unsigned int van toc, dem ngat, chu ky, tre; // Khai bao Timer 0
void setup_timer0 (void) {
TMOD=0x2; // Che do 8 bit tu nap lai
TL0=0x6; ⁄/ Gia tri khoi tao, 200 xung thi tran
TH1=0x6¿ // Gia tri nap lai
EA=0z ET0=1; TR1=0;
BA=1;
}
// Chuong trinh ngat Timer 0
void Run(void) interrupt 1 {
TRO=0; // Dung chay Timer 0
if (++dem ngat==van_ toc) {
1£((!STOP) || (!cuon day==0))( // Chua có dk dụng lai hoac chua tro ve cuon day dau tien
i£(DC1)({ G_DC1=CB_DC1[cuon day] } else({ G_DC1=CB_DC1[3-cuon_ day]; } if£(DC2)({ G_DC2=CB_DC2[cuon_ day]; } else({ G_DC2=CB_DC2[3-cuon_ day]; } if(†ttcuon_day>=4) { cuon_ day=0; chu ky++; } else{
DCB=0x0;//Tat dong đien dua vao` cac cuon day }
DCB=G_ DCl+G_ DC2; // Xuat tin hieu ra PORT 2
1£ (đem ngat>van_ toc) {
dem_ngat=0; }
TR0=1; // Cho chay Timer 0
}
// Chuong trinh con cho Tien va Lui
void MOVE (bit huong,unsigned int so chu ky){ 1£ (huong) { DC1=thuan; DC2=nguoc; } else({ DC1=nguoc; DC2=thuan; }
chu ky=0; //bat dau dem so chu ky
STOP=khong;
while(so_chu ky>=chu_ ky)
{}
STOP=co;
}
// Chuong trinh cho re
void re(bit huong,unsigned int so chu ky){ 1£ (huong) { DC1=thuan; DC2=thuan; } else({ DC1=nguoc; DC2=nguoc; }
chu _ky=0;//bat dau dem so chu ky STOP=khong;
while(so_chu ky>=chu_ ky)
{Œ}
STOP=CO;
}
// Chuong trinh tao tre
void delay (unsigned int time) {
unsigned int ¡; while (--time) {
i=1000z
while(--i1)
Ø } }
void SW TT(void) {