求助,两片dac0832双缓冲,接51单片机,同时产生两个阶梯波
单片机学习吧
全部回复
仅看楼主
level 9
a6936693 楼主
#include <reg51.h> //包含特殊功能寄存器库
#include <absacc.h> //该文件用于定义存储器空间的绝对地址
#define uchar unsigned char //定义uchar为无符号字符数据类型
#define DAC0832_1 XBYTE[0x7FFF] //定义DAC0832表示片外地址0x7FFF
#define DAC0832_2 XBYTE[0xBFFF]
#define DACOUT XBYTE[0xDFFF]
void delay(unsigned int xms)
{
unsigned int i,j;
for(i=xms;i>0;i--) //i=xms即延时约xms毫秒
for(j=112;j>0;j--);
}
void dac0832_1()
{
uchar f=0, i=0;
while(1)
{
DAC0832_1=f; //输出阶梯幅度
delay(10); //延时10ms
i++; //阶梯计数加1
if ( i<10 ) //设阶梯数为10个,若阶梯数少于10个则执行下条语句
f=f+10; //增加幅度值
else
{
f=0, i=0;
} //否则,当阶梯数到10个后,将f,=0, i=0
}
}
void dac0832_2()
{
uchar f=0, i=0; //设变量f放幅度,i为阶梯计数,初值均为0
while(1)
{
DAC0832_1=f; //输出阶梯幅度
delay(1); //延时1ms
i++; //阶梯计数加1
if ( i<10 ) //设阶梯数为10个,若阶梯数少于10个则执行下条语句
f=f+10; //增加幅度值
else
{
f=0, i=0;
} //否则,当阶梯数到10个后,将f,=0, i=0
}
}
void main() //主函数
{
dac0832_1();
dac0832_2();
DACOUT=0;
while(1);
}
2015年08月03日 05点08分 1
1