現在數碼管不顯示阿 揚聲器也沒響 我之前在setup 寫了TR0=1 能響
有人能幫我看一下 我現在是什么情況嗎?
我現在主程序是卡在哪了?
還有現在是不是讀不到key
我之前沒return
現在也是不行
單片機源程序如下:
- #include <reg52.h>
- sbit Speaker = P2^7;
- unsigned char key=0;
- unsigned char led[9] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x79,};
- unsigned int table[] = {64550,64580,64684,64777,64820,64898,64968,65030,65050,65058,65110,65157,65178,65217,65252,65283,65310,};
- unsigned char exp_music[]={1,4,2,4,3,4,1,4,3,4,2,4,3,4,1,4,3,4,4,4,5,8,3,4,4,4,5,8,5,3,6,1,5,3,4,1,3,4,1,4,5,3,6,1,5,3, 4,1,3,4,1,4,1,4,8,4,1,8,1,4,8,4,1,8,0XFF};
- void delay(unsigned int t)
- {
- unsigned int i, j;
- for(i=t;i>0;i--)
- {
- for(j=124;j>0;j--)
- {
- }
- }
- }
- int scan_key(void)
- {
- switch(P1)
- {
- case 0xfe:key=1;break;
- case 0xfd:key=2;break;
- case 0xfb:key=3;break;
- case 0xf7:key=4;break;
- case 0xef:key=5;break;
- case 0xdf:key=6;break;
- case 0xbf:key=7;break;
- case 0x7f:key=8;break;
- }
- return key;
- }
- void play()
- {
- unsigned int i=0;
- TH0=table[exp_music[i]]/256;
- TL0=table[exp_music[i]]%256;
- delay(exp_music[i]);
- i++;
- if(exp_music[i]==0xff)
- {
- i=0;
- TR0=0;
- }
- }
- void setup()
- {
- TMOD=0x01;
- ET0=1;
- EA=1;
- }
- void begin()
- {
- P0=0xff;
- P1=0xff;
- Speaker=0;
- }
- void main()
- {
- begin();
- while(1)
- {
- scan_key();
- setup();
- if(key!=0&&key!=8)
- {
- P0=led[key];
- delay(50000);
- TR0=1;
- TH0=table[key]/256;
- TL0=table[key]%256;
- }
- else
- {
- P0=led[key];
- delay(50000);
- play();
- }
- }
- }
- void timer0() interrupt 1
- {
- TH0=table[key]/256;
- TL0=table[key]%256;
- Speaker=~Speaker;
- }
復制代碼 |