实用文档之51单片机脉冲产生程序设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实用文档之"独立键盘控制输出脉冲信号"
用51单片机用独立键盘控制输出4种频率:1Hz、2Hz、10Hz、50Hz,占空比为50%的脉冲信号。
#include
#define uint unsigned int
#define uchar unsigned char
sbit d0=P1^0;
sbit d1=P3^2;
uint num=0,counter=0;
void delay(uint x)
{
uint i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
void main()
{
d1=1;
d0=1;
d2=1;
num=0;
IT0=1;
EX0=1;
TMOD=0x01;
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
EA=1;
ET0=1;
TR0=1;
while(1)
{
}
}
void Int0() interrupt 0
{
delay(10);
if(d1==0)
{
d1=1;
num++;
if(num==4)
num=0;
counter=0;
}
}
void Timer0(void) interrupt 1 {
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
counter++;
if(num==0)
{
if(counter<=500)
d0=0;
if(counter>500)
d0=1;
if(counter==1000)
counter=0;
}
if(num==1)
{
if(counter<=250)
d0=0;
if(counter>250)
d0=1;
if(counter==500)
counter=0;
}
if(num==2)
{
if(counter<=50)
d0=0;
if(counter>50)
d0=1;
if(counter==100)
counter=0;
}
if(num==3)
{
if(counter<=10)
d0=0;
if(counter>10)
d0=1;
if(counter==20)
counter=0;
}
}