⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 f15play.c

📁 sta015t(mp3)的源程序
💻 C
📖 第 1 页 / 共 3 页
字号:
sbit p1_6=p1^6;
sbit p1_2=p1^2;
sbit p1_0=p1^0;
sbit p1_1=p1^1;

sbit smod_1=wdcon^7;
sbit por   =wdcon^6;     //电源上电标志
sbit wdif  =wdcon^3;     //看门狗中断标志
sbit wtrf  =wdcon^2;     //看门狗复位标志
sbit ewt   =wdcon^1;     //允许看门狗复位
sbit rwt   =wdcon^0;     //复位看门狗




#define nop _nop_()
#define nop2  _nop_(); _nop_(); _nop_(); _nop_(); _nop_()
#define uint unsigned int
#define uchar unsigned char
#define ulong unsigned long

#define timer0_mode_16bit   tmod=tmod&0xf0;tmod=tmod|0x01
#define timer0_mode_13bit   tmod=tmod&0xf0;tmod=tmod|0x00
#define timer1_mode_16bit   tmod=tmod&0x0f;tmod=tmod|0x10
#define timer0_mode_autoreload tmod=tmod&0xf0;tmod=tmod|0x02
#define timer0_interrupt_disable et0=0
#define timer0_interrupt_enable et0=1; ea=1
#define timer0_stop tr0=0
#define timer1_stop tr1=0
#define timer0_run  tr0=1
#define timer1_run tr1=1
#define int1_priority_high   px1=1
#define int1_priority_low    px1=0
#define timer2_priority_low  pt2=0
#define int0_priority_high   px0=1
#define int0_priority_low    px0=0
#define serial_priority_high  ps=1
#define serial1_priority_high  ps1=1
#define timer0_priority_high pt0=1
#define int1_interrupt_enable ex1=1  ;ea=1
#define int1_interrupt_disable ex1=0
#define int0_mode_hightolow   it0=1
#define int1_mode_hightolow   it1=1
#define int0_interrupt_enable ex0=1 ;ea=1
#define int0_interrupt_disable ex0=0
#define timer2_interrupt_disable et2=0
#define timer2_interrupt_enable  et2=1;ea=1
#define serial_interrupt_disable es=0
#define serial_interrupt_enable es=1;ea=1
#define serial1_interrupt_enable  es1=1;ea=1
#define serial1_interrupt_disable  es1=0
#define timer1_interrupt_disable et1=0
#define timer1_interrupt_enable  et1=1 ; ea=1

#define serial_baund_9600 tmod=tmod&0x0f;tmod=tmod|0x20;th1=0xfd;tr1=1
#define serial1_baund_9600 tmod=tmod&0x0f;tmod=tmod|0x20;th1=0xfd;tr1=1
#define serial_baund_19200 tmod=tmod&0x0f;tmod=tmod|0x20;th1=0xfd;tr1=1;pcon=pcon|0x80 //11.0592m
#define serial_baund_28800 tmod=tmod&0x0f;tmod=tmod|0x20;th1=0xff;tr1=1//;pcon=pcon|0x80
#define serial_baund_57600 tmod=tmod&0x0f;tmod=tmod|0x20;th1=0xff;tr1=1;pcon=pcon|0x80
#define serial1_baund_19200 tmod=tmod&0x0f;tmod=tmod|0x20;th1=0xfd;tr1=1;wdcon=wdcon|0x80
#define serial_baund_9600_33mhz    tmod=tmod&0x0f; tmod=tmod|0x20; th1=0xf7; tr1=1
#define serial_baund_14400_33mhz    tmod=tmod&0x0f; tmod=tmod|0x20; th1=0xfa; tr1=1
#define serial_baund_28800_33mhz    tmod=tmod&0x0f; tmod=tmod|0x20; th1=0xfd; tr1=1
    //bt=(2/(32*12))*f/(256-x)=  0.005208333333*f/(256-x)


#define serial_baund_1200 tmod=tmod&0x0f;tmod=tmod|0x20;th1=0xe8;tr1=1
#define serial_baund_2400 tmod=tmod&0x0f;tmod=tmod|0x20;th1=0xf4;tr1=1
#define serial_baund_19200_timer2   t2con=0x34;rcap2h=0xff;rcap2l=0xee;tr2=1
#define serial_baund_9600_timer2   t2con=0x34;rcap2h=0xff;rcap2l=0xdc
#define serial_baund_1200_timer2   t2con=0x34;rcap2h=0xfe;rcap2l=0xe0;tr2=1
#define serial_baund_4800_timer2   t2con=0x34;rcap2h=0xff;rcap2l=0xb8;tr2=1
#define serial1_baund_2400 tmod=tmod&0x0f;tmod=tmod|0x20;th1=0xf4;tr1=1
#define serial1_baund_4800 tmod=tmod&0x0f;tmod=tmod|0x20;th1=0xfa;tr1=1
#define serial1_baund_1200 tmod=tmod&0x0f;tmod=tmod|0x20;th1=0xe8;tr1=1
#define serial_baund_4800 tmod=tmod&0x0f;tmod=tmod|0x20;th1=0xfa;tr1=1

#define serial_uart_8     sm0=0;sm1=1;sm2=0;tr1=1
#define serial1_uart_8    sm0_1=0;sm1_1=1;sm2_1=0;tr1=1
#define serial_uart_9     sm0=1;sm1=1;sm2=0;tr1=1
#define serial1_uart_9    sm0_1=1; sm1_1=1;tr1=1
#define serial_receive_enable ren=1
#define serial1_receive_enable ren_1=1
#define serial_baund_double   pcon=pcon|0x80

#define timer2_mode_autoreload   cp_rl=0
#define timer2_mode_capture     cp_rl=1
#define timer2_externcontrols_enable exen2=1
#define timer2_externcontrols_disable exen2=0
#define timer2_run tr2=1
#define timer2_stop tr2=0

#define timer2_speed_3  ckcon=ckcon|0x20
#define timer1_speed_3   ckcon=ckcon|0x10
#define timer0_speed_3  ckcon=ckcon|0x08
#define externram_enable  pmr=pmr|0x01
#define externram_disable  pmr=pmr & 0xfe
#define ws_enable  rommap = rommap | 0x80
#define ws_disable  rommap = rommap & 0x7f

#define movx_2      ckcon=(ckcon & 0xf8)
#define movx_3      ckcon=(ckcon & 0xf8)|0x01
#define movx_4      ckcon=(ckcon & 0xf8)|0x02
#define movx_5      ckcon=(ckcon & 0xf8)|0x03
#define movx_6      ckcon=(ckcon & 0xf8)|0x04
#define movx_7      ckcon=(ckcon & 0xf8)|0x05
#define movx_8      ckcon=(ckcon & 0xf8)|0x06
#define movx_9      ckcon=(ckcon & 0xf8)|0x07

#define watch_dog_32ms      ta=0xaa;ta=0x55;ckcon=(ckcon&0x3f)|0x40   //2的20次方定时   32ms
#define watch_dog_254ms     ta=0xaa;ta=0x55;ckcon=(ckcon&0x3f)|0x80   //2的23次方定时   254ms
#define watch_dog_2s        ta=0xaa;ta=0x55;ckcon=(ckcon&0x3f)|0xc0   //2的26次方定时   2s



//#define watch_dog_interrupt_enable   eie=eie|0x10           //dog中断允许
#define watch_dog_reset_enable       ta=0xaa;ta=0x55;ewt=1                  //dog复位允许
#define watch_dog_reset              ta=0xaa;ta=0x55;rwt=1                  //dog复位




#define esc          0x1b
#define int_int0     0
#define int_int1     2
#define int_timer0   1
#define int_timer1   3
#define int_timer2   5
#define int_serial   4
#define int_serial1  7


union u
{
    uint word;
    struct
       {
           uchar high;
           uchar low;
       }bytes;
};
union v          /* 发送顺序为低位在前,高位在后    8019网卡的长度*/
{
    uint word;
    struct
       {
           uchar low;
           uchar high;
       }bytes;
};

union w
{
    ulong dword;
    struct
        {
            uint high;
            uint low;
        }words;
};

union f
{
    ulong dword;
    struct
        {
            uchar high1;
            uchar high2;
            uchar high3;
            uchar high4;
        }dwords;
};


bdata uchar indat;        //用于前台程序
sbit  dat0  = indat^0;
sbit  dat1  = indat^1;
sbit  dat2  = indat^2;
sbit  dat3  = indat^3;
sbit  dat4  = indat^4;
sbit  dat5  = indat^5;
sbit  dat6  = indat^6;
sbit  dat7  = indat^7;
bdata uchar sbfdat;       //用于中断程序
sbit  fdat0  = sbfdat^0;
sbit  fdat1  = sbfdat^1;
sbit  fdat2  = sbfdat^2;
sbit  fdat3  = sbfdat^3;
sbit  fdat4  = sbfdat^4;
sbit  fdat5  = sbfdat^5;
sbit  fdat6  = sbfdat^6;
sbit  fdat7  = sbfdat^7;

sbit  sdi   = P1^0;         // mp3数据入015的移位数据入
sbit  sckr  = P1^1;         // mp3数据入015的移位时钟
sbit  m_scl = P1^2;         // i2c总线时钟
sbit  m_sda = P1^4;         // i2c总线数据
sbit  req   = P1^5;         // 数据空中断线
sbit  vol_b0  = P1^3;         //  低位
sbit  vol_b1  = P1^6;         //  三线对讲音量 0最大  7最小
sbit  vol_b2  = P3^4;         //  高位
sbit  monitor_b  = P1^7;         //  监听控制   0=监听
sbit  my_sond    = P3^5;         //  自己音接通 1=接通
sbit  comm       = p3^3;         //与机芯板通讯
sbit  comm1      = p3^2;         //与机芯板通讯

#define  reset_015_on    indat=p4;dat1=0;p4=indat    //mp3硬件复位
#define  reset_015_off   indat=p4;dat1=1;p4=indat
#define  send_sond_1     indat=p4;dat3=1;p4=indat    //送话控制
#define  send_sond_0     indat=p4;dat3=0;p4=indat
#define  reci_sond_1     indat=p4;dat2=1;p4=indat    //收话控制
#define  reci_sond_0     indat=p4;dat2=0;p4=indat
#define  u4550_on        indat=p4;dat0=1;p4=indat    //4550播放开
#define  u4550_off       indat=p4;dat0=0;p4=indat



/* 按键代码 */
#define  KEY_UP              0x5b00         //向上
#define  KEY_DOWN            0x5d00         //向下
#define  KEY_LEFT            0x5c00       //向左
#define  KEY_RIGHT           0x5e00        //向右
#define  KEY_OK              0x1c0d         //ENTER

#define  KEY_CANEL           0x5200        //小0
#define  KEY_HELP            0xe800         //小num
#define  KEY_DEL             0x2308         //<-退格
#define  KEY_DEL1            0x5800         //DEL
//#define  KEY_DIALOG           0x01e2
#define  KEY_JMP             0x5100         //小3
#define  KEY_VOLUP           0x4700         //小7
#define  KEY_REC             0x5000       //小2
#define  KEY_PLAY            0x4b00        //小4
#define  KEY_FAST            0x4c00         //小5
#define  KEY_FAW             0x4d00        //小6
#define  KEY_STOP            0x4f00        //小1
#define  KEY_VOLDOWN         0x4800         //小8
#define  KEY_PGUP            0x5700        //PGUP
#define  KEY_PGDN            0x5a00        //PGDN
#define  KEY_TUP             0x4a00         //小+         上题
#define  KEY_TDN             0x6d00         //小ENTER     下题
#define  KEY_TRACK           0x6000         //小/
#define  KEY_CEYIN           0x6200         //小-
#define  KEY_TIMBRE          0x6100         //小*
#define  KEY_XIUGAI          0x4900         //小9
#define  KEY_CALL            0x5300        //小DEL

#define  KEY_FASTH           0x0000         //小5
#define  KEY_FAWH            0x0001        //小6

#define  KEY_ZW_START        0x4000        //f1
#define  KEY_ZW_END          0x4100        //f2
#define  KEY_ZW_SEND         0x4200        //f3



#define  KEY_1       0x0231
#define  KEY_2       0x0332
#define  KEY_3       0x0433
#define  KEY_4       0x0534
#define  KEY_5       0x0635
#define  KEY_6       0x0736
#define  KEY_7       0x0837
#define  KEY_8       0x0938
#define  KEY_9       0x0a39
#define  KEY_0       0x0b3a
#define  KEY_XD      0x2960
#define  KEY_SUBB    0x0c2d    //-
#define  KEY_DEN     0x0d3d    //=
#define  KEY_FAN      0x2b5c     //|

#define  KEY_q	     0x1071
#define  KEY_w	     0x1177
#define  KEY_e	     0x1265
#define  KEY_r	     0x1372
#define  KEY_t	     0x1474
#define  KEY_y	     0x1579
#define  KEY_u	     0x1675
#define  KEY_i	     0x1769
#define  KEY_o	     0x186f
#define  KEY_p	     0x1970
#define  KEY_ZUO     0x1a5b   //[
#define  KEY_YOU     0x1b5d   //]

#define  KEY_a	     0x1e61
#define  KEY_s	     0x1f73
#define  KEY_d	     0x2064
#define  KEY_f	     0x2166
#define  KEY_g	     0x2267
#define  KEY_h	     0x2368
#define  KEY_j	     0x246a
#define  KEY_k	     0x256b
#define  KEY_l	     0x266c
#define  KEY_FEN     0x273b   //;
#define  KEY_DAN     0x2827   //'
#define  KEY_z	     0x2c7a
#define  KEY_x	     0x2d78
#define  KEY_c	     0x2e63
#define  KEY_v	     0x2f76
#define  KEY_b	     0x3062
#define  KEY_n	     0x316e
#define  KEY_m	     0x326d
#define  KEY_DU	     0x332c   //,
#define  KEY_DIAN    0x342e   //.
#define  KEY_XIE     0x352f   //  /线
#define  KEY_blank   0x3920

#define  KEY_SUI     0x297e   //~
#define  KEY_1H	     0x0221   //!
#define  KEY_2H	     0x0340   //@
#define  KEY_3H	     0x0423   //#
#define  KEY_4H	     0x0524   //$
#define  KEY_5H	     0x0625   //%
#define  KEY_6H	     0x075e   //^
#define  KEY_7H	     0x0826   //&
#define  KEY_8H	     0x092a   //*
#define  KEY_9H	     0x0a28   //(
#define  KEY_0H	     0x0b29   //)
#define  KEY__	     0x0c5f   //_
#define  KEY_DENH    0x0d2b   //+
#define  KEY_ZI      0x2b7c   //\

#define  KEY_Q	     0x1051
#define  KEY_W	     0x1157
#define  KEY_E	     0x1245
#define  KEY_R	     0x1352
#define  KEY_T	     0x1454
#define  KEY_Y	     0x1559
#define  KEY_U	     0x1655
#define  KEY_I	     0x1749
#define  KEY_O	     0x184f
#define  KEY_P	     0x1950
#define  KEY_DZUO    0x1a7b   //{
#define  KEY_DYOU    0x1a7d   //}
#define  KEY_A	     0x1a41
#define  KEY_S	     0x1f53
#define  KEY_D	     0x2044
#define  KEY_F	     0x2146
#define  KEY_G	     0x2247
#define  KEY_H	     0x2348
#define  KEY_J	     0x244a
#define  KEY_K	     0x254b
#define  KEY_L	     0x264c
#define  KEY_MAO     0x273a   //:
#define  KEY_SHUANG  0x2822   //"
#define  KEY_Z	     0x2c5a
#define  KEY_X	     0x2d58
#define  KEY_C	     0x2e43
#define  KEY_V	     0x2f56
#define  KEY_B	     0x3042
#define  KEY_N	     0x314e
#define  KEY_M	     0x324d
#define  KEY_KUOL    0x333c   //<
#define  KEY_KUOR    0x343e   //>
#define  KEY_WEN     0x353f   //>


#define      MBT_MAX              24      //主标题字节数
#define      MY_MAX               14      //主页信息字节数
#define      MWB_MAX              1390    //主文本字节数
#define      MDJ_MAX              78      //主答卷字节数
#define      MFZ_MAX              51      //主辅助信息字节数
#define      MBF_MAX              15      //主音频播放进程字节数
#define      MYL_MAX              12      //主音量图标字节数
#define      FBT_MAX              22      //副标题字节数
#define      FWB_MAX              78      //副文本字节数
//    #define      MBT_MAX              24      //主标题字节数
//    #define      MY_MAX               14      //主页信息字节数
//    #define      MWB_MAX              456     //主文本字节数
//    #define      MDJ_MAX              38      //主答卷字节数
//    #define      MFZ_MAX              11      //主辅助信息字节数
//    #define      MBF_MAX              15      //主音频播放进程字节数
//    #define      MYL_MAX              12      //主音量图标字节数
//    #define      FBT_MAX              22      //副标题字节数
//    #define      FWB_MAX              88      //副文本字节数

#define  RECI_SOND_OFF   0
#define  RECI_SOND_ON    1
#define  SEND_SOND_OFF   0
#define  SEND_SOND_ON    1
#define  MONITOR_B_OFF   1
#define  MONITOR_B_ON    0
#define  MY_SOND_OFF     0
#define  MY_SOND_ON      1

idata uchar  timer1=0;
idata uchar  timer2=0;      //定时器
idata uchar  timer10=0;     //定时器
idata uchar  timer40=0;     //定时器

bit    cee=0;               //侧音标志=0关,=1开



xdata   uchar   text[2100];          //0-569为主界面文本显示缓冲区  570-679为副界面文本显示缓冲区
xdata   uchar   zwen[2100];          //作文接收缓冲区

#define reg00   XBYTE[0x8000]

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -