- 1
- 0
- 约9.15千字
- 约 12页
- 2026-01-15 发布于北京
- 举报
附录1直流电机控制系统程序
#includereg51.h//包含单片机寄存器的头文件
#includeintrins.h//包含_nop_()函数定义的头文件
#defineucharunsignedchar
#defineuintunsignedint
sbitS1=P1^2;//位定义S1为P1.2
sbitS2=P1^3;//位定义S2为P1.3
sbitS3=P1^4;//位定义S3为P1.4
sbitK1=P2^4;//位定义K1为P2.4
sbitK2=P2^5;//位定义K2为P2.5
sbitK3=P2^6;//位定义K3为P2.6
sbitK4=P2^7;//位定义K3为P2.7
sbitRS=P2^0;//寄存器选择位,将RS位定义为P2.0引脚
sbitRW=P2^1;//读写选择位,将RW位定义为P2.1引脚
sbitE=P2^2;//使能信号位,将E位定义为P2.2引脚
sbitBF=P0^7;//忙碌标志位,,将BF位定义为P0.7引脚
/********************************************************
PC向单片机发送数据的串口程序
********************************************************/
unsignedcharReceive(void)
{
unsignedchardat;
while(RI==0)//只要接收中断标志位RI没有被置“1”
;//等待,直至接收完毕(RI=1)
RI=0;//为了接收下一帧数据,需将RI清0
dat=SBUF;//将接收缓冲器中的数据存于dat
returndat;
}
/*****************************************************
函数功能:延时1ms
(3j+2)*i=(3×33+2)×10=1010(微秒),可以认为是1毫秒
***************************************************/
voiddelay1ms()
{
unsignedchari,j;
for(i=0;i10;i++)
for(j=0;j33;j++)
;
}
/*****************************************************
函数功能:延时若干毫秒
参数:n
***************************************************/
voiddelay(unsignedcharn)
{
unsignedchari;
for(i=0;in;i++)
delay1ms();
}
/*****************************************************
函数功能:判断液晶模块的忙碌状态
返回值:result。result=1,忙碌;result=0,不忙
***************************************************/
unsignedcharBusyTest(void)
{
bitresult;
RS=0;//根据规定,RS为低电平,RW为高电平时,可以读状态
RW=1;
E=1;//E=1,才允许读写
_nop_();//空操作
_nop_();
_nop_();
_nop_();//空操作四个机器周期,给硬件反应时间
result=BF;//将忙碌标志电平赋给result
E=0;
returnresult;
}
/****************************************************
原创力文档

文档评论(0)