C语言写的数字电位器输出正弦波的程序
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar code res[]={0x32,0x3f,0x4b,0x56,0x5d,0x62,0x64,0x62,0x5d,0x56,0x4b,0x3f,
0x32,0x25,0x1e,0x0e,0x07,0x02,0x00,0x02,0x07,0x0e,0x1e,0x25};
unsigned int b, n, i ;
sbit cs1=P1^0;
sbit ud1=P1^1;
sbit inc1=P1^2;
void delay()
{uint k,j;
for(k=0;k<20;k++)
{for(j=0;j<50;j++);
}
}
void up(uint n)
{for(i=0;i<n;i++)
{cs1=1;
ud1=1;
cs1=0;
inc1=1;
inc1=0;
inc1=1;
cs1=1;
}
}
void don(uint n)
{
for(i=0;i<n;i++)
{
cs1=1;
ud1=0;
cs1=0;
inc1=1;
inc1=0;
inc1=1;
cs1=1;
}
}
time0() interrupt 1 using 2
{P1=0xff;
TF0=0;
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
}
void status0()
{for(n=0;n<=5;n++)
{up(res[n]);
delay();
}
}
void status1()
{for(n=6;n<=17;n++)
{don(res[n]);
delay();
}
}
void status2()
{for(n=18;n<=23;n++)
{up(res[n]);
delay();
}
}
main()
{
don(100);
TMOD=0x01;
TH0=(65536-1000)/256;
TL0=(65536-1000)%256;
TR0=1;
IE=0X82;
while(1)
{status0() ;
status1() ;
status2() ;
}
}