AD转换控制单片机的PWM占空比

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include
#define uchar unsigned char
#define uint unsigned int
sbit CLK =P2^4;
sbit ST=P2^5;
sbit EOC=P2^6;
sbit OE=P2^7;
sbit PWM=P3^0;
//延时
void Delay(uchar x)
{
uchar i;
while(x--)
for(i=0;i<10;i++);
}
void main()
{
uchar Val;
TMOD=0x02;//定时器T0工作于方式2自动重装8位计数器
TH0=0x9b;
TL0=0x00;
IE=0x82; //允许T0中断
TR0=1; //启动定时器
while(1)
{
ST=0;ST=1;ST=0; //启动A/D转换
while(!EOC); //等待转换完成
OE=1;
Val=P1; //读取转换结果
OE=0;
if(Val==0) //PWM输出占空比为0
{
PWM=0;
Delay(0xff);
continue;}
if(Val==0xFF) // PWM输出占空比为100%
{
PWM=1;
Delay(0xff);
continue;
}
PWM=1;
Delay(Val); //PWM输出占空比
PWM=0;
Delay(0xff-Val);
}
}
//--------------------------------
//T0定时器中断给ADC0808提供时钟信号
//---------------------------------
void Timer0_INT() interrupt 1
{
CLK=!CLK; //ADC0808时钟

相关文档
最新文档