各部分软件分析 延时子函数 //延时子函数 void delay(uint z) { uint x,y; for(x=z; x>0; x--) for(y=340; y>0; y--); } 初始化子函数 //初始化子函数 void init() { beep=0; D1=1; D2=0; EA=1;//开总中断 TCON=0x01;//外部中断0设置为边沿触发 EX0=1;//开外部中断0 ET0=1; ET1=1; TMOD=0x11;//定时器0,1工作在定时状态,均为方式1 } 数码管显示子函数 //数码管显示子函数 void display1() { in(table1[aa]); //再传段码 out(); W1=0;; delay(1); //延迟时间2ms以内 W1=1; in(table1[cc+1]); //再传段码 out(); W2=0; delay(1); //延迟时间2ms以内 W2=1; } 高低音选择子函数 //高低音选择子函数 void yinjie() { if(k10==0) { delay(5); if(k10==0) { aa=10; bb=0;//返回10为seg[10]显示C } } if(k9==0) { delay(5); if(k9==0) { aa=11; bb=1;//返回11为seg[11]显示L } } if(k11==0) { delay(5); if(k11==0) { aa=12; bb=2;//返回12为seg[12]显示H } } if(aa==0) { aa=13; } } 播放音乐子函数 //播放音乐子函数 void display_music() { TH0=table2[table4[i]-1]; TL0=table3[table4[i]-1]; while(flag==0) { if(i<32) { TR0=1; delay(57*table5[i]); i++; } if(i==32) { i=0; } } } 演奏模式子函数 //演奏模式子函数 void display_play() { TR0=0; TR1=0; yinjie(); WE2=1;//关数码管2 WE1=0;//开数码管1 P0=table1[aa]; if(aa!=13&&flag==1) { if(k1==0) { TH1=table2[7*bb+cc]; TL1=table3[7*bb+cc]; TR1=1; while(k1==0) { cc=0; display1(); } } if(k2==0) { TH1=table2[7*bb+cc]; TL1=table3[7*bb+cc]; TR1=1; while(k2==0) { cc=1; display1(); } } if(k3==0) { TH1=table2[7*bb+cc]; TL1=table3[7*bb+cc]; TR1=1; while(k3==0) { cc=2; display1(); } } if(k4==0) { TH1=table2[7*bb+cc]; TL1=table3[7*bb+cc]; TR1=1; while(k4==0) { cc=3; display1(); } } if(k5==0) { TH1=table2[7*bb+cc]; TL1=table3[7*bb+cc]; TR1=1; while(k5==0) { cc=4; display1(); } } if(k6==0) { TH1=table2[7*bb+cc]; TL1=table3[7*bb+cc]; TR1=1; while(k6==0) { cc=5; display1(); } } if(k7==0) { TH1=table2[7*bb+cc]; TL1=table3[7*bb+cc]; TR1=1; while(k7==0) { cc=6; display1(); } } } } 外部0中断子函数 //外部0中断子函数 void wb0() interrupt 0 { if(k8==0) { delay(5); while(k8==0); flag=~flag; D1=~D1; D2=~D2; } } 定时器0中断子函数 //定时器0中断子函数 void t0() interrupt 1 { TR0=0; TH0=table2[table4[i]-1]; TL0=table3[table4[i]-1]; beep=~beep; TR0=1; } 3.2.9 定时器1中断子函数 //定时器1中断子函数 void t1() interrupt 3 { TR1=0; TH1=table2[7*bb+cc]; TL1=table3[7*bb+cc]; beep=~beep; TR1=1; } 3.2.10 主函数 //主函数 void main() { init(); while(1) { if(flag==0) display_music(); else display_play(); } }
收藏0 举报
本版积分规则 发表回复 回帖并转播 回帖后跳转到最后一页
64
1612
2
扫码关注 21ic 官方微信
扫码关注嵌入式微处理器
扫码关注电源系统设计
扫码关注21ic项目外包
扫码浏览21ic手机版
本站介绍 | 申请友情链接 | 欢迎投稿 | 隐私声明 | 广告业务 | 网站地图 | 联系我们 | 诚聘英才
京公网安备 11010802024343号