新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > AT89C2051利用中斷產生PWM

        AT89C2051利用中斷產生PWM

        作者: 時間:2016-11-25 來源:網絡 收藏

        本文引用地址:http://www.104case.com/article/201611/321335.htm

        產生的波形

        1200ms為1

        600us為




        根據NEC協議制作的波形圖

        #include "REG2051.H"

        #define uint unsigned int
        #define uchar unsigned char


        sbit PWM=P3^7;
        uchar code Pcode[]={0x16,0x0C,0x18,0x5E,0x08,0x1C,0x5A,0x42,0x52,0x4A,0x47,0x44,0x40};

        void onKeyDown(uchar,uchar);
        void write_data(uchar);
        void start();
        void delay_560(void);
        void delay_1690(void);
        void delay_4500(void);

        void main(){
        uint r,c;
        PWM=0;
        while(1){
        P1=0x0f;
        if(P1!=0x0f){
        r=~P1-0xf0;
        P1=0xf0;
        c=~(P1>>4)-0xf0;
        onKeyDown(r,c);
        }
        }
        }

        void onKeyDown(uchar row,uchar column){
        uchar cmd,addr;
        cmd=Pcode[row*4+column];
        addr=0xaa;
        start();
        write_data(addr);
        write_data(~addr);
        write_data(cmd);
        write_data(~cmd);
        }

        void start(){
        PWM=1;
        delay_4500();
        delay_4500();
        PWM=0;
        delay_4500();
        }

        void write_data(uchar d){
        uchar i;
        for(i=0;i<8;i++){
        d<<=1;
        if(CY){
        PWM=1;
        delay_560();
        PWM=0;
        delay_1690();
        }else{
        PWM=1;
        delay_560();
        PWM=0;
        delay_560();
        }
        }
        }

        void delay_560(void)
        {
        unsigned char i,j,k;
        for(i=31;i>0;i--)
        for(j=3;j>0;j--)
        for(k=1;k>0;k--);
        }

        void delay_1690(void)
        {
        unsigned char i,j,k;
        for(i=211;i>0;i--)
        for(j=1;j>0;j--)
        for(k=1;k>0;k--);
        }

        void delay_4500(void)
        {
        unsigned char i,j,k;
        for(i=26;i>0;i--)
        for(j=34;j>0;j--)
        for(k=1;k>0;k--);
        }




        上一頁 1 2 下一頁

        關鍵詞: AT89C2051中斷PW

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 福贡县| 崇阳县| 黄山市| 西华县| 恩平市| 延边| 浮梁县| 霍城县| 无极县| 饶河县| 吉隆县| 鄂温| 同江市| 林口县| 集安市| 乐亭县| 两当县| 渝北区| 常德市| 沅江市| 江都市| 古交市| 蒲江县| 龙口市| 苏尼特右旗| 阜平县| 甘德县| 蓬莱市| 石柱| 天台县| 府谷县| 宁城县| 竹溪县| 顺平县| 章丘市| 上林县| 通海县| 攀枝花市| 大荔县| 涿鹿县| 汉沽区|