資源簡介
用51單片機控制舵機,按鍵實現左轉、右轉及歸位,程序風格采用 化為公司 標準,整潔易讀。
代碼片段和文件信息
/***********************************************************
版權所有 :河池學院創新實訓中心(2/3),劉歡(1/3)
程序功能 :舵機控制
生成日期 :2009年10月30日?星期五
作 者 :劉歡
聯系方式??:(QQ)281638360??(MSN)sundayboy@live.cn
說 明 :51單片機控制舵機,按鍵實現左轉、右轉及歸位
????????????占用定時/計數器1
************************************************************/
#include?
#define?Stop?0????//宏定義,停止
#define?Left?1 ??//宏定義,左轉
#define?Right?2 ??//宏定義,右轉
sbit?ControlPort?=?P1^0;??//舵機信號端口
sbit?KeyLeft?=?P1^1; ??//左轉按鍵端口
sbit?KeyRight?=?P1^2; ??//右轉按鍵端口
sbit?KeyStop?=?P1^3; ??//歸位按鍵端口
unsigned?char?TimeOutCounter?=?0LeftOrRight?=?0;??//TimeOutCounter:定時器溢出計數 ??LeftOrRight:舵機左右旋轉標志
void?InitialTimer?(?void?) ?
{
????TMOD=0x10;???//定時/計數器1工作于方式1
????TH1?=?(?65535?-?500?)?/?256; ??//0.25ms
TL1?=?(?65535?-?500?)?%?256;
????EA=1;????????//開總中斷
????ET1=1;???????//允許定時/計數器1?中斷
????TR1=1;???????//啟動定時/計數器1?中斷
}
void?ControlLeftOrRight?(?void?)???//控制舵機函數
{
if(?KeyStop?==?0?)
{
while?(?!KeyStop?); ???//使標志等于Stop(0),在中斷函數中將用到
LeftOrRight?=?Stop;
}
if(?KeyLeft?==?0?)
{
while?(?!KeyLeft?); ???//使標志等于Left(1),在中斷函數中將用到
LeftOrRight?=?Left;
}
if(?KeyRight?==?0?)
{
while?(?!KeyRight?);???//使標志等于Right(2),在中斷函數中將用到
LeftOrRight?=?Right;
}
}
void?main?(?void?) ?//主函數
{
????InitialTimer();
for(;;)
{
ControlLeftOrRight();
}
}
void?Timer1?(?void?)?interrupt?3??//定時器中斷函數
{
????TH1?=?(?65535?-?500?)?/?256;
TL1?=?(?65535?-?500?)?%?256;
TimeOutCounter?++;
switch?(?LeftOrRight?)
{
case?0?: ??//為0時,舵機歸位,脈寬1.5ms
{
if(?TimeOutCounter?<=?6?)
{
ControlPort?=?1;
}
else?
{
ControlPort?=?0;
}
break;
}
case?1?:?????//為1時,舵機左轉,脈寬1ms(理論值),實際可以調試得出
{
if(?TimeOutCounter?<=?2?)
{
ControlPort?=?1;
}
else?
{
ControlPort?=?0;
}
break;
}
case?2?:???//為2時,舵機右轉,脈寬2ms(理論值),實際可以調試得出
{
if(?TimeOutCounter?<=?10?)
{
ControlPort?=?1;
}
else?
{
ControlPort?=?0;
}
break;
}
default?:?break;
}
if(?TimeOutCounter?==?80?) ?//周期20ms(理論值),比較可靠,最好不要修改
{
TimeOutCounter?=?0;
}
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????6376??2009-10-30?22:30??舵機控制\STARTUP.A51
?????文件??????10722??2009-10-30?22:30??舵機控制\STARTUP.LST
?????文件????????750??2009-10-30?22:30??舵機控制\STARTUP.OBJ
?????文件???????4044??2009-10-30?22:30??舵機控制\SteeringEngineControl
?????文件???????2481??2009-10-30?22:30??舵機控制\SteeringEngineControl.c
?????文件????????869??2009-10-30?22:30??舵機控制\SteeringEngineControl.hex
?????文件?????????90??2009-10-30?22:30??舵機控制\SteeringEngineControl.lnp
?????文件???????6201??2009-10-30?22:30??舵機控制\SteeringEngineControl.LST
?????文件???????8242??2009-10-30?22:30??舵機控制\SteeringEngineControl.M51
?????文件???????3920??2009-10-30?22:30??舵機控制\SteeringEngineControl.OBJ
?????文件???????1062??2009-10-30?22:31??舵機控制\SteeringEngineControl.Opt
?????文件????????430??2009-10-30?22:31??舵機控制\SteeringEngineControl.plg
?????文件???????2207??2009-10-30?20:53??舵機控制\SteeringEngineControl.Uv2
????.......??????1060??2009-10-30?22:30??舵機控制\SteeringEngineControl_Opt.Bak
?????文件???????2206??2009-10-30?20:49??舵機控制\SteeringEngineControl_Uv2.Bak
?????目錄??????????0??2009-10-30?22:31??舵機控制
-----------?---------??----------?-----??----
????????????????50660????????????????????16
評論
共有 條評論