找回密码
 立即注册

QQ登录

只需一步,快速开始

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

c51单片机三角方波Proteus仿真程序

[复制链接]
跳转到指定楼层
楼主

#include <reg51.h>
typedef unsigned char uchar;
typedef unsigned int uint;
sbit cs = P3 ^ 7;
sbit wr = P3 ^ 6;
sbit K1 = P3 ^ 4;
sbit K2 = P3 ^ 5;
void Init()//中断子程序
{
  TMOD=0x01;
  TH0=0xb1;
  TL0=0xE0;
  IE=0x8e;
}
void Delay(uchar m)//延时程序
{
    while(m--);
}
void main()
{
    uchar k = 0; //设置k的初始值为0
    cs = 0; //当CS与WR1端置低电平时做好写数据的准备,只要P0口有数据输出,DAC0832将会转换成模拟信号
    wr = 0;        //当CS与WR1端置低电平时做好写数据的准备,只要P0口有数据输出,DAC0832将会转换成模拟信号
        Init();        //中断程序
    while(1) //通过输出值在 0-255和255-0之间变化,通过示波器可以看到模拟信号的情况
    {
       D3: if(K1==0)//判断K1是否按下
          {
                TR0=1;//启动定时器T0
                D1: while(1) //输出值在0-255之间变化
        {
            P0 = k++; //输出k且k+1
            Delay(1);
                        if(K2==0)//判断K2是否按下
          {
            TR0=0;//关闭定时器T0
                k=0;//将k值重新置0
                P0=k;//停止输出方波
                goto D3;//跳出方波输出循环
          }
            if (k == 0xff) //到达255时结束循环
                goto D2;//结束当前循环跳转至D2循环
        }
        D2: while(1) //输出值在255-0之间变化
        {
            P0 = k--; //输出k且k-1
            Delay(1);
                        if(K2==0)//判断K2是否按下
          {
            TR0=0;//关闭定时器T0
                k=0;//将k值重新置0
                P0=k;//停止输出方波
                goto D3;//跳出方波输出循环
          }
            if (k == 0x00) //到达0时结束循环
                goto D1;//结束当前循环跳转至D1循环
        }
          }
    }
}

FANGBOU.zip

59.83 KB, 下载次数: 6, 下载积分: 黑币 -5

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

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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