#define DAPort P2
sbit IO = P2^0;
unsigned int count;
fword = (unsigned int)(freqtemp*1.048); //设置频率控制字
void timer0(void) interrupt 1 //计数器0中断
{
count = count + fword;
switch(gType)
{
case 0: DAPort = TableSin[count>>8];
break;
case 1: if(count>Duty*655)
DAPort = 0xff;
else
DAPort = 0x00;
break;
case 2: DAPort = TableTriangle[count>>8];
break;
case 3: DAPort = TableSaw[256-(count>>8)];
break;
default:DAPort = TableSin[count>>8];
}
}
右移8位,是舍弃了该数的低8位。保留数据的高位。看代码可能是 8 位单片机, count>>8 就是只保留 count 的高8位,低8位舍弃掉了。
我们许多计算都是小数,在查表时就不能用小数当下标了,就需要取整
打个比方, PI=3.14 我们只保留1个小数,就是 3.1
duty是占空比,为什么要用count和duty*655比,655是怎么来的