找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1528|回复: 2
打印 上一主题 下一主题
收起左侧

按键调节pwm波的占空比,但是仿真的时候按键不能控制占空比,不懂问题出在哪里,求...

[复制链接]
跳转到指定楼层
楼主
ID:682942 发表于 2020-1-19 11:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <mega16.h>
#include <delay.h>

unsigned char temp1;
   interrupt [INT0] void int0_isr(void)
{
   if(OCR0<0xFF)
  temp1+=5;  //占空比增加
  delay_ms(100);
   }


interrupt [INT1] void int1_isr(void)
{
   if(OCR0>0x63)
   temp1-=5;   //占空比减少
   delay_ms(100);
   }

void main(void)
{

    DDRB.3=1;  //设置pb3为输出
    PORTB.3=1;  //设置端口输出为高电平
    DDRD.2=0x00;  //设置PD2为输入
    DDRD.3=0x00; //设置PD3为输入
    PORTD.2=0x01;  //设定端口PD2为内部上拉方式,无信号输输入时处于高电平状态
    PORTD.3=0x01;  //设定端口PD3为内部上拉方式,无信号输输入时处于高电平状态
                  // initialize the LCD for 2 lines & 16 columns

    MCUCR=0x0A;   //设置INT0,INT1为下降沿触发           
    TCCR0=0x6D;    //定时器0工作于快速PWM模式,oc0取正向,1024预分频
    TCNT0=0x63;    //20ms定时的初始值
    OCR0=0xB1;     //比较匹配的值为中点
    GICR=0xC0;
    TIMSK=0x01;
   SREG.7=0x01;
    temp1=OCR0;

  while(1)                    //依次显示各值
    {
    ;
    }   
}


     interrupt [TIM0_OVF] void timer0_ovf_isr(void)
  {
  SREG.7=0x00;
   TCNT0=0x63;
   OCR0=temp1;
  SREG.7=0x01;
  }

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:93224 发表于 2020-1-19 18:37 | 只看该作者
用的哪一款单片机
回复

使用道具 举报

板凳
ID:404239 发表于 2020-1-19 22:08 | 只看该作者
AVR单片机需要全局中断使能才会触发按键中断,即asm("sei");这里好像没有。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表