找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2158|回复: 1
打印 上一主题 下一主题
收起左侧

单片机播放天空之城音乐程序

[复制链接]
跳转到指定楼层
楼主
ID:557874 发表于 2019-6-8 20:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. #include <reg52.h>
  2. #define uchar unsigned char
  3. #define uint unsigned int sbit beep=P1^0; unsigned int C;
  4. #define L1 262
  5. #define L2 284
  6. #define L3 311
  7. #define L4 349
  8. #define L5 392
  9. #define L6 440
  10. #define L7 494
  11. #define Z1 523
  12. #define Z2 587
  13. #define Z3 659
  14. #define Z4 698
  15. #define Z5 784
  16. #define Z6 880
  17. #define Z7 987
  18. #define H1 1046
  19. #define H2 1174
  20. #define H3 1318
  21. #define H4 1396
  22. #define H5 1567
  23. #define H6 1760
  24. #define H7 1975 void delay();
  25. unsigned code GP[]={Z6,Z7,H1,Z7,H1,H3,Z7,Z3,Z6,Z5,Z6,H1,Z5,
  26. Z3,Z3,Z4,Z3,H4,H1,Z3,H1,H1,Z7,Z4,Z4,Z7,
  27. Z7,Z6,Z7,H1,Z7,H1,H3,Z7,Z3,Z6,Z5,Z6,H1,
  28. Z5,Z2,Z3,Z4,H1,Z7,H1,H2,H2,H3,H1,H1,Z7,
  29. Z6,Z6,Z7,Z5,Z6,H1,H2,H3,H2,H3,H5,H2,H1,
  30. H1,Z7,H1,H3,H3,Z6,Z7,H1,Z7,H1,H2,H1,Z5,
  31. Z5,H4,H3,H2,H1,H3,H3,H3,H6,H6,H5,H5,H3,
  32. H2,H1,H1,H2,H1,H2,H5,H3,H3,H6,H6,H5,H5,
  33. H3,H2,H1,H1,H2,H1,H2,Z7,Z6,Z6,0xff};
  34. unsigned code JP[]={4,4,/**/12,4,8,8,/**/20,8,/**/12,4,8,8,
  35. 20,4,4,/**/12,4,8,8,/**/20,4,4,/**/12,4,8,8,
  36. /**/20,4,4,/**/12,4,8,8,/**/20,8,/**/12,4,8,8,
  37. /**/20,4,4,/**/8,4,12,3,1,/**/12,4,12,/**/4,4, 4,4,8,8,/**/20,4,4,/**/12,4,8,8,/**/24,/**/
  38. 8,4,4,8,8,/**/24,/**/4,4,8,4,4,8,/**/12,4,12,


  39. /**/8,8,8,4,4,/**/16,8,/**/12,4,12,4,/**/4,4,12,8,


  40. /**/12,4,8,8,/**/16,8,/**/12,4,12,4,/**/4,4,12,8,
  41. /**/12,4,8,3,1,/**/32};


  42. void main()
  43. { uchar i,j;
  44. TMOD=0x00;
  45. EA=1;        // 开总中断
  46. ET0=1;        // 开 t0 中断
  47. while(1)
  48. { i=0;
  49. while(GP[i]!=0xff)
  50. {C=460830/GP[i]; TH0=(8192-C)/32; TL0=(8192-C)%32;
  51. TR0=1;// 开定时器        0
  52. for(j=0;j<JP[i];j++)
  53. {delay();} TR0=0; i++;

  54. }
  55. beep=0;
  56. }

  57. }
  58. void delay()        // 延时 15.6ms
  59. {
  60. uint i,j; for(i=70;i>0;i--)
  61. {for(j=110;j>0;j--);}
  62. }
  63. void T0_time()interrupt 1
  64. { TR0=0;
  65. beep=!beep;
  66. TH0=(8192-C)/32;
  67. TL0=(8192-C)%32;
  68. TR0=1;
  69. }
复制代码
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:555243 发表于 2019-6-11 11:03 | 只看该作者
第56行报错,是怎么回事啊,大佬
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表