資源簡介
4窗防夾電動車窗控制。含原理圖。非常不錯的參考實例,軟件硬件設計者的典范。

代碼片段和文件信息
#ifndef?_DIS_C_
#define?_DIS_C_
#include?“global.h“
void?fEnDistinguishDriverMotorType(void)
{
rEnTimer2?|=?bEnTimer2ForDM;?
rTimer2CounterForDM?=?0x3f;
if(~rEnTimer2?&?bEnTimer2?)
{
fInitialTimer2();
TMR2ON?=?1; //start?to?increment.
rEnTimer2?|=?bEnTimer2;
}
}
void?fInitialTimer2(void)
{
T2CON?=?0;?? //stop?timer2
? TMR2?=?0; //clear?timer2?register
PR2?=?TMR2?+?125; //?1ms
PEIE?=?1;
TMR2IE?=?1;
TMR2IF?=?0;
? T2CKPS1?=?1; //prescale??1/16
}
void?fTimer2InterruptSeviceRoutine(void)
{
PR2?=?TMR2?+?125; //?1ms
bHavePassed1ms?=?1;
TMR2IF?=?0; //?Clr?interrupt?flag?ready?for?next
}
void?fTimer2ISR(void)
{
if(bHavePassed1ms)
{
bHavePassed1ms?=?0;
if( rEnTimer2?&?bEnTimer2ForDM)
fDisDriverMotorType();
/*
if(rEnDisLoadType?&?bEnDisFrontMotor)
fDisFrontMotorType();
if(rEnDisLoadType?&?bEnDisRearLeftMotor)
fDisRearLeftMotorType();
if(rEnDisLoadType?&?bEnDisRearRightMotor)
fDisRearRightMotorType();
*/
if(?~rEnTimer2?&?(?bEnTimer2ForDM?+?bEnTimer2ForFM?
+?bEnTimer2ForLM?+?bEnTimer2ForRM?))
{
TMR2ON?=?0;
rEnTimer2?&=?~bEnTimer2;
}
}
}
void?fDisDriverMotorType(void)
{
unsigned?char?vADResult;
unsigned?char?vStep;
unsigned?char?vTimer;
unsigned?char?vAddress;
unsigned?int?vValue;
unsigned?char?vPeak;
unsigned?char?vMean;
/*
+--------------------+----+----+----+----+----+----+----+----+
|rTimer2CounterForDM?|???Step??|?BufferAddress|?TimerCounter?|???
+--------------------+----+----+----+----+----+----+----+----+
*/
vStep?=?rTimer2CounterForDM?>>?6;
vTimer?=?rTimer2CounterForDM?&?0x07;
vAddress?=?rTimer2CounterForDM?&?0b00111000;?
vAddress?>>=?3;
if(?vStep?==?mStepNoAction)
{
if(vTimer)
{
fItlADC();
vADResult?=?fADConverter(AD_DrM);
if( vADResult?>?mThreshold)
{
rBufferForDM[vAddress]?=?vADResult;
vStep?=?mStepRise;
rTimer2CounterForDM?=?0x37?;? //vAddress?=?6;
rTimer2CounterForDM?|=? vStep?<6;
}
rTimer2CounterForDM--;
}
else //if?the?value?all? {
;
;
;
;
;
;
}
}
if(?vStep?==??mStepRise)
{
fItlADC();
vADResult?=?fADConverter(AD_DrM);
rBufferForDM[vAddress]?=?vADResult;
if(vAddress)
{
rTimer2CounterForDM?-=?0x8; //vaddress?-?1;?
? ? }
else
{
vValue?=?fGetAverageAndMaxFromBuffer(rBufferForDM);
vPeak?=?vValue;
vMean?=?vValue?>>?8;
//?add?code
vStep?=?mStepFall;
rTimer2CounterForDM?&=?0x3f?;?//vAddress?=?7;vTimer?=?7;
rTimer2CounterForDM?|=? vStep?<6;
}
}
if(?vStep?==??mStepFall)
{
if(vTimer)
{
vTimer--;
}
else
{
fItlADC();
vADResult?=?fADConverter(AD_DrM);
rBufferForDM[vAddress]?=?vADResult;
if(vAddress)
{
vAddress--;
vAddress?=?0x07?<<
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????70764??2007-05-16?08:28??powerwindow\4965001?200705?schematic.pdf
?????文件???????3061??2007-06-06?08:09??powerwindow\configuration.h
?????文件???????4147??2007-06-07?11:54??powerwindow\distinguish.c
?????文件???????3070??2007-06-06?08:43??powerwindow\distinguish.h
?????文件????????284??2007-06-04?09:05??powerwindow\global.h
?????文件???????2432??2007-05-29?16:52??powerwindow\initial.c
?????文件????????482??2007-04-09?10:50??powerwindow\initial.h
?????文件????????951??2007-06-06?09:02??powerwindow\interrupt.c
?????文件????????236??2007-06-04?08:48??powerwindow\Interrupt.h
?????文件??????22723??2007-06-04?09:07??powerwindow\key.c
?????文件???????5599??2007-06-06?08:56??powerwindow\key.h
?????文件????????737??2007-06-08?14:19??powerwindow\main.c
?????文件???????1027??2007-06-06?08:51??powerwindow\main.h
?????文件???????4075??2007-05-25?13:44??powerwindow\motor.c
?????文件???????2313??2007-06-06?08:47??powerwindow\motor.h
?????文件????????791??2007-05-23?11:34??powerwindow\portb.c
?????文件????????389??2007-06-04?09:03??powerwindow\portb.h
?????文件???????1860??2007-05-23?16:23??powerwindow\rtos.c
?????文件????????458??2007-06-06?08:45??powerwindow\rtos.h
?????文件???????2133??2007-06-06?08:16??powerwindow\typedef.h
?????目錄??????????0??2009-02-25?19:51??powerwindow
-----------?---------??----------?-----??----
???????????????127750????????????????????22
- 上一篇:node+js頁面樂觀鎖幀同步
- 下一篇:Google地圖API接口
評論
共有 條評論