×
单片机 > 单片机程序设计 > 详情

51单片机pwm调速调光程序

发布时间:2021-01-21 发布时间:
|

#include"reg52.h"
typedef unsigned char uchar;
typedef unsigned int uint;
sbit ENA=P0^0;
sbit IN1=P0^1;
sbit IN2=P0^2;
sbit IN3=P0^3;
sbit IN4=P0^4;
sbit ENB=P0^5;
uint k,j;
#define OFF ENA=0;ENB=0;
#define ON ENA=1;ENB=1;
#define LEDL(key) P2&=(0xfe<#define LEDH(key) P2|=(0x01<#define QX(x,y) IN1=x,IN2=y;
#define QY(x,y) IN3=x,IN4=y;
void main()              
{                
void init();                 //初始化定时器
void LEDOM();            //流水灯函数声明
void daley(uint,uint);          //延时函数声明
void (*p)(uint,uint);          //定义一个(uint,uint)的函数指针
void OL_bt(uint x,uint y);          //PWM调制函数声明
p=OL_bt;
QX(1,0);
QY(1,0);
init();
while(1)
{
  LEDOM(); 
  (*p)(1000,100);
}
}
void init()                       //定时器中断初始化
{
  TMOD=0x01;                                    //设置定时器0为工作方式1
  EA=1;                                         //开总中断
  ET0=1; 
TR0=1;                                       //定时器0中断允许        
}
OStime() interrupt 1
{
static char n;
if(n==0)
{
  OFF;
  TH0=(65536-j)/256;
  TL0=(65536-j)%256;
  n=1; 
  return;
}
if(n==1)
{
  ON;
     TH0 = (65536-k)/256;                     
     TL0 = (65536-k)%256;
     n=0;
  return;
}    
}
void OL_bt(uint x,uint y)             //改变x,y的值来改变PWM来调速 x增大y减小速度减小  x减小y增大速度增大
{
k=y;
j=x;
}
void daley(uint x,uint y)
{
uint a,b;
for(a=x;a>0;a--)
  for(b=y;b>0;b--);
}
void LEDOM()
{
LEDL(0);
daley(100,100);
LEDL(1);
daley(100,100);
LEDL(2);
daley(100,100);
LEDL(3);
daley(100,100);
LEDL(4);
daley(100,100);
LEDL(5);
daley(100,100);
LEDL(6);
daley(100,100);
LEDL(7);
daley(100,100);
LEDH(0);
daley(100,100);
LEDH(1);
daley(100,100);
LEDH(2);
daley(100,100);
LEDH(3);
daley(100,100);
LEDH(4);
daley(100,100);
LEDH(5);
daley(100,100);
LEDH(6);
daley(100,100);
LEDH(7);
daley(100,100);
}     



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
MSP430F5529 上手小例程2