机器人教程1:如何利用51单片机输出PWM波
因为这里我们是产生周期为1ms(1000HZ)的PWM,所以可设置中断的时间间隔为0.01ms,,然后中断100次即为1ms。在中断子程序内,可设置一个变量如time,在中断子程序内,有三条重要的语句:1、当time>=100时,time清零(此语句保证频率为1000HZ),2、当time> if(time> if(time> for(y=z;x> for(y=110;y> if(count> if(count> if(time> if(time> bit PWM1=P2^0;//接IN1控制正转 sbit PWM2=P2^1;//接IN2控制反转 sbit PWM3=P2^2;//接IN3控制正转 sbit PWM4=P2^3;//接IN4控制反转 sbit PWM5=P2^4;//接IN3控制正转 sbit PWM6=P2^5;//接IN4控制反转 sbit PWM7=P2^6;//接IN3控制正转 sbit PWM8=P2^7;//接IN4控制反转 uchar time; void main() { TMOD=0x01;//定时器0工作方式1 TH0=0xff;//(65536-10)/256;//赋初值定时 TL0=0xf7;//(65536-10)%256;//0.01ms EA=1;//开总中断 ET0=1;//开定时器0中断 TR0=1;//启动定时器0 while(1) { } } void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=500;y>0;y--); } void tim0() interrupt 1 { TR0=0;//赋初值时,关闭定时器 TH0=0xff;//(65536-10)/256;//赋初值定时 TL0=0xf7;//(65536-10)%256;//0.01ms TR0=1;//打开定时器 time++; if(time>=100) time=0;//1khz PWM2=0; PWM4=0; if(time<=75) PWM1=1; else PWM1=0; if(time<=80) PWM3=1; else PWM3=0; PWM6=0; PWM8=0; if(time<=50) PWM5=1; else PWM5=0; if(time<=50) PWM7=1; else PWM7=0; }
机器人教程51单片机输出PWM 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)