/*
* Filename : motor.h
* Hardware : ET-ROBOT RD2
* Controller -> P89C51RD2FN
* XTAL -> 18.432 MHz
* Mode -> 12 Clock/MC
* I/O : P1.4 -> Left (PWM-CEX1)
* P1.5 -> Right (PWM-CEX2)
* Compiler : Micro-C/51
* Author : Supachai Budsaratij
*/
MT_Back() {
CCAP1H=243; //P1.4
CCAP2H=230; //P1.5
}
MT_Forward(){
CCAP1H=230;
CCAP2H=243;
}
MT_Stop(){
CCAP1H=0;
CCAP2H=0;
}
MT_NorLeft() {
CCAP1H=0;
CCAP2H=243;
}
MT_NorRight(){
CCAP1H=230;
CCAP2H=0;
}
MT_RoLeft() {
CCAP1H=243;
CCAP2H=243;
}
MT_RoRight(){
CCAP1H=230;
CCAP2H=230;
}
MB_0(){
CCAP1H=255;
CCAP2H=255;
}
MB_25(){
CCAP1H=192;
CCAP2H=192;
}
MB_50(){
CCAP1H=128;
CCAP2H=128;
}
MB_75(){
CCAP1H=64;
CCAP2H=64;
}
MB_100(){
CCAP1H=0;
CCAP2H=0;
}
MTX_init(){
/* Initial Timer0 Generate Overflow PCA */
TMOD = 0x52; /* Timer0 Mode2 : 8bit auto reload */
TH0 = 136; /* 256-120, 8.125usec Auto-relead (20msec/PWM) */
TL0 = TH0;
TCON = 0x50; /* setb TR0, TCON or 0001,0000*/
/*
Initial PWM Period = 20mS (18.432MHz /12-Cycle Mode)
Initial PCA Count From Timer0 Overflow
1 Cycle of Timer0 = (1/18.432MHz)x12 = 0.651uS
Timer0 AutoReload = 120 Cycle = 78.125uS
1 Cycle PCA = [(1/18.432MHz)x12]x120 = 78.125uS
Period 20mS of PCA = 20ms/78.125us = 256(CL Reload)
CL(20mS) = 256 Cycle Auto Reload
Load CCAPxH(1.0mS) = 256-13 = 243 (243,244,...,255 = 13 Cycle)
Load CCAPxH(2.0mS) = 255-26 = 230 (230,231,...,255 = 26 Cycle)
*/
CMOD=0x04;
CCAPM1=0x42;
CCAPM2=0x42;
CCAP1H=0x00;
CCAP2H=0x00;
CCON=0x40;
}