📄 dcpfm.cpp
字号:
//PFM.CPP
#include<dos.h>
#include<conio.h>
#include<stdio.h>
char *title="Test dc motor use PFM method";
#define PC 0x302
#define CR 0x303
void rotate();
void rotate2();
void rotate4();
void rotate8();
void main()
{
char ch;
outportb(CR,0x90);
outportb(PC,0xff);
clrscr();
puts(title);
puts("1------>100% duty cycle");
puts("2------>50% duty cycle");
puts("3------>25% duty cycle");
puts("4------>12% duty cycle");
puts("5------>exit");
while(1)
if(kbhit())
{
ch=getch();
switch(ch)
{
case '1': rotate();
break;
case '2': rotate2();
break;
case '3': rotate4();
break;
case '4': rotate8();
break;
case '5': return ;
default:break;
}
}
outportb(PC,0xff);
}
/*-----------------------------------*/
void rotate8()/*1/8 duty cycle*/
{
int c,i,ti=50;
gotoxy(10,10);
printf("duty: 12% ");
for(c=0;c<10;c++)
{
outportb(PC,0);
delay(ti);
for(i=0;i<8;i++)
{ outportb(PC,1);
delay(ti);
}
}
}
/*-----------------------------------*/
void rotate4()/*1/4 duty cycle*/
{
int c,i,ti=50;
gotoxy(10,10);
printf("duty: 25%");
for(c=0;c<10;c++)
{
for(i=0;i<2;i++)
{
outportb(PC,0);
delay(ti);
for(i=0;i<3;i++)
{ outportb(PC,1);
delay(ti);
}
}
}
}
/*-----------------------------------*/
void rotate2()/*1/2 duty cycle*/
{
int c,i,ti=50;
gotoxy(10,10);
printf("duty: 50%");
for(c=0;c<10;c++)
{
for(i=0;i<4;i++)
{
outportb(PC,0);
delay(ti);
outportb(PC,1);
delay(ti);
}
}
}
/*-----------------------------------*/
void rotate()/*100% duty cycle*/
{
int c,i,ti=50;
gotoxy(10,10);
printf("duty:100%");
for(c=0;c<10;c++)
{
for(i=0;i<8;i++)
{
outportb(PC,0);
delay(ti);
outportb(PC,1);
delay(ti);
}
}
outportb(PC,1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -