10.
P1MDOUT |=0x3C;
//P1.2-P1.5
推挽输出
11.
P1 &= 0xc3;
//P1.2-P1.5=0
12.
3、定时器 0 初始化,定时时间为 1ms
1.
void
Timer0_Init (
void
)
2.
{
3.
CKCON|=0x8;
4.
TMOD|=0x1;
//16
位
5.
Count1ms=10;
6.
TR0 = 0;
//停止定时器 0
7.
TH0 = (-SYSCLK/1000) >> 8;
//设初值,1ms
时溢出
8.
TL0 = -SYSCLK/1000;
9.
TR0 = 1;
//开启定时器 0
10.
IE|= 0x2;
11.
}
4、Timer0 中断:
1.
void
Timer0_ISR (
void
) interrupt 1
2.
{
3.
TH0 = (-SYSCLK/1000) >> 8;
4.
TL0 = -SYSCLK/1000;
5.
if
(Count1ms)
6.
{
7.
Count1ms--;
8.
}
9.
if
(Count1s)
10.
{
11.
Count1s--;
//Count1s 初值为 1000
12.
}
13.
else
14.
{
15.
Count1s=1000;
16.
SaveMotorCount=MotorCount;
//MotorCount 为测得每秒脉冲个数
17.
MotorCount=0;
18.
SD=SaveMotorCount/2-SetSpeed;
//常量 SetSpeed 的值为转速的预设值,
单位为转/
秒
19.
SaveMotorCount*=30;
//转/
分
20.
if
(SD)