?? motortrig.c
字號(hào):
/**********************************************************************************************
* File: motor_trig.c
* 功能: 摩托制動(dòng)/稱重儀表主程
* 設(shè)計(jì)者: 饒陽(yáng)勝
* 日期: 05/2/27
**********************************************************************************************/
#include <pic.h> //包含系統(tǒng)頭文件
#include "total.h" //包含項(xiàng)目頭文件
/**********************************************************************************************
* 最后修改日期: 05-4-29
* 修改原因: 簡(jiǎn)化代碼,添加注釋
* 修改人: 饒陽(yáng)勝
/**********************************************************************************************
* 函數(shù)名稱: void Check(void)
* 功能: 檢測(cè)軸重標(biāo)定,力標(biāo)定按鍵有沒(méi)有按下
* 入口參數(shù): 無(wú)
* 出口參數(shù):
* 全局變量: display_weigh 輪重顯示
* dema_weigh 輪重標(biāo)定數(shù)據(jù)
* dema_force 制動(dòng)力標(biāo)定數(shù)據(jù)
*
* 調(diào)用模塊: Init_Tmr1() TMR1初始化函數(shù)
* Dema() 標(biāo)定函數(shù)
*
* 設(shè)計(jì)者: 饒陽(yáng)勝
* 日期: 05-4-4
* 說(shuō)明: 1 按鍵是低電平有效,如:WEIGH_DEMA,FORCE_DEMA
* 2 按鍵要被按住不放5秒鐘,有效
**********************************************************************************************/
void Check_Key()
{
unsigned char i;
//檢測(cè)軸重標(biāo)定按鍵
if(!WEIGH_DEMA){
Init_Tmr1(); //初始化TMR1,用它來(lái)設(shè)定5秒鐘定時(shí)
for(i = 0; i < 50; i++){
while(!TMR1IF) //檢測(cè)TMR1溢出標(biāo)志
if(WEIGH_DEMA) return; //如果"WEIGH_DMEA"鍵被松開(kāi),退出
Init_Tmr1();
}
Dema(dema_weigh,WEIGH,WEIGH_ADDRESS); //調(diào)用標(biāo)定函數(shù)
display_weigh = 0; //關(guān)閉顯示軸重標(biāo)識(shí)
}else if(!FORCE_DEMA){
//檢測(cè)制動(dòng)力標(biāo)定按鍵
Init_Tmr1(); //初始化TMR1,用它來(lái)設(shè)定5秒鐘定時(shí)
for(i = 0; i < 50; i++){
while(!TMR1IF) //檢測(cè)TMR1溢出標(biāo)志
if(FORCE_DEMA) return; //如果"WEIGH_DMEA"鍵被松開(kāi),退出
Init_Tmr1();
}
Dema(dema_force,FORCE,FORCE_ADDRESS); //調(diào)用標(biāo)定函數(shù)
}
}
/***************************************************************************************************
* File: interrupt.c
* 功能: 中斷函數(shù)
* 入口參數(shù): 接收到上位機(jī)的命令
* 出口參數(shù): 無(wú)
* 全局變量: command 接收到的命令
* 調(diào)用模塊: 無(wú)
* 設(shè)計(jì)者: 饒陽(yáng)勝
* 日期: 05-4-29
* 說(shuō)明: 只使用了接收中斷
***************************************************************************************************/
void interrupt rc_int(void)
{
if(RCIF){ //如果有接收數(shù)據(jù)
command = RCREG; //將數(shù)據(jù)送到command中
}
RCIF = FALSE; //清接收中斷標(biāo)志
switch (command){
/*
case 0x03: //接收到的是檢測(cè)前輪輪重命令
weigh_side = 0;
break;
case 0x04: //接收到的是檢測(cè)后輪輪重命令
weigh_side = 1;
break;
*/
default:
break;
}
/**********************************************************************************************
* 最后修改時(shí)間: 05-4-29
* 修改原因: 添加注釋
* 修改人: 饒陽(yáng)勝
/**********************************************************************************************
* 函數(shù)名稱: void main(void)
* 功能: 系統(tǒng)主函數(shù)
* 入口參數(shù): 系統(tǒng)上電
* 出口參數(shù): 無(wú)
* 全局變量: display_data 顯示數(shù)組
* dema_force 制動(dòng)力標(biāo)定數(shù)據(jù)
* dema_weigh 輪重標(biāo)定數(shù)據(jù)
* command 上位機(jī)命令
* display_weigh 顯示輪重
*
* 調(diào)用模塊: System_Init() 系統(tǒng)初始化函數(shù)
* Delay() 軟件延時(shí)函數(shù)
* Display() 顯示函數(shù)
* My_Read() 讀取EEPROM函數(shù)
* Normal_Display() 正常顯示函數(shù)
* Init_Tmr1() TMR1初始化函數(shù)
* Check_Key() 查按鍵函數(shù)
* Count_Force() 計(jì)算函數(shù)
* Measure_Weigh() 檢測(cè)輪重函數(shù)
* Measure_Trig() 檢測(cè)制動(dòng)力函數(shù)
* Clear_Zer0 清0函數(shù)
*
* 設(shè)計(jì)者: 饒陽(yáng)勝
* 日期: 05-2-28
* 說(shuō)明: 有關(guān)系統(tǒng)流程,請(qǐng)參看流程圖
***********************************************************************************************/
void main(void)
{
unsigned short current_AD; //當(dāng)前AD值
unsigned short current_weigh; //當(dāng)前輪重
unsigned char i;
unsigned char times; //時(shí)間計(jì)數(shù)
System_Init(); //系統(tǒng)初始化
display_data[0] = 0x8888;
display_data[1] = 0x8888;
display_data[2] = 0x8888;
Display(display_data,THREE); //檢測(cè)筆段顯示
Delay(1800,500); //延時(shí)5秒
My_Read(dema_force,DEMA_POINT_SIZE,FORCE_ADDRESS); //讀入制動(dòng)力標(biāo)定數(shù)據(jù)
My_Read(dema_weigh,DEMA_POINT_SIZE,WEIGH_ADDRESS); //讀入軸重標(biāo)定數(shù)據(jù)
Normal_Display(); //顯示正常態(tài)
Init_Tmr1();
Clear_Zero(dema_weigh, Adc_Adverage(WEIGH)); //調(diào)用清0函數(shù)
while(1){
Check_Key(); //標(biāo)定處理
if(Count_Force(dema_weigh, Adc_Adverage(WEIGH)) > 100){ //判斷軸重是否大于10Kg
di(); //取上位機(jī)命令,取之前關(guān)中斷,取后開(kāi)中斷
i = command;
ei();
if(i != NO_WEIGH){ //是否有無(wú)需檢測(cè)命令
display_weigh = 1; //顯示軸重全局變量為1
display_weigh = 0;
}
}
if(!ARRIVE){
// 前輪檢測(cè)踏板有效
di(); //取上位機(jī)命令,取之前關(guān)中斷,取后開(kāi)中斷
i = command;
ei();
if(i != NO_TRIG) //是否有無(wú)需檢測(cè)命令
Measure_Trig(FRONT); //檢測(cè)前輪制動(dòng)
}
if(!BACK_ARRIVE){
// 后輪檢測(cè)踏板有效
di();
i = command;
ei();
Measure_Trig(BACK); //檢測(cè)后輪制動(dòng)
}
if(TMR1IF){
Init_Tmr1();
++times;
if(times > 5){
times = 0; //刷新時(shí)間
current_AD = Adc_Adverage(WEIGH);
if(current_AD < dema_weigh[1])
{
current_AD = dema_weigh[1] + (dema_weigh[1] - current_AD);
}
current_weigh = Count_Force(dema_weigh, current_AD);
if((current_weigh > 0) && (current_weigh <= 2)) //當(dāng)前輪重小于0.1Kg,調(diào)整0點(diǎn)
Clear_Zero(dema_weigh, current_AD); //調(diào)用清0函數(shù)
}
}
}
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -