|
本帖最后由 tombfw 于 2014-11-5 09:11 编辑
51的P0口和P1口接ad9762的12位输入端和Sleep、Clk端,p0口加了10K的上拉电阻,p1口没加,但是上电后发现p0口输出是直线,偶尔会有尖峰,上拉电阻选的太大吗?下面附上程序,基本思想是将正弦波分为256个点写入,将每个点12位二进制数分成高4位和低8位,将其定义成两个表,用两个指针分别指两个表,然后在p0口和p1口低四位输出,大家看一下程序有什么问题吗?谢了!
#define uchar unsigned char
#include<reg51.h>
char code table1[256]={}; //表里的内容省略
char code table2[256]={};
uchar *p0,*p1; //两个指针分别指向两个表
sbit Clk=P1^4; //AD9762时钟端
sbit Sleep=P1^5;
int count; //计数,表示已经指到第几个数
void main()
{
void Write_b9762();
p0=table1;
p1=table2;
Sleep=0;
Clk=0;
while(1)
{
Write_b9762();
if(count==255)
{
count=0;
}
}
}
void Write_b9762()
{
uchar tempt;
Clk=0;
tempt=(P1)|0x0f;
P0=(*p0);
P1=tempt&(*p1);
Clk=1;
p0++;
p1++;
count++;
} |
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|