打印
[PIC®/AVR®/dsPIC®产品]

IO输出方波问题请教

[复制链接]
700|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
renyaq|  楼主 | 2023-1-8 11:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位大佬好。我采用AVR ATTINY24A单片机。做高、低电平delay的方式 用IO输出方波。但调delay值,不能改变占空比,是什么原因?同样的代码。在51中是可以的。谢谢!
代码如下:
void pwmout()
{
        unsigned char i=0;
        switch(i)
        {
                case 0:
                                                DDRB = 0x0F;
                                                PORTB = 0x01; //输出高
                                                delay(2000);
                                                i=1;
        
                case 1:
                                                DDRB = 0x0F;
                                                PORTB = 0x00; //输出高
                                                delay(1000);
                                                i=0;
                                                
                                       
        }
}

void delay(unsigned int z)
{
        unsigned int x,y;
        for(x=z;x>0;x--)
        for(y=110;y>0;y--);
}
请大佬们,指点一下原因。谢谢!

使用特权

评论回复
沙发
spark周| | 2023-1-8 11:19 | 只看该作者
也许是编译器优化太狠了,建议加 volatile ,加在delay里的变量定义前。

使用特权

评论回复
板凳
zhanghqi| | 2023-1-8 11:21 | 只看该作者
的确是这个原因

使用特权

评论回复
地板
huwr| | 2023-1-8 16:46 | 只看该作者
这个PWMOUT一下子没看懂,外部主程序一直调用这个函数?

使用特权

评论回复
5
huangchui| | 2023-1-8 16:48 | 只看该作者
不喜欢这样的风格,switch也不规范,也没见大循环。

使用特权

评论回复
6
supernan| | 2023-1-8 16:50 | 只看该作者
确实不规范,估计是大循环一直调用pwmout()。

使用特权

评论回复
7
heweibig| | 2023-1-8 16:52 | 只看该作者
不过注意pwmout()内 : unsigned char i=0; 这始终为0,能输出PWM就奇怪了。

使用特权

评论回复
8
wuhany| | 2023-1-8 16:55 | 只看该作者
按照楼主的意思,应该写成static unsigned char i=0;

使用特权

评论回复
9
lizye| | 2023-1-8 16:57 | 只看该作者
还是你眼睛亮,没有break确实能输出PWM

使用特权

评论回复
10
liliang9554| | 2023-1-8 17:00 | 只看该作者
没有break,所有后面的case 1也执行,就有pwm了

使用特权

评论回复
11
renyaq|  楼主 | 2023-1-8 17:04 | 只看该作者
的确是在大循环一直调用pwmout(), 菜鸟只能想到这个思路了。不知道怎么写才算规范,还望大佬指点。十分感谢!

使用特权

评论回复
12
renyaq|  楼主 | 2023-1-8 17:06 | 只看该作者
谢谢大佬指点。菜鸟第一次做一个量产用的程序,以前51玩过一点,AVR第一次接触。本来想用外部中断+定时器做PWM输出,无奈目前还不会。欢迎大佬教导。

使用特权

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

本版积分规则

700

主题

10138

帖子

4

粉丝