C51 COMPILER V7.06 DC_MOTOR 04/27/2020 09:49:00 PAGE 1 C51 COMPILER V7.06, COMPILATION OF MODULE DC_MOTOR OBJECT MODULE PLACED IN dc_motor.OBJ COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE dc_motor.c BROWSE DEBUG OBJECTEXTEND stmt level source 1 /*此程序是针对uPD6121系列遥控器的取码程序,解码值在Im[2]中,当IrOK=1时解码有效*/ 2 /******************************************************************************/ 3 /* 项目名称 : TX-1C扩展板 红外遥控器控制直流电机 */ 4 /* 主控芯片 : STC89C52 */ 5 /* 文件名称 : Inf_DcMotor */ 6 /* 文件功能 : 主函数 */ 7 /* 文件版权 : 天祥电子 */ 8 /* 文件版本 : */ 9 /******************************************************************************/ 10 /**********************************包含头文件**********************************/ 11 #include 12 /********************************定义变量和数组********************************/ 13 uchar PulseWidth = 0; //定义脉宽值 14 uchar StartFlag = 0; //定义启动标志位 0为停止 1为启动 15 uchar dc_count; //0.5ms次数标识 16 /******************************************************************************/ 17 /* 函数名称 : delay */ 18 /* 函数描述 : 延时函数 */ 19 /* 输入参数 : 无 */ 20 /* 参数描述 : 无 */ 21 /* 返回值 : 无 */ 22 /******************************************************************************/ 23 void dc_delay(uchar i) 24 { 25 1 uchar j,k; 26 1 for(j = i;j > 0;j--) 27 1 { 28 2 for(k = 125;k > 0;k--); 29 2 } 30 1 } 31 /******************************************************************************/ 32 /* 函数名称 : display */ 33 /* 函数描述 : 显示函数函数 */ 34 /* 输入参数 : 无 */ 35 /* 参数描述 : 无 */ 36 /* 返回值 : 无 */ 37 /******************************************************************************/ 38 void dc_display(void) 39 { 40 1 dula = 0; 41 1 P0 = seg_table[PulseWidth/10]; //显示脉宽值高位 42 1 dula = 1; 43 1 dula = 0; 44 1 45 1 wela = 0; 46 1 P0 = 0xfe; 47 1 wela = 1; 48 1 wela = 0; 49 1 dc_delay(5); 50 1 } 51 /******************************************************************************/ 52 /* 函数名称 : Inf_Dispose */ 53 /* 函数描述 : 红外接收处理函数 */ 54 /* 输入参数 : 无 */ 55 /* 参数描述 : 无 */ C51 COMPILER V7.06 DC_MOTOR 04/27/2020 09:49:00 PAGE 2 56 /* 返回值 : 无 */ 57 /******************************************************************************/ 58 void dc_Inf_Dispose(void) 59 { 60 1 if(IrOK == 1) 61 1 { 62 2 switch(Im[2]) 63 2 { 64 3 case 0x44: //遥控器 开始/停止 键按下 启动停止控制 65 3 StartFlag =~ StartFlag; 66 3 if(StartFlag) //启动 打开定时器中断 67 3 { 68 4 if(PulseWidth) //只有当脉宽值不为0时才可以启动 69 4 { 70 5 ET0 = 1; 71 5 } 72 4 } 73 3 else //停止 关闭定时器中断 74 3 { 75 4 ET0 = 0; 76 4 dc_motor = 0; 77 4 } 78 3 break; 79 3 80 3 case 0x09: //遥控器 - 键按下 脉宽值加10 81 3 PulseWidth += 10; 82 3 dc_count=0; 83 3 if(PulseWidth==60) 84 3 { 85 4 PulseWidth = 50; 86 4 } 87 3 break; 88 3 89 3 case 0x15: //遥控器 + 键按下 脉宽值减10 90 3 PulseWidth -= 10; 91 3 dc_count=0; 92 3 if(PulseWidth == 0) 93 3 { 94 4 PulseWidth = 10; 95 4 } 96 3 if(PulseWidth == 246) 97 3 { 98 4 PulseWidth = 0; 99 4 } 100 3 break; 101 3 102 3 default: 103 3 break; 104 3 } 105 2 IrOK = 0; 106 2 } 107 1 } 108 /******************************************************************************/ 109 /* 函数名称 : Time0_Init */ 110 /* 函数描述 : 定时器0初始化函数 */ 111 /* 输入参数 : 无 */ 112 /* 参数描述 : 无 */ 113 /* 返回值 : 无 */ 114 /******************************************************************************/ 115 void dc_Time0_Init() //定时器初始化 116 { 117 1 TMOD |= 0x01; //定时器0工作在方式1 C51 COMPILER V7.06 DC_MOTOR 04/27/2020 09:49:00 PAGE 3 118 1 IE |= 0x82; 119 1 TH0 = 0xfe; 120 1 TL0 = 0x33; //11.0592MZ晶振,0.5ms 121 1 TR0 = 1; //定时器开始 122 1 ET0 = 0; 123 1 } 124 /******************************************************************************/ 125 /* 函数名称 : main */ 126 /* 函数描述 : 主函数 */ 127 /* 输入参数 : 无 */ 128 /* 参数描述 : 无 */ 129 /* 返回值 : 无 */ 130 /******************************************************************************/ 131 void dc_main() 132 { 133 1 system_init(); 134 1 IT1 = 1; 135 1 EX1 = 1; 136 1 dc_Time0_Init(); 137 1 PulseWidth = 0; 138 1 dc_count = 0; 139 1 dc_motor = 0; 140 1 diola = 1; 141 1 dc_Time0_Init(); 142 1 while(message=='c') 143 1 { 144 2 dc_Inf_Dispose(); //红外接收处理 145 2 dc_display(); //数码管显示 146 2 } 147 1 } 148 /******************************************************************************/ MODULE INFORMATION: STATIC OVERLAYABLE CODE SIZE = 187 ---- CONSTANT SIZE = ---- ---- XDATA SIZE = ---- ---- PDATA SIZE = ---- ---- DATA SIZE = 3 ---- IDATA SIZE = ---- ---- BIT SIZE = ---- ---- END OF MODULE INFORMATION. C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)