找回密码
 立即注册

QQ登录

只需一步,快速开始

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

AVR328 PWM转PPM源程序

[复制链接]
跳转到指定楼层
楼主
ID:409095 发表于 2018-10-13 16:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#define ppm_in_pin   2
#define ppm_pulseIn  4
unsigned  int RC_count = 0;
unsigned  int PPM_HIGH = 0;
void RC_in() {
  RC_count++;
}
void setup()
{

  DDRB = DDRB | 0X1F ;
  DDRD = DDRD | 0XE0 ;
  Serial.begin(57600);
  pinMode(ppm_in_pin, INPUT_PULLUP);
  pinMode(ppm_pulseIn, INPUT);
  attachInterrupt(0, RC_in, RISING); //上升沿触发中断
}
void  RC_valout() {
  switch ( RC_count ) {
    //第一通道
    case 0:  {
        PORTD = PORTD & 0X1F; //PD后三位清零
        PORTD = PORTD | 0X20;//PD5输出高电平
        PORTB = PORTB & 0XE0; //PB前五位清零
      }; break;
    //第二通道PD6
    case 1: {
        PORTD = PORTD & 0X1F; //PD后三位清零
        PORTD = PORTD | 0X40; //PD6输出高电平
        PORTB = PORTB & 0XE0; //PB前五位清零
      }; break;
    //第三通道PD7
    case 2: {
        PORTD = PORTD & 0X1F; //PD后三位清零
        PORTD = PORTD | 0X80; //PD7输出高电平
        PORTB = PORTB & 0XE0; //PB前五位清零
      }; break;
    //第四通道PB0
    case 3:  {
        PORTD = PORTD & 0X1F; //PD后三位清零
        PORTB = PORTB & 0XE0; //PB前五位清零
        PORTB = PORTB | 0X01; //PB0输出高电平
      }; break;
    //第五通道PB1
    case 4:  {
        PORTB = PORTB & 0XE0; //PB前五位清零
        PORTB = PORTB | 0X02; //PB1输出高电平
      }; break;
    //第六通道PB2
    case 5: {
        PORTB = PORTB & 0XE0; //PB前五位清零
        PORTB = PORTB | 0X04; //PB2输出高电平
      }; break;
    //第七通道PB3
    case 6: {
        PORTB = PORTB & 0XE0; //PB前五位清零
        PORTB = PORTB | 0X08; //PB3输出高电平
      }; break;
    //第八通道PB4
    case 7:  {
        PORTB = PORTB & 0XE0; //PB前五位清零
        PORTB = PORTB | 0X10; //PB4输出高电平
      }; break;
    case 8:  {
        PORTB = PORTB & 0XE0; //PB前五位清零
         PORTD = PORTD & 0X1F; //PD后三位清零
      }; break;
  }
}
void loop()
{
  PPM_HIGH = pulseIn(ppm_pulseIn, HIGH);
  if (PPM_HIGH > 3000) {
    RC_count = 0;
  }
  RC_valout();

}

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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