#include <pic.h>
#define MOTOR RB2
void DELAY(unsigned int);
main(void)
{char A;
MOTOR=0;
OPTION=0b00000000; //设定RB0为下降沿中断
TRISB=0b00000001; //设定RB0为输入,RB2为输出
TRISD=0b00000000; //PORTD全为输出口
A=0b00000001;
PORTD=A; //PORTD的第0位LED亮
INTCON=0; //禁止中断
while(1)
{
if (RB0==1) //每隔100ms,检测一下开关S1的状态
MOTOR=0; //S1断开时RB0为高电平,让电机停
else
MOTOR=1; //S1合上时RB0为低电平,让电机转
DELAY(200);
A=A<<1;
if (A==0)
A=0b00000001; //当最高位亮后,从最低位循环重复
PORTD=A; //LED轮流亮
}
}
//======延时(n)ms
void DELAY(unsigned int n)
{
unsigned int j;
char k;
for (j=0;j<n;j++)
for (k=246;k>0;k--)
NOP();
}
|