1. THÔNG BÁO TUYỂN ADMIN DIỄN ĐÀN 2013
    Tìm kiếm nhà trọ - Ở ghép
    THÔNG BÁO BÁN ÁO SPKT.NET CHO THÀNH VIÊN DIỄN ĐÀN


    HÃY TÌM KIẾM Ở ĐÂY TRƯỚC KHI ĐẶT CÂU HỎI
    {xen:phrase loading}

Điều chế độ rộng xung (PWM) bằng TIMER với 89S52

Thảo luận trong 'Kỹ thuật Điện - Điện tử' bắt đầu bởi nguyenchituyen2801, 11 Tháng mười một 2010.

  1. nguyenchituyen2801 New Member

    Số bài viết: 19
    Đã được thích: 3
    Điểm thành tích: 3
    int count=0,d0,d1,d2,d3,d4,d5,d6,d7,start=0;
    int pwm0=0,pwm1=0,pwm2=0,pwm3=0,pwm4=0,pwm5=0,pwm6=0,pwm7=0;
    void set_value_pwm(int value0,int value1,int value2,int value3,int value4,int value5,int value6,int value7)
    {
    pwm0=value0;
    pwm1=value1;
    pwm2=value2;
    pwm3=value3;
    pwm4=value4;
    pwm5=value5;
    pwm6=value6;
    pwm7=value7;
    }
    void Timer1InterruptHandler() org IVT_ADDR_ET1
    {
    EA_bit=0;
    TR1_bit=0;
    TH1=0xff;
    TL1=0xf0;
    count++;
    if(count==100)
    {
    count=0;
    set_value_pwm(d0,d1,d2,d3,d4,d5,d6,d7);
    if(start>=0&&start<100)
    {
    d0++;
    start++;
    }
    if(start>=100&&start<200)
    {
    d1++;
    start++;
    }
    if(start>=200&&start<300)
    {
    d2++;
    start++;
    }
    if(start>=300&&start<400)
    {
    d3++;
    start++;
    }
    if(start>=400&&start<500)
    {
    d4++;
    start++;
    }
    if(start>=500&&start<600)
    {
    d5++;
    start++;
    }
    if(start>=600&&start<700)
    {
    d6++;
    start++;
    }
    if(start>=700&&start<800)
    {
    d7++;
    start++;
    }

    if(start>=800&&start<900)
    {
    d0--;
    start++;
    }
    if(start>=900&&start<1000)
    {
    d1--;
    start++;
    }
    if(start>=1000&&start<1100)
    {
    d2--;
    start++;
    }
    if(start>=1100&&start<1200)
    {
    d3--;
    start++;
    }
    if(start>=1200&&start<1300)
    {
    d4--;
    start++;
    }
    if(start>=1300&&start<1400)
    {
    d5--;
    start++;
    }
    if(start>=1400&&start<1500)
    {
    d6--;
    start++;
    }
    if(start>=1500&&start<1600)
    {
    d7--;
    start++;
    }
    if(start>=1600&&start<1700)
    {
    d0++;
    d1++;
    d2++;
    d3++;
    d4++;
    d5++;
    d6++;
    d7++;
    start++;
    }
    if(start>=1700&&start<1800)
    {
    d0--;
    d1--;
    d2--;
    d3--;
    d4--;
    d5--;
    d6--;
    d7--;
    start++;
    }
    if(start>=1800)
    {
    d0=0;
    d1=0;
    d2=0;
    d3=0;
    d4=0;
    d5=0;
    d6=0;
    d7=0;
    start=0;
    }
    }
    EA_bit=1;
    TR1_bit=1;
    if(count<pwm0)P1_0_bit=0;
    else P1_0_bit=1;
    if(count<pwm1)P1_1_bit=0;
    else P1_1_bit=1;
    if(count<pwm2)P1_2_bit=0;
    else P1_2_bit=1;
    if(count<pwm3)P1_3_bit=0;
    else P1_3_bit=1;
    if(count<pwm4)P1_4_bit=0;
    else P1_4_bit=1;
    if(count<pwm5)P1_5_bit=0;
    else P1_5_bit=1;
    if(count<pwm6)P1_6_bit=0;
    else P1_6_bit=1;
    if(count<pwm7)P1_7_bit=0;
    else P1_7_bit=1;
    }
    void main()
    {
    P1=0;
    d0=0;
    d1=0;
    d2=0;
    d3=0;
    d4=0;
    d5=0;
    d6=0;
    d7=0;
    TF1_bit=0;
    ET1_bit=1;
    EA_bit=1;
    GATE1_bit=0;
    C_T1_bit=0;
    M11_bit=0;
    M01_bit=1;
    TR1_bit=0;
    TH1=0xff;
    TL1=0xf0;
    TR1_bit=1;
    while(1)
    {
    }
    }

Chia sẻ trang này