打印

模拟PCA的PWM功能

[复制链接]
806|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
pguangchun|  楼主 | 2015-5-30 11:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
要求用一个按键控制管脚P10输出的占空比可调,但是运行下面的程序发现,占空比是可以调整,但是每次按键按下不放的时候,P10会不定性的变为高电平或低电平,请问是怎么回事?
#include<stc15.h>

#define uint unsigned int

sbit key1=P2^1;

sbit LED1=P1^0;

uint n,pwm;

void delay(uint z)
{
        uint i,j;
        for(i=0;i<100;i++)
                for(j=0;j<z;j++);
}

void initial()//初始化程序
{
        LED1=1;

        TMOD=0x02;//8位自动重装
        TH0=240;
        TL0=240;

        ET0=1;
        EA=1;
        TR0=1;
}

void key_scan()//按键扫描程序
{
        if(key1==0)
        {
                delay(10);
                if(key1==0)
                {
                        while(!key1);
                        pwm=pwm+5;
                        if(pwm>255)
                        {
                                pwm=0;
                        }
                }
        }
}

void key_service()//按键服务程序
{
        if(n>=pwm)
                {
                        LED1=0;
                }
        else
                {
                        LED1=1;
                }
}

void main()
{
        initial();
        while(1)
        {
                key_scan();
                key_service();
        }
}

void timer0() interrupt 1
{
        ET0=0;
        n++;
        if(n>255)
        {
                n=0;
        }
        ET0=1;
}

相关帖子

沙发
pguangchun|  楼主 | 2015-6-5 07:53 | 只看该作者
修该了一下,吧按键服务程序放到中断程序中就可以了。

使用特权

评论回复
板凳
ningling_21| | 2015-6-5 08:11 | 只看该作者
这样按键扫描的效率比较低

使用特权

评论回复
地板
pguangchun|  楼主 | 2015-6-5 08:27 | 只看该作者
请问如何修改比较好,谢谢指教!

使用特权

评论回复
5
ningling_21| | 2015-6-5 09:38 | 只看该作者
pguangchun 发表于 2015-6-5 08:27
请问如何修改比较好,谢谢指教!

放在定时中断中扫描按键,去掉延时肖豆

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

18

帖子

1

粉丝