打印
[AVR单片机]

[求助]ATmega16使用按键控制输出两路PWM波

[复制链接]
1140|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhz0756106|  楼主 | 2013-5-31 21:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如题- - 写了一条控制ATmega16 单片机使用按键控制单片机输出两路PWM波输出的程序 在proteus中实现 但是无**常工作- - 求大神指导啊
void delay(uint ms)//延时函数
{
        uint i,j;
        for(i=0;i<ms;i++)
           {
           for(j=0;j<1141;j++);
       }
}
uchar KEYPRESS(void)//是否有键被按下,有按下返回1
{
  uchar key;
  key=PINA;
  key=key|0xf0;
  if(key=0xFF)
    return 0;
  else
    return 1;
        }
uchar KEYSCAN(void)
{  uchar key1=0;
  delay(5);
  if((KEYPRESS())==1)
    {
          key1=PINA;
          key1=key1|0xF0;
          if(key1==0xfd)
             {key1=1;}
          else if(key1=0xfb)
             {key1=2;}
          else {key1=0;}
         do{
         } while((KEYPRESS())==1);
         delay(5);
      }
   return key1;
   }
void main()
{
uint k;
DDRA&=~BIT(PA1);
DDRA&=~BIT(PA2);

while(1)
  {
    DDRB=0x00;
        DDRD=0x00;
       
     if((KEYPRESS())==1)
         {
           k=KEYSCAN();
          switch (k)
         {
         case 1:
                  {
                  TCCR0|=0x7A;//开启定时器,时钟1分频
               DDRB=0x08;//设置4管脚为输出
               OCR0=0x40;
               TCNT0=0xFF;
                  break;
               }
    case 2:
                 {
                  TCCR2|=0x7A;//开启定时器,时钟1分频
             DDRD=0x80;
             OCR2=0x40;
             TCNT2=0xFF;
                 break;
                 }
}
}
}
}

相关帖子

沙发
qin552011373| | 2013-6-1 21:02 | 只看该作者
定时器模式貌似是普通的吧

使用特权

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

本版积分规则

1

主题

1

帖子

0

粉丝