//__________________________________________________________________________________ //版权:温州电子开发实验室 夏德仙 www.rf315.net //用途: //创建日期:2007.10 //最后修改日期: //编译环境: Keil uVision3 V8.08a //___________________________________________________________________________________ #include typedef unsigned char uint8; typedef unsigned int uint16; sbit DrivingMotorAL = P0^0; sbit DrivingMotorAR = P0^1; sbit DrivingMotorBL = P0^2; sbit DrivingMotorBR = P0^3; sbit ReelMotor = P0^4; sbit ConveyorMotor = P0^5; sbit VT = P3^3; uint8 RevData; void GoAhead(void) { DrivingMotorAL = 0; DrivingMotorAR = 1; DrivingMotorBL = 0; DrivingMotorBR = 1; } void Recede(void) { DrivingMotorAL = 1; DrivingMotorAR = 0; DrivingMotorBL = 1; DrivingMotorBR = 0; } void TurnRight(void) { DrivingMotorAL = 0; DrivingMotorAR = 1; DrivingMotorBL = 1; DrivingMotorBR = 1; } void TurnLeft(void) { DrivingMotorAL = 1; DrivingMotorAR = 1; DrivingMotorBL = 0; DrivingMotorBR = 1; } void Stop(void) { DrivingMotorAL = 1; DrivingMotorAR = 1; DrivingMotorBL = 1; DrivingMotorBR = 1; } void ReelWork(void) { ReelMotor = 0; } void ReelStop(void) { ReelMotor = 1; } void ConveyorWiork(void) { ConveyorMotor = 0; } void ConveyorStop(void) { ConveyorMotor = 1; } void delay_us(uint16 time) { while(time--); } void ReceiveData(void) { P3 = 0xff; delay_us(300); if(VT == 1) { delay_us(300); if(VT == 1) { RevData = (P3 & 0xf0) >> 4; while(VT); } } } void main(void) { P0 = 0xff; while(1) { ReceiveData(); switch(RevData) { case 0x08: //'1'前进 GoAhead(); break; case 0x04: //'2'后退 Recede(); break; case 0x0c: //'3'左转 TurnLeft(); break; case 0x02: //'4'右转 TurnRight(); break; case 0x0a: //'5'卷筒和传送带工作 ReelWork(); ConveyorWiork(); break; case 0x06: //'6'卷筒和传送带停止 ReelStop(); ConveyorStop(); break; case 0x0e: //'7'无操作 break; case 0x01: //'8'停止 Stop(); break; } } }