?? motortrig.lst
字號:
1: /**********************************************************************************************
2: * File: motor_trig.c
3: * 功能: 摩托制動/稱重儀表主程
4: * 設計者: 饒陽勝
5: * 日期: 05/2/27
6: **********************************************************************************************/
7: #include <pic.h> //包含系統頭文件
8: #include "total.h" //包含項目頭文件
9:
10: /**********************************************************************************************
11: * 最后修改日期: 05-4-29
12: * 修改原因: 簡化代碼,添加注釋
13: * 修改人: 饒陽勝
14: /**********************************************************************************************
15: * 函數名稱: void Check(void)
16: * 功能: 檢測軸重標定,力標定按鍵有沒有按下
17: * 入口參數: 無
18: * 出口參數:
19: * 全局變量: display_weigh 輪重顯示
20: * dema_weigh 輪重標定數據
21: * dema_force 制動力標定數據
22: *
23: * 調用模塊: Init_Tmr1() TMR1初始化函數
24: * Dema() 標定函數
25: *
26: * 設計者: 饒陽勝
27: * 日期: 05-4-4
28: * 說明: 1 按鍵是低電平有效,如:WEIGH_DEMA,FORCE_DEMA
29: * 2 按鍵要被按住不放5秒鐘,有效
30: **********************************************************************************************/
31: void Check_Key()
32: {
33: unsigned char i;
34:
35: //檢測軸重標定按鍵
36: if(!WEIGH_DEMA){
37: Init_Tmr1(); //初始化TMR1,用它來設定5秒鐘定時
38: for(i = 0; i < 50; i++){
39: while(!TMR1IF) //檢測TMR1溢出標志
40: if(WEIGH_DEMA) return; //如果"WEIGH_DMEA"鍵被松開,退出
41: Init_Tmr1();
42: }
43: Dema(dema_weigh,WEIGH,WEIGH_ADDRESS); //調用標定函數
44: display_weigh = 0; //關閉顯示軸重標識
45: }else if(!FORCE_DEMA){
46: //檢測制動力標定按鍵
47: Init_Tmr1(); //初始化TMR1,用它來設定5秒鐘定時
48: for(i = 0; i < 50; i++){
49: while(!TMR1IF) //檢測TMR1溢出標志
50: if(FORCE_DEMA) return; //如果"WEIGH_DMEA"鍵被松開,退出
51: Init_Tmr1();
52: }
53: Dema(dema_force,FORCE,FORCE_ADDRESS); //調用標定函數
54: }
55: }
56:
57: /***************************************************************************************************
58: * File: interrupt.c
59: * 功能: 中斷函數
60: * 入口參數: 接收到上位機的命令
61: * 出口參數: 無
62: * 全局變量: command 接收到的命令
63: * 調用模塊: 無
64: * 設計者: 饒陽勝
65: * 日期: 05-4-29
66: * 說明: 只使用了接收中斷
67: ***************************************************************************************************/
68: void interrupt rc_int(void)
69: {
70: if(RCIF){ //如果有接收數據
71: command = RCREG; //將數據送到command中
72: }
73: RCIF = FALSE; //清接收中斷標志
74: switch (command){
75: /*
76: case 0x03: //接收到的是檢測前輪輪重命令
77: weigh_side = 0;
78: break;
79: case 0x04: //接收到的是檢測后輪輪重命令
80: weigh_side = 1;
81: break;
82: */
83: default:
84: break;
85: }
86: }
87:
88: /**********************************************************************************************
89: * 最后修改時間: 05-4-29
90: * 修改原因: 添加注釋
91: * 修改人: 饒陽勝
92: /**********************************************************************************************
93: * 函數名稱: void main(void)
94: * 功能: 系統主函數
95: * 入口參數: 系統上電
96: * 出口參數: 無
97: * 全局變量: display_data 顯示數組
98: * dema_force 制動力標定數據
99: * dema_weigh 輪重標定數據
100: * command 上位機命令
101: * display_weigh 顯示輪重
102: *
103: * 調用模塊: System_Init() 系統初始化函數
104: * Delay() 軟件延時函數
105: * Display() 顯示函數
106: * My_Read() 讀取EEPROM函數
107: * Normal_Display() 正常顯示函數
108: * Init_Tmr1() TMR1初始化函數
109: * Check_Key() 查按鍵函數
110: * Count_Force() 計算函數
111: * Measure_Weigh() 檢測輪重函數
112: * Measure_Trig() 檢測制動力函數
113: * Clear_Zer0 清0函數
114: *
115: * 設計者: 饒陽勝
116: * 日期: 05-2-28
117: * 說明: 有關系統流程,請參看流程圖
118: ***********************************************************************************************/
119: void main(void)
120: {
121: unsigned short current_AD; //當前AD值
122: unsigned short current_weigh; //當前輪重
123: unsigned char i;
124: unsigned char times; //時間計數
125:
126: System_Init(); //系統初始化
127: display_data[0] = 0x8888;
128: display_data[1] = 0x8888;
129: display_data[2] = 0x8888;
130: Display(display_data,THREE); //檢測筆段顯示
131: Delay(1800,500); //延時5秒
132: My_Read(dema_force,DEMA_POINT_SIZE,FORCE_ADDRESS); //讀入制動力標定數據
133: My_Read(dema_weigh,DEMA_POINT_SIZE,WEIGH_ADDRESS); //讀入軸重標定數據
134: Normal_Display(); //顯示正常態
135: Init_Tmr1();
136: Clear_Zero(dema_weigh, Adc_Adverage(WEIGH)); //調用清0函數
137: while(1){
138: Check_Key(); //標定處理
139: if(Count_Force(dema_weigh, Adc_Adverage(WEIGH)) > 100){ //判斷軸重是否大于10Kg
140: di(); //取上位機命令,取之前關中斷,取后開中斷
141: i = command;
142: ei();
143: if(i != NO_WEIGH){ //是否有無需檢測命令
144: display_weigh = 1; //顯示軸重全局變量為1
145: Measure_Weigh(); //檢測軸重
146: display_weigh = 0;
147: }
148: }
149: if(!ARRIVE){
150: // 前輪檢測踏板有效
151: di(); //取上位機命令,取之前關中斷,取后開中斷
152: i = command;
153: ei();
154: if(i != NO_TRIG) //是否有無需檢測命令
155: Measure_Trig(FRONT); //檢測前輪制動
156: }
157: if(!BACK_ARRIVE){
158: // 后輪檢測踏板有效
159: di();
160: i = command;
161: ei();
162: if(i != NO_TRIG)
163: Measure_Trig(BACK); //檢測后輪制動
164: }
165: if(TMR1IF){
166: Init_Tmr1();
167: ++times;
168: if(times > 5){
169: times = 0; //刷新時間
170: current_AD = Adc_Adverage(WEIGH);
171: if(current_AD < dema_weigh[1])
172: {
173: current_AD = dema_weigh[1] + (dema_weigh[1] - current_AD);
174: }
175: current_weigh = Count_Force(dema_weigh, current_AD);
176: if((current_weigh > 0) && (current_weigh <= 2)) //當前輪重小于0.1Kg,調整0點
177: Clear_Zero(dema_weigh, current_AD); //調用清0函數
178: }
179: }
180: }
181: }
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -