单片机 PWM输出 c
生活随笔
收集整理的這篇文章主要介紹了
单片机 PWM输出 c
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
#include<reg52.h>
#include<intrins.h> ?//包含_nop_(),匯編中的子函數(shù)
#define uchar unsigned char
sbit PWM=P1^0; ? ? ?//PWM輸出
uchar count,PWMH; ? //count組波計數(shù),PWMH設(shè)置高低擋
void delay(uchar i) ?//延時100us,和定時器組波無光,可自己隨意定義
{
uchar j;
for(;i>0;i--)
{
for(j=100;j>0;j--)
{
_nop_(); ? //一個機器周期;
}
}
}
void timer0() interrupt 1
{
if(PWMH==0) ? ? ? ?//0檔,全0
? PWM=0;
else if(PWMH==10) ?//1檔,全1
? PWM=1;
else ? ? ? ? ? ? ? //組波
? ? {
if(count++<PWMH) //舉例PWMH=1,則第一次count=0(然后就++);執(zhí)行一次(即只能進入中斷一次);以后則為0
PWM=1;
else
? ?PWM=0;
if(count>=10) ? ?//count=10,即為到了一個周期,重新計數(shù)
? ?count=0;
}
}
void main()
{
TMOD=0x02; ?//工作方式2(自動再裝入,預(yù)置數(shù)方式) ??
TL0=265-100; //低八位放初值;高八位放預(yù)置數(shù);定時100次
TH0=265-100; //八位寄存器,故為265
count=0;
PWMH=0;
TR0=1; ? //啟動定時器1
ET0=1; ?//定時器0中斷允許
EA=1; ?//cpu中斷允許
while(1)
{
PWMH=0;
delay(200); //延時20ms
PWMH=1;
delay(200);
? ?PWMH=2;
delay(200);
PWMH=3;
delay(200);
PWMH=4;
delay(200);
PWMH=5;
delay(200);
? ?PWMH=6;
delay(200);
PWMH=7;
delay(200);
PWMH=8;
delay(200);
PWMH=9;
delay(200);
PWMH=10;
delay(200);
}
}
#include<intrins.h> ?//包含_nop_(),匯編中的子函數(shù)
#define uchar unsigned char
sbit PWM=P1^0; ? ? ?//PWM輸出
uchar count,PWMH; ? //count組波計數(shù),PWMH設(shè)置高低擋
void delay(uchar i) ?//延時100us,和定時器組波無光,可自己隨意定義
{
uchar j;
for(;i>0;i--)
{
for(j=100;j>0;j--)
{
_nop_(); ? //一個機器周期;
}
}
}
void timer0() interrupt 1
{
if(PWMH==0) ? ? ? ?//0檔,全0
? PWM=0;
else if(PWMH==10) ?//1檔,全1
? PWM=1;
else ? ? ? ? ? ? ? //組波
? ? {
if(count++<PWMH) //舉例PWMH=1,則第一次count=0(然后就++);執(zhí)行一次(即只能進入中斷一次);以后則為0
PWM=1;
else
? ?PWM=0;
if(count>=10) ? ?//count=10,即為到了一個周期,重新計數(shù)
? ?count=0;
}
}
void main()
{
TMOD=0x02; ?//工作方式2(自動再裝入,預(yù)置數(shù)方式) ??
TL0=265-100; //低八位放初值;高八位放預(yù)置數(shù);定時100次
TH0=265-100; //八位寄存器,故為265
count=0;
PWMH=0;
TR0=1; ? //啟動定時器1
ET0=1; ?//定時器0中斷允許
EA=1; ?//cpu中斷允許
while(1)
{
PWMH=0;
delay(200); //延時20ms
PWMH=1;
delay(200);
? ?PWMH=2;
delay(200);
PWMH=3;
delay(200);
PWMH=4;
delay(200);
PWMH=5;
delay(200);
? ?PWMH=6;
delay(200);
PWMH=7;
delay(200);
PWMH=8;
delay(200);
PWMH=9;
delay(200);
PWMH=10;
delay(200);
}
}
總結(jié)
以上是生活随笔為你收集整理的单片机 PWM输出 c的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: NFS mount failed, re
- 下一篇: while(1); 作用