数码之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 1237|回复: 5

[other] 多个类似的数组,程序怎样写能简化

[复制链接]
发表于 2022-7-6 14:12:12 | 显示全部楼层 |阅读模式

爱科技、爱创意、爱折腾、爱极致,我们都是技术控

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x
  1. #include <STC8G.H>
  2. #include "intrins.h"
  3. #define uchar unsigned char
  4. uchar m,n;
  5. uchar code T[49][2]={{0,0},
  6. {0xF8,0x8B},{0xF8,0xF2},{0xF9,0x5B},{0xF9,0xB7},{0xFA,0x14},{0xFA,0x66},{0xFA,0xB9},{0xFB,0x03},{0xFB,0x4A},{0xFB,0x8F},{0xFB,0xCF},{0xFC,0x0B},
  7. {0xFC,0x43},{0xFC,0x78},{0xFC,0xAB},{0xFC,0xDB},{0xFD,0x08},{0xFD,0x33},{0xFD,0x5B},{0xFD,0x81},{0xFD,0xA5},{0xFD,0xC7},{0xFD,0xE7},{0xFE,0x05},
  8. {0xFE,0x21},{0xFE,0x3C},{0xFE,0x55},{0xFE,0x6D},{0xFE,0x84},{0xFE,0x99},{0xFE,0xAD},{0xFE,0xC0},{0xFE,0x02},{0xFE,0xE3},{0xFE,0xF3},{0xFF,0x02},
  9. {0xFF,0x10},{0xFF,0x1D},{0xFF,0x2A},{0xFF,0x36},{0xFF,0x42},{0xFF,0x4C},{0xFF,0x56},{0xFF,0x60},{0xFF,0x69},{0xFF,0x71},{0xFF,0x79},{0xFF,0x81}
  10. };
  11. uchar code music1[][2]={{0,4},
  12. {32,2},{25,2},{25,2},{25,2},{25,2},{0xFF,0xFF}};
  13. uchar code music2[][2]={{0,4},
  14. {20,4},{22,4},{25,12},{27,4},{29,4},{0xFF,0xFF}};
  15. uchar code music3[][2]={{0,4},
  16. {29,8},{25,4},{22,4},{20,16},{32,8},{0xFF,0xFF}};
  17. void delay(uchar p)
  18. {
  19.     uchar i,j;
  20.     for(;p>0;p--)
  21.     for(i=130;i>0;i--)
  22.     for(j=130;j>0;j--);
  23. }
  24. void T0_int() interrupt 1
  25. {
  26. P54=!P54;
  27. TH0=T[m][0];
  28.         TL0=T[m][1];
  29. }
  30. void bofang(uchar g[][2])
  31.         {
  32.                 uchar i=0;
  33. while(m!=0xFF)
  34.       {
  35.         m=g[i][0];
  36.                                 n=g[i][1];
  37.            if(m==0x00)
  38.              {
  39.                                                  TR0=0;
  40.                                                  delay(n);
  41.                                                  i++;
  42.                                                  }
  43. else if(m==0xFF)
  44.              {
  45.                                                  TR0=0;
  46.                                                  }                                                 
  47.            else
  48.              {
  49.                                                  TR0=1;
  50.                                                  delay(n);
  51.                                                  i++;
  52.                                                  }
  53.       }
  54.                         i=0;
  55.                         m=0;
  56.                         n=0;
  57.                 }
  58. void main()
  59. {
  60. TMOD=0x01;  
  61.         EA=1;
  62.         ET0=1;
  63.         while(1)
  64.         {
  65.                 bofang(music1);
  66.                 bofang(music2);
  67.                 bofang(music3);
  68.         }
  69. }
复制代码


这个程序是STC单片机播放音乐的,一个music数组是一首歌,程序最后的bofang(music);语句怎么写能简化,如果我有N首歌,写N句bofang(music);很麻烦,怎么写一个循环,实现从music1到musicN循环播放,就是每循环一次括号里music后面数字就+1


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

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-12-23 17:18 , Processed in 0.234001 second(s), 12 queries , Gzip On, Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

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