毕业论文开发语言企业开发JAVA技术.NET技术WEB开发Linux/Unix数据库技术Windows平台移动平台嵌入式论文范文英语论文
您现在的位置: 毕业论文 >> 嵌入式 >> 正文

stc12c单片机 t1 t0不知道是不是冲突,怎么解决

更新时间:2012-10-22:  来源:毕业论文

stc12c单片机 t1 t0不知道是不是冲突,怎么解决?

t0用来刷新点阵,2ms一列,16ms一遍

用T1实现 蜂鸣器'音乐播放'功能,就是不断的改变th1 tl1,

一播放音乐,点阵就不不显示了,就好像t0关了一样,
更令我疑惑的是播放完毕以后,,点阵也不恢复显示,

后来尝试播放完毕后,加一句tr0=1,点阵就能恢复显示...
问题是我根本就没关过tr0..

我比较菜,我认为t0中断级别高,按理说用t1播放音乐,不会影响到t0的刷新项目可行性研究报告 

怎么会冲突呢,怎么解决?

while(1)
{
if(BeepFlag)
{
BeepFlag=0;
ET1=1;
for(i=0;i<110;i=i+3)
{  
MusicN=MusicYJM[i]+7*MusicYJM[i+1]-1;
TH1=FREQH[MusicN];
TL1=FREQL[MusicN];
TR1=1;
delay(MusicYJM[i+2]);
}
ET1=0;
SPK=0;
///////TR0=1;

}  }
void timer0() interrupt 1
{
TH0=(65536-1982)/256;//2ms1982 3ms2972 11.888
TL0=(65536-1982)%256;  
DisplayT1(0,8);//display里面没有延时什么的,就是显示某一列
}

void timer1() interrupt 3
{
TR1=0;  
SPK=!SPK;
TH1=FREQH[MusicN];
TL1=FREQL[MusicN];
TR1=1;
}

按理说t0的中断级别是最高的(int0没有用到),,T0中断出来刷新显示是100%可以的
为什么这个t1的播放打断了刷新,,,

用过STC10的单片机,没发现你说的问题

也看不出你的程序有什么问题

你可以测试一下,程序走到什么地方T0关掉了,比如在的while循环里一步步的设置一个较长的延时,用灯或串口输出状态表示走到哪一步了,看看到底是走到那里T0停掉了,然后在判断是否是芯片问题或其他。 

设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©chuibin.com 优尔论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。