📄 dac.c
字号:
#include <iom16v.h>
#include <macros.h>
#define uchar unsigned char
#define uint unsigned int
//#include "Skey.c"
void delay(uint ms)
{
uint i,j;
for(i=0;i<ms;i++)
{
for(j=0;j<1141;j++);
}
}
uchar key_press()
{
uchar j;
DDRD|=0X0F;
PORTD|=0X0F;
DDRD&=0XF0;
j=PIND;
j=j&0X0F;//00001111
if(j==0X0F)
{
return 0;
}
else
{
return 1;
}
}
uchar key_scan()
{
uchar key;
delay(10);
if(key_press())
{
key=PIND;
key&=0X0F;
switch(key)
{
case 0X0E:
key=0;
break;
case 0X0D:
key=1;
break;
case 0X0B:
key=2;
break;
case 0X07:
key=3;
break;
default:
key=0;
}
while(key_press());
}
else
{
key=0;
}
return key;
}
void spi_init()
{
DDRB|=0XA0;
DDRA|=BIT(PA1);
SPCR=0X57;
}
void ad5300(uchar daword)
{
uchar temp1=0,temp2=0,status;
temp1|=daword<<4;//1101 1001
temp2|=daword>>4;
PORTA&=~BIT(PA1);
SPSR=0;
SPDR=temp2;
do
{
status=SPSR;
}while(!(status&=0X80));
delay(10);
SPSR=0;
SPDR=temp1;
do
{
status=SPSR;
}while(!(status&=0X80));
SPSR=0;
delay(10);
PORTA|=BIT(PA1);
}
void main()
{
uchar i,data=128;
DDRB=0XFF;
spi_init();
ad5300(0);
ad5300(data);
while(1)
{
if(key_press())
{
i=key_scan();
switch(i)
{
case 0:
data=data+16;
break;
case 1:
data=data-16;
break;
case 2:
data=0;
break;
case 3:
data=255;
break;
}
ad5300(data);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -