已知单片机主频12MHZ,在P1.2口输出频率150HZ,用定时器1中断方式,(占空比通过按键调节
答案:3 悬赏:0 手机版
解决时间 2021-12-30 22:44
- 提问者网友:且恨且铭记
- 2021-12-30 11:16
已知单片机主频12MHZ,在P1.2口输出频率150HZ,用定时器1中断方式,(占空比通过按键调节)
最佳答案
- 五星知识达人网友:逐風
- 2021-12-30 12:20
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit pulse=P1^2;
sbit keyup=P1^0,
sbit keydn=P1^1;
uint high,low;
bit flag=0;
void t1isr() interrupt 3
{
pulse=~pulse;
flag=~flag;
if(flag)
{
TH1=(65536-3333*low/100)/256;
TL1=(65536-3333*low/100)%256;
}
else
{
TH1=(65536-3333*high/100)/256;
TL1=(65536-3333*high/100)%256;
}
}
main()
{
TMOD=0x10;
high=50;
low=50;
TH1=(65536-3333*high/100)/256;
TL1=(65536-3333*high/100)%256;
TR1=1;
ET1=1;
EA=1;
while(1)
{
if(keyup==0)
{
while(keyup==0);
high++;
if(high>99)high=99;
low=100-high;
}
if(keydn==0)
{
while(keydn==0);
high--;
if(high<1)high=1;
low=100-high;
}
}
}
#define uchar unsigned char
#define uint unsigned int
sbit pulse=P1^2;
sbit keyup=P1^0,
sbit keydn=P1^1;
uint high,low;
bit flag=0;
void t1isr() interrupt 3
{
pulse=~pulse;
flag=~flag;
if(flag)
{
TH1=(65536-3333*low/100)/256;
TL1=(65536-3333*low/100)%256;
}
else
{
TH1=(65536-3333*high/100)/256;
TL1=(65536-3333*high/100)%256;
}
}
main()
{
TMOD=0x10;
high=50;
low=50;
TH1=(65536-3333*high/100)/256;
TL1=(65536-3333*high/100)%256;
TR1=1;
ET1=1;
EA=1;
while(1)
{
if(keyup==0)
{
while(keyup==0);
high++;
if(high>99)high=99;
low=100-high;
}
if(keydn==0)
{
while(keydn==0);
high--;
if(high<1)high=1;
low=100-high;
}
}
}
全部回答
- 1楼网友:野慌
- 2021-12-30 14:35
#include
#define uchar unsigned char
sbit pulse=p1^1;
bit flag=0;
void t1isr() interrupt 3
{
pulse=~pulse;
flag=~flag;
if(flag)
{
th1=(65536-7500)/256;
tl1=(65536-7500)%256;
}
else
{
th1=(65536-2500)/256;
tl1=(65536-2500)%256;
}
}
main()
{
tmod=0x10;
th1=(65536-2500)/256;
tl1=(65536-2500)%256;
tr1=1;
et1=1;
ea=1;
while(1);
}
- 2楼网友:你哪知我潦倒为你
- 2021-12-30 13:23
直接要代码的?
给你点提示吧
1。初始化定时器1,初始值10毫秒;
2。定义2个变量,一个用于保存高电平持续时间A,一个用于保存低电平持续时间B;
3。定时器启动之后,拉高p1.2口输出高电平,定时器数据开始增加到A时,把p1.2端口拉低,并将计数器总数清零,然后等计数器数据到达B时,再把端口p1.2拉高,如此循环就能得到你要的pwm;
4。做一个按键程序,用于调整高低电平时间,来修改A,B数据;
5。A+B=1/150秒。(这个应该不难理解吧)
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯