C51 COMPILER V7.06 HELM_MOTOR 04/27/2020 09:49:01 PAGE 1 C51 COMPILER V7.06, COMPILATION OF MODULE HELM_MOTOR OBJECT MODULE PLACED IN helm_motor.OBJ COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE helm_motor.c BROWSE DEBUG OBJECTEXTEND stmt level source 1 /*此程序是针对uPD6121系列遥控器的取码程序,解码值在Im[2]中,当IrOK=1时解码有效*/ 2 /******************************************************************************/ 3 /* 项目名称 : TX-1C扩展板 红外遥控器控舵机 */ 4 /* 主控芯片 : STC89C52 */ 5 /* 文件名称 : Inf_HelmMotor */ 6 /* 文件功能 : 主函数 */ 7 /* 文件版权 : 天祥电子 */ 8 /* 文件版本 : */ 9 /******************************************************************************/ 10 /**********************************包含头文件**********************************/ 11 #include 12 uchar helm_jd; //角度标识 13 uchar helm_count; //0.5ms次数标识 14 /******************************************************************************/ 15 /* 函数名称 : delay */ 16 /* 函数描述 : 延时函数 */ 17 /* 输入参数 : 无 */ 18 /* 参数描述 : 无 */ 19 /* 返回值 : 无 */ 20 /******************************************************************************/ 21 void helm_delay(uchar i) 22 { 23 1 uchar j,k; 24 1 for(j = i;j > 0;j--) 25 1 { 26 2 for(k = 10;k > 0;k--); 27 2 } 28 1 } 29 /******************************************************************************/ 30 /* 函数名称 : display */ 31 /* 函数描述 : 显示函数函数 */ 32 /* 输入参数 : 无 */ 33 /* 参数描述 : 无 */ 34 /* 返回值 : 无 */ 35 /******************************************************************************/ 36 void helm_display(void) 37 { 38 1 uchar bai,shi,ge; 39 1 switch(helm_jd) //根据角度标识显示相应的数值 40 1 { 41 2 case 1: //为1,角度为0,前3个数码管显示000 42 2 bai = 0; 43 2 shi = 0; 44 2 ge = 0; 45 2 break; 46 2 47 2 case 2: //为2,角度为45,前3个数码管显示045 48 2 bai = 0; 49 2 shi = 4; 50 2 ge = 5; 51 2 break; 52 2 53 2 case 3: //为3,角度为90,前3个数码管显示090 54 2 bai = 0; 55 2 shi = 9; C51 COMPILER V7.06 HELM_MOTOR 04/27/2020 09:49:01 PAGE 2 56 2 ge = 0; 57 2 break; 58 2 59 2 case 4: //为1,角度为135,前3个数码管显示135 60 2 bai = 1; 61 2 shi = 3; 62 2 ge = 5; 63 2 break; 64 2 65 2 case 5: //为5,角度为180,前3个数码管显示180 66 2 bai = 1; 67 2 shi = 8; 68 2 ge = 0; 69 2 break; 70 2 71 2 default: 72 2 break; 73 2 } 74 1 dula = 0; 75 1 wela = 0; 76 1 { 77 2 P0 = 0; 78 2 dula = 1; 79 2 dula = 0; 80 2 P0 = 0xff; 81 2 wela = 1; 82 2 wela = 0; 83 2 } 84 1 P0 = seg_table[bai]; 85 1 dula = 1; 86 1 dula = 0; 87 1 P0 = 0xfe; 88 1 wela = 1; 89 1 wela = 0; 90 1 helm_delay(5); 91 1 92 1 { 93 2 P0 = 0; 94 2 dula = 1; 95 2 dula = 0; 96 2 P0 = 0xff; 97 2 wela = 1; 98 2 wela = 0; 99 2 } 100 1 P0 = seg_table[shi]; 101 1 dula = 1; 102 1 dula = 0; 103 1 P0 = 0xfd; 104 1 wela = 1; 105 1 wela = 0; 106 1 helm_delay(5); 107 1 108 1 { 109 2 P0 = 0; 110 2 dula = 1; 111 2 dula = 0; 112 2 P0 = 0xff; 113 2 wela = 1; 114 2 wela = 0; 115 2 } 116 1 P0 = seg_table[ge]; 117 1 dula = 1; C51 COMPILER V7.06 HELM_MOTOR 04/27/2020 09:49:01 PAGE 3 118 1 dula = 0; 119 1 P0 = 0xfb; 120 1 wela = 1; 121 1 wela = 0; 122 1 helm_delay(5); 123 1 } 124 /******************************************************************************/ 125 /* 函数名称 : Inf_Dispose */ 126 /* 函数描述 : 红外接收处理函数 */ 127 /* 输入参数 : 无 */ 128 /* 参数描述 : 无 */ 129 /* 返回值 : 无 */ 130 /******************************************************************************/ 131 void helm_Inf_Dispose(void) 132 { 133 1 if(IrOK == 1) 134 1 { 135 2 switch(Im[2]) 136 2 { 137 3 case 0x09: //遥控器+键按下 角度加45 138 3 helm_jd++; //角度标识加1 139 3 helm_count = 0; //按键按下 则20ms周期从新开始 140 3 if(helm_jd == 6) 141 3 { 142 4 helm_jd = 5; //已经是180度,则保持 143 4 } 144 3 145 3 break; 146 3 case 0x15: //遥控器-键按下 角度减45 147 3 helm_jd--; //角度标识减1 148 3 helm_count = 0; 149 3 if(helm_jd == 0) 150 3 { 151 4 helm_jd = 1; //已经是0度,则保持 152 4 } 153 3 break; 154 3 default: 155 3 break; 156 3 } 157 2 IrOK = 0; 158 2 } 159 1 } 160 161 void helm_Time0_Init() //定时器初始化 162 { 163 1 TMOD |= 0x01; //定时器0工作在方式1 164 1 IE |= 0x82; 165 1 TH0 = 0xfe; 166 1 TL0 = 0x33; //11.0592MZ晶振,0.5ms 167 1 TR0 = 1; //定时器开始 168 1 ET0 = 1; 169 1 } 170 /******************************************************************************/ 171 /* 函数名称 : main */ 172 /* 函数描述 : 主函数 */ 173 /* 输入参数 : 无 */ 174 /* 参数描述 : 无 */ 175 /* 返回值 : 无 */ 176 /******************************************************************************/ 177 void helm_main(void) 178 { 179 1 system_init(); C51 COMPILER V7.06 HELM_MOTOR 04/27/2020 09:49:01 PAGE 4 180 1 EA = 1; 181 1 EX1 = 1; 182 1 IT1 = 1; 183 1 helm_Time0_Init(); 184 1 helm_jd = 1; 185 1 helm_count = 0; 186 1 while(message=='d') 187 1 { 188 2 helm_Inf_Dispose(); //红外接收处理 189 2 helm_display(); //数码管显示 190 2 } 191 1 } 192 /******************************************************************************/ MODULE INFORMATION: STATIC OVERLAYABLE CODE SIZE = 267 ---- CONSTANT SIZE = ---- ---- XDATA SIZE = ---- ---- PDATA SIZE = ---- ---- DATA SIZE = 2 ---- IDATA SIZE = ---- ---- BIT SIZE = ---- ---- END OF MODULE INFORMATION. C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)