C51 COMPILER V7.06 INTERRUPT 04/27/2020 09:49:01 PAGE 1 C51 COMPILER V7.06, COMPILATION OF MODULE INTERRUPT OBJECT MODULE PLACED IN interrupt.OBJ COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE interrupt.c BROWSE DEBUG OBJECTEXTEND stmt level source 1 #include 2 /******************************************************************************/ 3 /* 函数名称 : Time0_Int */ 4 /* 函数描述 : 定时器0中断函数 */ 5 /* 输入参数 : 无 */ 6 /* 参数描述 : 无 */ 7 /* 返回值 : 无 */ 8 /******************************************************************************/ 9 unsigned long step_m; 10 void Time0_Int() interrupt 1 //中断程序 11 { 12 1 //P1 &= ~(1<<7); 13 1 if(message=='c') 14 1 { 15 2 TH0 = 0xfe; //重新赋值 16 2 TL0 = 0x33; 17 2 dc_count++; 18 2 if(dc_count == PulseWidth) //对应的脉宽值输出低电平 19 2 { 20 3 dc_motor = 0; 21 3 } 22 2 if(dc_count == 60)//30ms周期到达后 23 2 { 24 3 dc_motor = 1; //输出高电平 25 3 dc_count = 0; 26 3 } 27 2 } 28 1 else if(message=='d') 29 1 { 30 2 TH0 = 0xfe; //重新赋值 31 2 TL0 = 0x33; 32 2 33 2 helm_count++; 34 2 if(helm_count == helm_jd) //对应的角度输出低电平 35 2 { 36 3 helm_motor = 0; 37 3 } 38 2 39 2 if(helm_count == 40) //20ms周期到达后 40 2 { 41 3 helm_motor = 1; //输出高电平 42 3 helm_count = 0; 43 3 } 44 2 } 45 1 } 46 /******************************************************************************/ 47 /* 函数名称 : intersvr1 */ 48 /* 函数描述 : 外部中断解码程序 */ 49 /* 输入参数 : 无 */ 50 /* 参数描述 : 无 */ 51 /* 返回值 : 无 */ 52 /******************************************************************************/ 53 void intersvr1(void) interrupt 2 54 { 55 1 Tc = TH0 * 256 + TL0; //提取中断时间间隔时长 C51 COMPILER V7.06 INTERRUPT 04/27/2020 09:49:01 PAGE 2 56 1 TH0 = 0; 57 1 TL0 = 0; //定时中断重新置零 58 1 59 1 if((Tc > Imin) && (Tc < Imax)) 60 1 { 61 2 step_m = 0; 62 2 f = 1; 63 2 return; 64 2 } //找到启始码 65 1 66 1 if(f == 1) 67 1 { 68 2 if(Tc > Inum1 && Tc < Inum3) 69 2 { 70 3 Im[step_m / 8] = Im[step_m / 8] >> 1 | 0x80; 71 3 step_m++; 72 3 } 73 2 if(Tc > Inum2 && Tc < Inum1) 74 2 { 75 3 Im[step_m / 8] = Im[step_m / 8] >> 1; 76 3 step_m++; //取码 77 3 } 78 2 if(step_m == 32) 79 2 { 80 3 step_m = 0; 81 3 f = 0; 82 3 if(Im[2] ==~ Im[3]) 83 3 { 84 4 IrOK =1 ; 85 4 } 86 3 else 87 3 { 88 4 IrOK = 0; //取码完成后判断读码是否正确 89 4 } 90 3 } 91 2 } 92 1 } MODULE INFORMATION: STATIC OVERLAYABLE CODE SIZE = 390 ---- CONSTANT SIZE = ---- ---- XDATA SIZE = ---- ---- PDATA SIZE = ---- ---- DATA SIZE = 4 ---- IDATA SIZE = ---- ---- BIT SIZE = ---- ---- END OF MODULE INFORMATION. C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)