普中开源电子分享网

 找回密码
 立即注册
搜索
查看: 1963|回复: 0

PWM模拟DA输出

[复制链接]

22

主题

24

帖子

136

积分

注册会员

Rank: 2

积分
136
发表于 2021-1-19 15:46:42 | 显示全部楼层 |阅读模式
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int

sbit PWM=P2^0;
sbit key1=P2^1;
sbit key2=P2^2;

uint count;
uint tm1, value;
bit DIR;
void Timer1_Init();

void delay(uint t)
{
        while(t--);
}

void main()
{
//        uint value;
        Timer1_Init();
        while(1)
        {
        /*        if(count>100)
                {
                        count=0;
                        if(DIR==1)
                        {
                                value++;
                        }
                        if(DIR==0)
                        {
                                value--;
                        }*/

                        if(key1==0)
                        {
                                delay(10);
                                if(key1==0)
                                {
                                        if(value<1000)
                                        value++;
                                }

                        }
                        if(key2==0)
                        {
                                delay(10);
                                if(key2==0)
                                {
                                        if(value>0)
                                        value--;
                                }

                        }



        //        }
        /*        if(value==1000)
                {
                        DIR=0;
                }
                if(value==0)
                {
                        DIR=1;
                } */

                if(tm1>1000)
                {
                        tm1=0;
                }

                if(tm1<value)
                {
                        PWM=1;
                }
                else
                {
                        PWM=0;
                }


        }
}

void Timer1_Init()
{
        TMOD=0X10;
        TH1=0XFF;  TL1=0XFF;
        ET1=1;
        EA=1;
        TR1=1;
}

void Timer1() interrupt 3
{
        TH1=0XFF; TL1=0XFF;
        count++;
        tm1++;
}

回复

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /1 下一条

Archiver|手机版|小黑屋|普中开源电子分享网 粤ICP备16123577号-2

GMT+8, 2024-4-24 04:23 , Processed in 0.080719 second(s), 30 queries .

Powered by 论坛搭建 X3.4

Copyright © 2001-2021, Tencent Cloud.

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