📄 pc-51-keil.c
字号:
#include "reg51.h"
#define uchar unsigned char
sbit motor=P3^3;
uchar pulse=9;
uchar spead=0;
uchar spead_temp=0;
uchar cgf2[15]={0x0c0,0x0f9,0x0A4,0X0B0,0x99,0x92,0x82,0x0F8,0x80,0x90};
//数码管显示字型表
uchar code cgf1[10][20]={"电机低速运行","第1级火力","第2级火力","第3级火力","第4级火力","第5级火力","第6级火力","第7级火力","第8级火力","电机全速运行"};
void timer0(void) interrupt 1
{
TR0=0;
TH0=0X0ff;
TL0=0x0e5; //40US
if(--spead==0) {spead=spead_temp;motor=1;}
if(--pulse==0) {pulse=9;motor=0;spead=spead_temp;}
TR0=1;
}
void main(void)
{
uchar i,k=0;
uchar temp=0;
i=0;
EA=1;
TH0=0X0ff;
TL0=0x0e5; //40US
PCON=0X80;
TMOD=0X21;
ET0=1;
TH1=0X0F7;TL1=0X0F7; //4200
TR1=1;
//TR0=1;
SCON=0X50;
motor=1;
P1=0X0C0;
while(1) //循环
{
RI=0;
while(!RI) //RI=0等待
{if(spead_temp==0) {TR0=0;motor=1;}} //此句放在这里最好,保证0级火力一定能关机
i=SBUF; //RI=1存入数据
i=i&0x0f; //保留低四位
if((i==2||i==1)&&temp==0) //当电机从无运行到一级火力时,开关来一个PULSE启动
{
TH0=0X0f5;
TL0=0x0; //pulse
}
temp=i;
spead=i; //速度值送spead
spead_temp=spead; //存入TEMP中
if(spead!=0) {TR0=1;motor=0;pulse=9;}
if(spead_temp==0) {TR0=0;motor=1;}
P1=cgf2[i]; //查字型表送P1显示
RI=0; //清RI
TI=0;
for(k=0;k<=19;k++)
{
SBUF=cgf1[i][k]; //取cgf1字符串中第i个字符发送
while(!TI);
TI=0;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -