TR0=1; temp=temp & 0x0f; while(temp!=0x0f) { temp=P3; temp=t

问题描述:

TR0=1; temp=temp & 0x0f; while(temp!=0x0f) { temp=P3; temp=temp & 0x0f; } TR0=0;
#include
unsigned char temp;
unsigned char key;
unsigned char i,j;
unsigned char STH0;
unsigned char STL0;
sbit P1_0=P1^0;
sbit P3_4=P3^4;
sbit P3_5=P3^5;
sbit P3_6=P3^6;
sbit P3_7=P3^7;
unsigned int code tab[]={64021,64103,64260,64400,
64524,64580,64684,64777,
64820,64898,64968,65030,
65058,65110,65157,65178};
void main(void)
{
TMOD=0x01;
ET0=1;
EA=1;
while(1)
{
P3=0xff;
P3_7=0;
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f)
{
for(i=50;i>0;i--)
for(j=200;j>0;j--);
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f)
{
temp=P3;
temp=temp & 0x0f;
switch(temp)
{
case 0x0e:
key=0;
break;
case 0x0d:
key=1;
break;
case 0x0b:
key=2;
break;
case 0x07:
key=3;
break;
}
temp=P3;
P1_0=~P1_0;
STH0=tab[key]/256;
STL0=tab[key]%256;
TR0=1;
while(temp!=0x0f)
{
temp=P3;
temp=temp & 0x0f;
}
TR0=0;
}
}
简易电子琴部分程序
1个回答 分类:综合 2014-11-28

问题解答:

我来补答
TR0 = 1;
temp = temp & 0x0f;//0x0f是掩码,作用是取temp的低四位,比如temp=0xfff1;和0x0f取掩码之后就变成了0x01
while (temp != 0x0f) //循环里面貌似没什么值得解释的吧
{
temp = P3;
temp = temp & 0x0f;
}
TR0 = 0;
再问: 就是想知道这个while的作用
再答: 我觉得这个while的作用也就相当于temp=0x0f,因为前面P3=0xff过了
再问: 为什么把while语句去除了 程序仿真就无法正常发声?
 
 
展开全文阅读
剩余:2000
上一页:画钩的
下一页:速率