|
#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循环
}
}
}
}
|
|