#include<reg52.h> //°üo¬í·Îļt£¬ò»°ãÇé¿ö2»Dèòa¸Ä¶ˉ£¬í·Îļt°üo¬ìØêa1|Äü¼Ä′æÆ÷μĶ¨òå
#define uchar unsigned char
#define uint unsigned int
uint counter,step,phase;
#define DAC0832_DATA P0 P1
//sbit P10=P1^0;
uchar code SineTab[256]={ //ÕyÏò2¨¶Ôó|êy×Öá¿
0x80,0x83,0x86,0x89,0x8c,0x8f,0x92,0x95,0x98,0x9c,0x9f,0xa2,0xa5,0xa8,0xab,0xae,
0xb0,0xb3,0xb6,0xb9,0xbc,0xbf,0xc1,0xc4,0xc7,0xc9,0xcc,0xce,0xd1,0xd3,0xd5,0xd8,
0xda,0xdc,0xde,0xe0,0xe2,0xe4,0xe6,0xe8,0xea,0xec,0xed,0xef,0xf0,0xf2,0xf3,0xf4,
0xf6,0xf7,0xf8,0xf9,0xfa,0xfb,0xfc,0xfc,0xfd,0xfe,0xfe,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xfe,0xfe,0xfd,0xfc,0xfc,0xfb,0xfa,0xf9,0xf8,0xf7,
0xf6,0xf5,0xf3,0xf2,0xf0,0xef,0xed,0xec,0xea,0xe8,0xe6,0xe4,0xe3,0xe1,0xde,0xdc,
0xda,0xd8,0xd6,0xd3,0xd1,0xce,0xcc,0xc9,0xc7,0xc4,0xc1,0xbf,0xbc,0xb9,0xb6,0xb4,
0xb1,0xae,0xab,0xa8,0xa5,0xa2,0x9f,0x9c,0x99,0x96,0x92,0x8f,0x8c,0x89,0x86,0x83,
0x80,0x7d,0x79,0x76,0x73,0x70,0x6d,0x6a,0x67,0x64,0x61,0x5e,0x5b,0x58,0x55,0x52,
0x4f,0x4c,0x49,0x46,0x43,0x41,0x3e,0x3b,0x39,0x36,0x33,0x31,0x2e,0x2c,0x2a,0x27,
0x25,0x23,0x21,0x1f,0x1d,0x1b,0x19,0x17,0x15,0x14,0x12,0x10,0xf,0xd,0xc,0xb,
0x9,0x8,0x7,0x6,0x5,0x4,0x3,0x3,0x2,0x1,0x1,0x0,0x0,0x0,0x0,0x0,
0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x1,0x2,0x3,0x3,0x4,0x5,0x6,0x7,0x8,
0x9,0xa,0xc,0xd,0xe,0x10,0x12,0x13,0x15,0x17,0x18,0x1a,0x1c,0x1e,0x20,0x23,
0x25,0x27,0x29,0x2c,0x2e,0x30,0x33,0x35,0x38,0x3b,0x3d,0x40,0x43,0x46,0x48,0x4b,
0x4e,0x51,0x54,0x57,0x5a,0x5d,0x60,0x63,0x66,0x69,0x6c,0x6f,0x73,0x76,0x79,0x7c
};
uchar code SquareTab[256]={
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
};
void delayms(uint ms)
{
uint i;
while(ms--)
{
for(i=0;i<120;i++);
}
}
void int0()interrupt 0
{
delayms(10);
if(INT0==0)
{
//phase++;
if(step<4096)
{
step++;
}
else
step=2;
}
}
void int1()interrupt 0
{
delayms(10);
if(INT1==0)
{
P1=~P1;
if(step>2)
{
step--;
}
else
step=4096;
}
}
/*------------------------------------------------
¶¨ê±Æ÷ÖD¶Ï×ó3ìDò
------------------------------------------------*/
void Timer0_isr(void) interrupt 1 using 1
{
//TH0=(65536-500)/256; //ÖØD¸3Öμ 12M¾§Õñ¼ÆË㣬ָáîÖüÆú1uS£¬
//TL0=(65536-500)*256; //1mS·½2¨°ë¸öÖüÆú500uS£¬¼′¶¨ê±500′Î
//òç3öè»oóêä3ö¶Ëè¡·′
TH0=0xFF;
TL0=0xFF;
counter=counter+step;
//phase=0.0055+step;
P0=SineTab[(uint)counter>>8];
P1=SquareTab[(uint)counter>>8];
//P10=~P1^0;
//P0=SineTab[(uint)counter>>8];
}
void INT_init(void)
{
EX0=1;
IT0=1;
EX1=1;
IT1=1;
EA=1;
PX0=1;
}
/*------------------------------------------------
¶¨ê±Æ÷3õê¼»ˉ×ó3ìDò
------------------------------------------------*/
void Init_Timer0(void)
{
TMOD |= 0x01; //ê1óÃÄ£ê½1£¬16붨ê±Æ÷£¬ê1óÃ"|"·ûoÅ¿éòÔÔúê1óöà¸ö¶¨ê±Æ÷ê±2»êüó°Ïì
TH0=0xFE; //¸ø¶¨3õÖ죬Õaàïê1óö¨ê±Æ÷×î′óÖμ′ó0¿aê¼¼Æêyò»Ö±μ½65535òç3ö
TL0=0x0C;
ET0=1; //¶¨ê±Æ÷ÖD¶Ï′ò¿a
TR0=1; //¶¨ê±Æ÷¿a1Ø′ò¿a
}
/*
void timer1(void) interrupt 3
{
TH1=(65536-100)/256;;
TL1=(65536-100)*256; ;
}
void Init_Timer1(void)
{
TMOD |= 0x01; //ê1óÃÄ£ê½1£¬16붨ê±Æ÷£¬ê1óÃ"|"·ûoÅ¿éòÔÔúê1óöà¸ö¶¨ê±Æ÷ê±2»êüó°Ïì
TH1=0xFE; //¸ø¶¨3õÖ죬Õaàïê1óö¨ê±Æ÷×î′óÖμ′ó0¿aê¼¼Æêyò»Ö±μ½65535òç3ö
TL1=0x0C;
ET1=1; //¶¨ê±Æ÷ÖD¶Ï′ò¿a
TR1=1; //¶¨ê±Æ÷¿a1Ø′ò¿a
}
*/
/*------------------------------------------------
Ö÷3ìDò
------------------------------------------------*/
main()
{
INT_init();
Init_Timer0();
step=2;
while(1)
{
;
}
}
|