📄 feedback.lst
字号:
C51 COMPILER V7.06 FEEDBACK 11/14/2008 21:02:37 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE FEEDBACK
OBJECT MODULE PLACED IN feedback.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE feedback.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include <ADUC842.H>
2 #include <math.h>
3 #include "feedback.h"
4 #include "lcd.h"
5
6 sbit FB_DIR_L = P1^6; //用于反馈电机转向,根据需要调整 MOTOR_FEEDBACK()鉴向函数
7 sbit FB_DIR_R = P1^7; //顺时针时 FB_DIR_L = 1
8
9
10 //反馈参数定义
11 int fb_V_L; //反馈当前速度
12 int fb_V_R;
13
14 long xdata rea_all_num_l;
15 long xdata rea_all_num_r;
16
17 /*****************************************延时函数************************************************/
18 //输入值为延时模式mode和延时长度time,无返回值
19 //调用函数:无
20
21 void DELAY(unsigned char mode,unsigned char time)
22 {
23 1 unsigned int m,n;
24 1 unsigned char k;
25 1 switch(mode) //mode为延时模式,time为延时长度
26 1 {
27 2 case 0: //2.68毫秒,此时对应电机速度100--1.2m/s
28 2 {
29 3 for(k=0;k<time;k++)
30 3 for(m=0;m<2;m++)
31 3 for(n=0;n<2450;n++);
32 3 }break;
33 2
34 2 case 1: //一秒
35 2 {
36 3 for(k=0;k<time;k++)
37 3 for(m=0;m<400;m++)
38 3 for(n=0;n<4000;n++);
39 3
40 3 }break;
41 2
42 2 case 2: //一分钟
43 2 {
44 3 for(k=0;k<time;k++)
45 3 for(m=0;m<24000;m++)
46 3 for(n=0;n<4000;n++);
47 3 }break;
48 2
49 2 default: //其他
50 2 break;
51 2 }
52 1 }
53
54
55 /*******************************速度反馈*********************************/
C51 COMPILER V7.06 FEEDBACK 11/14/2008 21:02:37 PAGE 2
56 //反馈捕获函数
57 //获得反馈速度和反馈电流
58
59 void GET_FEEDBACK()
60 {
61 1 int speed_num_l=0; //用于获得当前速度
62 1 int speed_num_r=0;
63 1
64 1 TL0 = 0;
65 1 TH0 = 0;
66 1 TL1 = 0;
67 1 TH1 = 0;
68 1 TR0 = 1; //计数器接通工作
69 1 TR1 = 1;
70 1
71 1 DELAY(0,1); //the sampling cycle根据所选电机实际测得,
72 1
73 1 speed_num_l = ((int)TH0<<8)+TL0; //可以加上个防止溢出的中断程序
74 1 speed_num_r = ((int)TH1<<8)+TL1;
75 1
76 1
77 1 TR0 = 0; //关闭计数器
78 1 TR1 = 0;
79 1
80 1 /***********************位置控制**************************/
81 1 TR0 = 1;
82 1
83 1 if(FB_DIR_L) //鉴向
84 1 {
85 2 rea_all_num_l -= (((int)TH0<<8)+TL0);
86 2 }
87 1 else
88 1 {
89 2 rea_all_num_l += (((int)TH0<<8)+TL0); //可以加上个防止溢出的中断程序
90 2 }
91 1
92 1 TR1 = 1;
93 1
94 1 if(FB_DIR_R)
95 1 {
96 2 rea_all_num_r += (((int)TH1<<8)+TL1);
97 2 }
98 1 else
99 1 {
100 2 rea_all_num_r -= (((int)TH1<<8)+TL1);
101 2 }
102 1
103 1 TL0 = 0;
104 1 TH0 = 0;
105 1 TL1 = 0;
106 1 TH1 = 0;
107 1 //---------------check the direction-------------------------------------------------
108 1 if(FB_DIR_L) //鉴向
109 1 {
110 2 speed_num_l = 0 - speed_num_l;
111 2 }
112 1 else
113 1 {
114 2 speed_num_l = speed_num_l;
115 2 }
116 1
117 1 if(FB_DIR_R)
C51 COMPILER V7.06 FEEDBACK 11/14/2008 21:02:37 PAGE 3
118 1 {
119 2 speed_num_r = speed_num_r;
120 2 }
121 1 else
122 1 {
123 2 speed_num_r = 0 - speed_num_r;
124 2 }
125 1
126 1 fb_V_L = speed_num_l;
127 1 fb_V_R = speed_num_r;
128 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 490 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 8 ----
PDATA SIZE = ---- ----
DATA SIZE = 4 4
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -