#include <REGX51.H>
#define FOSC 12000000 //--- 宏定义时钟频率 ---
//=================================================================================================
//--- DAC0832定义区 ---
//sfr P4 = 0xC0;
#define DAC0832_CS P3_3
#define DAC0832_WR P3_4
#define DAC0832_DT P1//
//=================================================================================================
//--- 正弦信号表,共256个数据 ---
code unsigned char SINTAB[] =
{
0x7F,0x81,0x83,0x86,0x88,0x8A,0x8C,0x8E,0x91,0x93,0x95,0x97,0x99,0x9C,0x9E,0xA0,
0xA2,0xA4,0xA6,0xA8,0xAA,0xAD,0xAF,0xB1,0xB3,0xB5,0xB7,0xB9,0xBB,0xBD,0xBE,0xC0,
0xC2,0xC4,0xC6,0xC8,0xCA,0xCB,0xCD,0xCF,0xD1,0xD2,0xD4,0xD6,0xD7,0xD9,0xDA,0xDC,
0xDD,0xDF,0xE0,0xE2,0xE3,0xE4,0xE6,0xE7,0xE8,0xEA,0xEB,0xEC,0xED,0xEE,0xEF,0xF0,
0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF6,0xF7,0xF8,0xF8,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,
0xFC,0xFC,0xFD,0xFD,0xFD,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,
0xFD,0xFD,0xFD,0xFC,0xFC,0xFC,0xFB,0xFB,0xFA,0xFA,0xF9,0xF8,0xF8,0xF7,0xF6,0xF6,
0xF5,0xF4,0xF3,0xF2,0xF1,0xF0,0xEF,0xEE,0xED,0xEC,0xEB,0xEA,0xE8,0xE7,0xE6,0xE4,
0xE3,0xE2,0xE0,0xDF,0xDD,0xDC,0xDA,0xD9,0xD7,0xD6,0xD4,0xD2,0xD1,0xCF,0xCD,0xCB,
0xCA,0xC8,0xC6,0xC4,0xC2,0xC0,0xBE,0xBD,0xBB,0xB9,0xB7,0xB5,0xB3,0xB1,0xAF,0xAD,
0xAA,0xA8,0xA6,0xA4,0xA2,0xA0,0x9E,0x9C,0x99,0x97,0x95,0x93,0x91,0x8E,0x8C,0x8A,
0x88,0x86,0x83,0x81,0x7F,0x7D,0x7B,0x78,0x76,0x74,0x72,0x70,0x6D,0x6B,0x69,0x67,
0x65,0x62,0x60,0x5E,0x5C,0x5A,0x58,0x56,0x54,0x51,0x4F,0x4D,0x4B,0x49,0x47,0x45,
0x43,0x41,0x3F,0x3E,0x3C,0x3A,0x38,0x36,0x34,0x33,0x31,0x2F,0x2D,0x2C,0x2A,0x28,
0x27,0x25,0x24,0x22,0x21,0x1F,0x1E,0x1C,0x1B,0x1A,0x18,0x17,0x16,0x14,0x13,0x12,
0x11,0x10,0x0F,0x0E,0x0D,0x0C,0x0B,0x0A,0x09,0x08,0x08,0x07,0x06,0x06,0x05,0x04,
};
//=================================================================================================
//--- main()主程序区 ---
void main(void)
{
unsigned char j;
unsigned int i = 0;
while(1)
{
DAC0832_DT = SINTAB[i]; //--- 送数据到DAC0832端口上 ---
DAC0832_CS = 0;
DAC0832_WR = 0; //--- 写入DAC0832内部寄存器中 ---
DAC0832_WR = 1;
DAC0832_CS = 1;
i ++;
if(sizeof(SINTAB) == i)i = 0;
for(j=10;j>0;j--);
}
}