源文件見附件
單片機源程序如下:
- /*
- EEPROM分配
- 塊一到塊六為LED顯示數(shù)據(jù)區(qū)
- 塊七為音樂數(shù)據(jù)區(qū)
- 塊八為參數(shù)區(qū)-----0到5為保存每塊有多少個漢字
- IAP_ADDRESS8+6為下載了多少塊的參數(shù) bank
- IAP_ADDRESS8+9為上電基數(shù)次和偶數(shù)次參數(shù)
- IAP_ADDRESS8+10為音樂下載標志。
- IAP_ADDRESS8+11為音樂速度參數(shù)。
- */
- #include<reg52.h>
- #include<intrins.h>
- #include<stdio.h>
- #define unchar unsigned char
- #define uint unsigned int
- //全局變量
- unsigned char *music_p[8];
- unsigned char *LED_p1[8];
- unsigned char *LED_p2[4];
- unsigned char *LED_p3[4];
- unsigned char *LED_p4[4];
- unsigned char *LED_p5[4];
- unsigned char *LED_p6[4];
- unsigned char *LED_p7[4];
- unsigned char *LED_p8[4];
- sfr IPH=0xB7;
- unchar xianshi_enable=0,midder_led_code=0;
- uint hh=0,tt=300;
- typedef unsigned char BYTE;
- typedef unsigned int WORD;
- void delay(unchar number);
- void LED_display(void);
- void display(unchar qian,unchar bai,unchar shi,unchar gei);
- void DelayMs(unsigned char ms);
- void send_uart(unsigned char ad);
- BYTE IapReadByte(WORD addr);
- unsigned char RECEIVR_buffer[150]={0};//512
- unsigned char Music_buffer[10]={0};
- unsigned char receive_number=0;
- //-----------------------------------------------------------------
- void UART_init(); //串口初始化函數(shù)
- void COM_send(char string); //串口發(fā)送函數(shù)
- unsigned char flag=0,flag1=0;
-
- #define uchar unsigned char //定義一下方便使用
- #define uint unsigned int
- void uart_send(uchar string);
- void delay_us(unsigned char t);
- uchar timer_led=0,begin_LED=0,change_code=0,music_num=0,can_add=1,circle_display=0;
- uchar LED_code=0;
- uchar timer_out=0,one_timer=0,one_timer1=0;
- //code 的內(nèi)容只能讀,不能改 所以如果需要修改數(shù)組里面的內(nèi)容的話 就不能定義成code形式
- //T0 的值,及輸出頻率對照表
- #define uchar unsigned char
- #define uint unsigned int
- #define SYSTEM_OSC 11059200//12000000 //定義晶振頻率12000000HZ
- #define SOUND_SPACE 4/5 //定義普通音符演奏的長度分率,//每4分音符間隔
- sbit BeepIO = P3^7; //定義輸出管腳
- unsigned int code FreTab[12] = { 262,277,294,311,330,349,369,392,415,440,466,494 }; //原始頻率表
- unsigned char code SignTab[7] = { 0,2,4,5,7,9,11 }; //1~7在頻率表中的位置
- unsigned char code LengthTab[7]= { 1,2,4,8,16,32,64 };
- unsigned char Sound_Temp_TH0,Sound_Temp_TL0; //音符定時器初值暫存
- unsigned char Sound_Temp_TH1,Sound_Temp_TL1; //音長定時器初值暫存
- unsigned char code Music_Code0[]={ 0x0F,0x01, 0x15,0x02, 0x16,0x02, 0x17,0x66, 0x18,0x03,
- 0x17,0x02, 0x15,0x02, 0x16,0x01, 0x15,0x02, 0x10,0x02,
- 0x15,0x00, 0x0F,0x01, 0x15,0x02, 0x16,0x02, 0x17,0x02,
- 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x15,0x02, 0x18,0x66,
- 0x17,0x03, 0x19,0x02, 0x16,0x03, 0x17,0x03, 0x16,0x00,
- 0x17,0x01, 0x19,0x02, 0x1B,0x02, 0x1B,0x70, 0x1A,0x03,
- 0x1A,0x01, 0x19,0x02, 0x19,0x03, 0x1A,0x03, 0x1B,0x02,
- 0x1A,0x0D, 0x19,0x03, 0x17,0x00, 0x18,0x66, 0x18,0x03,
- 0x19,0x02, 0x1A,0x02, 0x19,0x0C, 0x18,0x0D, 0x17,0x03,
- 0x16,0x01, 0x11,0x02, 0x11,0x03, 0x10,0x03, 0x0F,0x0C,
- 0x10,0x02, 0x15,0x00, 0x1F,0x01, 0x1A,0x01, 0x18,0x66,
- 0x19,0x03, 0x1A,0x01, 0x1B,0x02, 0x1B,0x03, 0x1B,0x03,
- 0x1B,0x0C, 0x1A,0x0D, 0x19,0x03, 0x17,0x00, 0x1F,0x01,
- 0x1A,0x01, 0x18,0x66, 0x19,0x03, 0x1A,0x01, 0x10,0x02,
- 0x10,0x03, 0x10,0x03, 0x1A,0x0C, 0x18,0x0D, 0x17,0x03,
- 0x16,0x00, 0x0F,0x01, 0x15,0x02, 0x16,0x02, 0x17,0x70,
- 0x18,0x03, 0x17,0x02, 0x15,0x03, 0x15,0x03, 0x16,0x66,
- 0x16,0x03, 0x16,0x02, 0x16,0x03, 0x15,0x03, 0x10,0x02,
- 0x10,0x01, 0x11,0x01, 0x11,0x66, 0x10,0x03, 0x0F,0x0C,
- 0x1A,0x02, 0x19,0x02, 0x16,0x03, 0x16,0x03, 0x18,0x66,
- 0x18,0x03, 0x18,0x02, 0x17,0x03, 0x16,0x03, 0x19,0x00,
- 0x00,0x00 };
- unsigned char code Music_Code1[]={ 0x21,0x01, 0x20,0x02, 0x20,0x67, 0x21,0x04, 0x1F,0x14,
- 0x17,0x02, 0x1F,0x02, 0x1A,0x03, 0x19,0x03, 0x17,0x02,
- 0x19,0x14, 0x19,0x02, 0x19,0x03, 0x1A,0x03, 0x1F,0x02,
- 0x1F,0x67, 0x1F,0x04, 0x1A,0x02, 0x1F,0x02, 0x17,0x01,
- 0x19,0x02, 0x19,0x03, 0x1A,0x03, 0x19,0x02, 0x17,0x03,
- 0x16,0x03, 0x16,0x14, 0x21,0x01, 0x20,0x02, 0x20,0x67,
- 0x21,0x04, 0x1F,0x14, 0x17,0x02, 0x1F,0x02, 0x1A,0x03,
- 0x19,0x03, 0x17,0x02, 0x19,0x14, 0x19,0x03, 0x19,0x02,
- 0x1A,0x03, 0x1F,0x02, 0x1F,0x02, 0x1A,0x02, 0x19,0x03,
- 0x1A,0x03, 0x17,0x16, 0x17,0x03, 0x21,0x03, 0x21,0x02,
- 0x21,0x03, 0x21,0x02, 0x20,0x03, 0x1A,0x03, 0x1F,0x14,
- 0x1F,0x01, 0x1B,0x02, 0x1A,0x03, 0x1F,0x03, 0x17,0x00,
- 0x19,0x66, 0x19,0x03, 0x10,0x02, 0x17,0x03, 0x16,0x03,
- 0x16,0x00, 0x17,0x66, 0x19,0x03, 0x1A,0x02, 0x1A,0x67,
- 0x1A,0x04, 0x1A,0x02, 0x1F,0x03, 0x17,0x03, 0x17,0x01,
- 0x1F,0x66, 0x1F,0x03, 0x1A,0x02, 0x1F,0x02, 0x21,0x66,
- 0x20,0x03, 0x20,0x01, 0x21,0x01, 0x21,0x03, 0x20,0x02,
- 0x1F,0x03, 0x21,0x00, 0x20,0x02, 0x20,0x02, 0x1A,0x02,
- 0x21,0x03, 0x20,0x03, 0x20,0x00, 0x1F,0x02, 0x1F,0x03,
- 0x20,0x03, 0x21,0x02, 0x21,0x02, 0x20,0x02, 0x1F,0x03,
- 0x1B,0x03, 0x1A,0x01, 0x19,0x02, 0x19,0x03, 0x17,0x03,
- 0x21,0x02, 0x19,0x03, 0x1A,0x03, 0x1F,0x14, 0x00,0x00 };//當兵的人
- unsigned char code Music_Code2[]={ 0x21,0x02, 0x17,0x03, 0x19,0x03, 0x1A,0x03, 0x1F,0x02,
- 0x1A,0x03, 0x1F,0x02, 0x20,0x02, 0x21,0x03, 0x20,0x66,
- 0x20,0x02, 0x20,0x03, 0x1B,0x03, 0x1A,0x03, 0x1A,0x03,
- 0x17,0x03, 0x19,0x03, 0x1A,0x03, 0x20,0x04, 0x1B,0x03,
- 0x1A,0x03, 0x1A,0x03, 0x19,0x66, 0x1F,0x02, 0x1F,0x03,
- 0x1A,0x03, 0x1A,0x03, 0x20,0x03, 0x1B,0x03, 0x1A,0x03,
- 0x19,0x03, 0x1A,0x03, 0x20,0x03, 0x1B,0x03, 0x1B,0x03,
- 0x24,0x66, 0x00,0x00 };
- //揮著翅膀的女孩
- unsigned char code Music_Code3[]={ 0x17,0x02, 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x15,0x03,
- 0x16,0x03, 0x17,0x03, 0x17,0x03, 0x17,0x03, 0x18,0x03,
- 0x19,0x02, 0x16,0x03, 0x17,0x03, 0x18,0x02, 0x18,0x03,
- 0x17,0x03, 0x15,0x02, 0x18,0x03, 0x17,0x03, 0x18,0x02,
- 0x10,0x03, 0x15,0x03, 0x16,0x02, 0x15,0x03, 0x16,0x03,
- 0x17,0x02, 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x1A,0x03,
- 0x1B,0x03, 0x1F,0x03, 0x1F,0x03, 0x17,0x03, 0x18,0x03,
- 0x19,0x02, 0x16,0x03, 0x17,0x03, 0x18,0x03, 0x17,0x03,
- 0x18,0x03, 0x1F,0x03, 0x1F,0x02, 0x16,0x03, 0x17,0x03,
- 0x18,0x03, 0x17,0x03, 0x18,0x03, 0x20,0x03, 0x20,0x02,
- 0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x20,0x03, 0x21,0x03,
- 0x20,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x1F,0x03,
- 0x1B,0x03, 0x19,0x03, 0x19,0x03, 0x15,0x03, 0x1A,0x66,
- 0x1A,0x03, 0x19,0x03, 0x15,0x03, 0x15,0x03, 0x17,0x03,
- 0x16,0x66, 0x17,0x04, 0x18,0x04, 0x18,0x03, 0x19,0x03,
- 0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x20,0x03, 0x21,0x03,
- 0x20,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66, 0x1F,0x03,
- 0x1B,0x03, 0x19,0x03, 0x19,0x03, 0x15,0x03, 0x1A,0x66,
- 0x1A,0x03, 0x19,0x03, 0x19,0x03, 0x1F,0x03, 0x1B,0x03,
- 0x1F,0x00, 0x1A,0x03, 0x1A,0x03, 0x1A,0x03, 0x1B,0x03,
- 0x1B,0x03, 0x1A,0x03, 0x19,0x03, 0x19,0x02, 0x17,0x03,
- 0x15,0x17, 0x15,0x03, 0x16,0x03, 0x17,0x03, 0x18,0x03,
- 0x17,0x04, 0x18,0x0E, 0x18,0x03, 0x17,0x04, 0x18,0x0E,
- 0x18,0x66, 0x17,0x03, 0x18,0x03, 0x17,0x03, 0x18,0x03,
- 0x20,0x03, 0x20,0x02, 0x1F,0x03, 0x1B,0x03, 0x1F,0x66,
- 0x20,0x03, 0x21,0x03, 0x20,0x03, 0x1F,0x03, 0x1B,0x03,
- 0x1F,0x66, 0x1F,0x04, 0x1B,0x0E, 0x1B,0x03, 0x19,0x03,
- 0x19,0x03, 0x15,0x03, 0x1A,0x66, 0x1A,0x03, 0x19,0x03,
- 0x15,0x03, 0x15,0x03, 0x17,0x03, 0x16,0x66, 0x17,0x04,
- 0x18,0x04, 0x18,0x03, 0x19,0x03, 0x1F,0x03, 0x1B,0x03,
- 0x1F,0x66, 0x20,0x03, 0x21,0x03, 0x20,0x03, 0x1F,0x03,
- 0x1B,0x03, 0x1F,0x66, 0x1F,0x03, 0x1B,0x03, 0x19,0x03,
- 0x19,0x03, 0x15,0x03, 0x1A,0x66, 0x1A,0x03, 0x19,0x03,
- 0x19,0x03, 0x1F,0x03, 0x1B,0x03, 0x1F,0x00, 0x18,0x02,
- 0x18,0x03, 0x1A,0x03, 0x19,0x0D, 0x15,0x03, 0x15,0x02,
- 0x18,0x66, 0x16,0x02, 0x17,0x02, 0x15,0x00, 0x00,0x00};
- //同一首歌
- unsigned char code Music_Code4[]={ 0x0F,0x01, 0x15,0x02, 0x16,0x02, 0x17,0x66, 0x18,0x03,
- 0x17,0x02, 0x15,0x02, 0x16,0x01, 0x15,0x02, 0x10,0x02,
- 0x15,0x00, 0x0F,0x01, 0x15,0x02, 0x16,0x02, 0x17,0x02,
- 0x17,0x03, 0x18,0x03, 0x19,0x02, 0x15,0x02, 0x18,0x66,
- 0x17,0x03, 0x19,0x02, 0x16,0x03, 0x17,0x03, 0x16,0x00,
- 0x17,0x01, 0x19,0x02, 0x1B,0x02, 0x1B,0x70, 0x1A,0x03,
- 0x1A,0x01, 0x19,0x02, 0x19,0x03, 0x1A,0x03, 0x1B,0x02,
- 0x1A,0x0D, 0x19,0x03, 0x17,0x00, 0x18,0x66, 0x18,0x03,
- 0x19,0x02, 0x1A,0x02, 0x19,0x0C, 0x18,0x0D, 0x17,0x03,
- 0x16,0x01, 0x11,0x02, 0x11,0x03, 0x10,0x03, 0x0F,0x0C,
- 0x10,0x02, 0x15,0x00, 0x1F,0x01, 0x1A,0x01, 0x18,0x66,
- 0x19,0x03, 0x1A,0x01, 0x1B,0x02, 0x1B,0x03, 0x1B,0x03,
- 0x1B,0x0C, 0x1A,0x0D, 0x19,0x03, 0x17,0x00, 0x1F,0x01,
- 0x1A,0x01, 0x18,0x66, 0x19,0x03, 0x1A,0x01, 0x10,0x02,
- 0x10,0x03, 0x10,0x03, 0x1A,0x0C, 0x18,0x0D, 0x17,0x03,
- 0x16,0x00, 0x0F,0x01, 0x15,0x02, 0x16,0x02, 0x17,0x70,
- 0x18,0x03, 0x17,0x02, 0x15,0x03, 0x15,0x03, 0x16,0x66,
- 0x16,0x03, 0x16,0x02, 0x16,0x03, 0x15,0x03, 0x10,0x02,
- 0x10,0x01, 0x11,0x01, 0x11,0x66, 0x10,0x03, 0x0F,0x0C,
- 0x1A,0x02, 0x19,0x02, 0x16,0x03, 0x16,0x03, 0x18,0x66,
- 0x18,0x03, 0x18,0x02, 0x17,0x03, 0x16,0x03, 0x19,0x00,
- 0x00,0x00 };
- unsigned char code Music_Code5[]={ 0x15,0x02, 0x16,0x02, 0x17,0x02, 0x15,0x02, 0x15,0x02,
- 0x16,0x02, 0x17,0x02, 0x15,0x02, 0x17,0x02, 0x18,0x02,
- 0x19,0x01, 0x17,0x02, 0x18,0x02, 0x19,0x01, 0x19,0x03,
- 0x1A,0x03, 0x19,0x03, 0x18,0x03, 0x17,0x02, 0x15,0x02,
- 0x19,0x03, 0x1A,0x03, 0x19,0x03, 0x18,0x03, 0x17,0x02,
- 0x15,0x02, 0x15,0x02, 0x0F,0x02, 0x15,0x01, 0x15,0x02,
- 0x0F,0x02, 0x15,0x01, 0x00,0x00 }; //兩只老虎
- //兩只蝴蝶
- unsigned char code Music_Code6[] ={ 0x17,0x03, 0x16,0x03, 0x17,0x01, 0x16,0x03, 0x17,0x03,
- 0x16,0x03, 0x15,0x01, 0x10,0x03, 0x15,0x03, 0x16,0x02,
- 0x16,0x0D, 0x17,0x03, 0x16,0x03, 0x15,0x03, 0x10,0x03,
- 0x10,0x0E, 0x15,0x04, 0x0F,0x01, 0x17,0x03, 0x16,0x03,
- 0x17,0x01, 0x16,0x03, 0x17,0x03, 0x16,0x03, 0x15,0x01,
- 0x10,0x03, 0x15,0x03, 0x16,0x02, 0x16,0x0D, 0x17,0x03,
- 0x16,0x03, 0x15,0x03, 0x10,0x03, 0x15,0x03, 0x16,0x01,
- 0x17,0x03, 0x16,0x03, 0x17,0x01, 0x16,0x03, 0x17,0x03,
- 0x16,0x03, 0x15,0x01, 0x10,0x03, 0x15,0x03, 0x16,0x02,
- 0x16,0x0D, 0x17,0x03, 0x16,0x03, 0x15,0x03, 0x10,0x03,
- 0x10,0x0E, 0x15,0x04, 0x0F,0x01, 0x17,0x03, 0x19,0x03,
- 0x19,0x01, 0x19,0x03, 0x1A,0x03, 0x19,0x03, 0x17,0x01,
- 0x16,0x03, 0x16,0x03, 0x16,0x02, 0x16,0x0D, 0x17,0x03,
- 0x16,0x03, 0x15,0x03, 0x10,0x03, 0x10,0x0D, 0x15,0x00,
- 0x19,0x03, 0x19,0x03, 0x1A,0x03, 0x1F,0x03, 0x1B,0x03,
- 0x1B,0x03, 0x1A,0x03, 0x17,0x0D, 0x16,0x03, 0x16,0x03,
- 0x16,0x0D, 0x17,0x01, 0x17,0x03, 0x17,0x03, 0x19,0x03,
- 0x1A,0x02, 0x1A,0x02, 0x10,0x03, 0x17,0x0D, 0x16,0x03,
- 0x16,0x01, 0x17,0x03, 0x19,0x03, 0x19,0x03, 0x17,0x03,
- 0x19,0x02, 0x1F,0x02, 0x1B,0x03, 0x1A,0x03, 0x1A,0x0E,
- 0x1B,0x04, 0x17,0x02, 0x1A,0x03, 0x1A,0x03, 0x1A,0x0E,
- 0x1B,0x04, 0x1A,0x03, 0x19,0x03, 0x17,0x03, 0x16,0x03,
- 0x17,0x0D, 0x16,0x03, 0x17,0x03, 0x19,0x01, 0x19,0x03,
- 0x19,0x03, 0x1A,0x03, 0x1F,0x03, 0x1B,0x03, 0x1B,0x03,
- 0x1A,0x03, 0x17,0x0D, 0x16,0x03, 0x16,0x03, 0x16,0x03,
- 0x17,0x01, 0x17,0x03, 0x17,0x03, 0x19,0x03, 0x1A,0x02,
- 0x1A,0x02, 0x10,0x03, 0x17,0x0D, 0x16,0x03, 0x16,0x01,
- 0x17,0x03, 0x19,0x03, 0x19,0x03, 0x17,0x03, 0x19,0x03,
- 0x1F,0x02, 0x1B,0x03, 0x1A,0x03, 0x1A,0x0E, 0x1B,0x04,
- 0x17,0x02, 0x1A,0x03, 0x1A,0x03, 0x1A,0x0E, 0x1B,0x04,
- 0x17,0x16, 0x1A,0x03, 0x1A,0x03, 0x1A,0x0E, 0x1B,0x04,
- 0x1A,0x03, 0x19,0x03, 0x17,0x03, 0x16,0x03, 0x0F,0x02,
- 0x10,0x03, 0x15,0x00, 0x00,0x00 };
- unsigned char code Music_Code7[]={ 0x16,0x03, 0x17,0x03, 0x15,0x02, 0x16,0x03, 0x17,0x03,
- 0x15,0x02, 0x16,0x03, 0x17,0x03, 0x19,0x02, 0x19,0x03,
- 0x1A,0x03, 0x15,0x02, 0x10,0x03, 0x15,0x03, 0x16,0x02,
- 0x16,0x03, 0x15,0x03, 0x10,0x02, 0x10,0x03, 0x15,0x03,
- 0x16,0x03, 0x17,0x03, 0x16,0x03, 0x15,0x0E, 0x16,0x04,
- 0x16,0x02, 0x17,0x03, 0x16,0x0E, 0x15,0x04, 0x15,0x02,
- 0x16,0x03, 0x17,0x03, 0x15,0x02, 0x16,0x03, 0x17,0x03,
- 0x19,0x02, 0x19,0x03, 0x1A,0x03, 0x15,0x02, 0x10,0x03,
- 0x15,0x03, 0x16,0x02, 0x16,0x03, 0x15,0x0E, 0x10,0x04,
- 0x10,0x02, 0x0F,0x04, 0x10,0x0E, 0x15,0x03, 0x15,0x0D,
- 0x15,0x01, 0x17,0x03, 0x19,0x03, 0x19,0x03, 0x19,0x03,
- 0x19,0x03, 0x1A,0x0E, 0x19,0x04, 0x19,0x02, 0x1A,0x03,
- 0x1B,0x03, 0x1F,0x03, 0x1A,0x03, 0x1A,0x03, 0x19,0x0E,
- 0x17,0x04, 0x17,0x02, 0x17,0x03, 0x16,0x0E, 0x15,0x04,
- 0x15,0x02, 0x15,0x02, 0x1A,0x03, 0x19,0x03, 0x19,0x02,
- 0x17,0x02, 0x16,0x03, 0x15,0x03, 0x16,0x02, 0x15,0x03,
- 0x10,0x03, 0x16,0x02, 0x16,0x02, 0x17,0x02, 0x19,0x02,
- 0x19,0x02, 0x19,0x02, 0x19,0x02, 0x1A,0x03, 0x19,0x03,
- 0x19,0x02, 0x1A,0x02, 0x1B,0x02, 0x1F,0x03, 0x1A,0x03,
- 0x1A,0x02, 0x1A,0x02, 0x19,0x03, 0x17,0x03, 0x17,0x02,
- 0x17,0x02, 0x16,0x0D, 0x15,0x03, 0x16,0x02, 0x15,0x03,
- 0x1A,0x0E, 0x19,0x04, 0x19,0x02, 0x17,0x03, 0x16,0x0E,
- 0x15,0x04, 0x16,0x02, 0x10,0x03, 0x1A,0x04, 0x15,0x0E,
- 0x15,0x03, 0x15,0x03, 0x15,0x02, 0x00,0x00 };//朋友
- sfr IAP_DATA=0xE2; // flash data register
- sfr IAP_ADDRH=0xE3; //flash address high
- sfr IAP_ADDRL=0xe4; //falsh address low
- sfr IAP_CMD=0Xe5; //FALSH COMMAND TRGGER
- sfr IAP_TRIG=0xE6; //flash command trigger
- sfr IAP_CONTR=0xE7; //flash control register
- //定義 ISP/IAP/EEPROM 命令
- #define CMD_IDIE 0 //stand-by
- #define CMD_READ 1 //BYTE - READ
- #define CMD_PROGRAM 2 // BYTE- PROGRAM
- #define CMD_ERASE 3 //SECTOR --ERASE
- //define ISP/IAP/EEPROM operation const for IAP_CONTR
- //#define ENABLE_IAP 0X80 //SYSCLK<40MHZ
- #define ENABLE_IAP 0X81 // SYSCLK<20MHZ
- //#define ENABLE_IAP 0x82 //SYSCLK<10MHZ
- //#define ENABLE_IAP 0X83 //SYSCLK<5MHZ
- //Start addtess for STC89C58 eeprom
- #define IAP_ADDRESS1 0x0000
- #define IAP_ADDRESS2 0x0200
- #define IAP_ADDRESS3 0x0400
- #define IAP_ADDRESS4 0x0600
- #define IAP_ADDRESS5 0x0800
- #define IAP_ADDRESS6 0x0A00
- #define IAP_ADDRESS7 0x0C00
- #define IAP_ADDRESS8 0x0E00
- #define Data P1 //數(shù)據(jù)端口
- sbit H1 = P3^0;
- sbit H2 = P3^1;
- sbit H3 = P3^4;
- sbit H4 = P3^5;
- sbit key_change = P3^3;
- sbit bell = P3^7;
- sbit left_right=P3^2;
- sfr WAKE_CLKO = 0x8f;
- sfr CCON = 0xD8;
- sfr CMOD = 0xD9;
- sfr CL = 0xE9;
- sfr CH = 0xF9;
- sfr CCAP0L = 0xEA;
- sfr CCAP0H = 0xFA;
- sfr CCAPM0 = 0xDA;
- sfr CCAPM1 = 0xDB;
- sbit CR = 0xDE;
- sbit CF =CCON^7;
- sbit CCF0 =CCON^0;
- sbit EPCAI =IE^6;
- char begin_timer=1,begin_timer_LED=0,total=0,continue_display=0,music_flag=0,have_music=0;
- //display_LED用來記錄按鍵按了幾次,對應(yīng)顯示那個EEPROM里面的內(nèi)容,是不需要記錄到EEPROM里面的
- //bank用來記錄已經(jīng)下載了多少個EEPROM的塊。
- unsigned char LED_EEPROM_number=0,LED_EEPROM=0,display_LED=0;//LED_EEPROM_number為顯示塊有多少個漢字需要顯示,display_LED為顯示的漢字塊
- char UART_LED_EEPROM_number=0;
- unsigned int total_timer,sleep=340;
- //unsigned int begin_display_timer=2;
- unsigned int PCA_COUNT=1;
- unsigned int CCAP_VALUE=50000;
- char bank=0,down=0;
- unsigned char code LED_0[]=
- {
- //一箭穿心圖片
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x0E,0x80,0x01,0x00,0x1E,0xC0,0x01,0x00,0x3E,0xC0,0x01,0x00,0x7E,0xE0,0x01,0x00,0xFE,0xF0,0x01,0x00,0xFE,0xFF,0x01,0x00,0xFC,0xFF,0x01,0x00,0xF8,0xFF,0x01,0x00,0xE3,0x7F,0x00,0x00,0xC7,0x3F,0x02,0x00,0x8F,0x1F,0x03,0x00,0xBF,0x8F,0x03,0x00,0xFF,0xCF,0x03,0x00,0xFC,0xFF,0x03,0x00,0xF0,0xFF,0x00,0x00,0xC0,0x3F,0x00,0x00,0x80,0x3F,0x00,0x00,0x80,0x0F,0x00,0x00,0xBF,0x0F,0x00,0xC0,0xFF,0x0F,0x00,0xF0,0xFF,0x0F,0x00,0xF0,0xC1,0x1F,0x00,0x78,0x80,0x3F,0x00,
- 0x38,0x80,0x7F,0x00,0x1C,0x80,0xFF,0x01,0x1C,0x80,0xEF,0x01,0x1C,0x80,0xCF,0x03,0x38,0x80,0x8F,0x07,0x38,0x80,0x0F,0x0F,0xF8,0x80,0x0F,0x1E,0xF0,0x81,0x0F,0x1C,0xE0,0x87,0x0F,0x3C,0x80,0x87,0x0F,0x38,0xE0,0x87,0x0F,0x3C,0xF0,0x81,0x0F,0x1C,0xF0,0x80,0x0F,0x1E,0x38,0x80,0x0F,0x0F,0x38,0x80,0x8F,0x07,0x3C,0xBF,0xCF,0x03,0xDC,0xFF,0xEF,0x03,0xFC,0xFF,0xFF,0x01,0xF8,0xC1,0xFF,0x00,0x78,0xC0,0x3F,0x00,0xF8,0xC0,0x7F,0x00,0xF8,0xFF,0xFF,0x00,0xDC,0xFF,0xEF,0x01,0x1C,0xFF,0xCF,0x03,0x1C,0x80,0x8F,0x07,0x38,0x80,0x0F,0x0F,0x38,0x80,0x0F,0x0E,0x78,0x80,0x0F,0x1E,0xF0,0xF0,0x7F,0x1C,0xF0,0xF1,0x7F,0x38,0xE0,0xF7,0x7F,0x78,0x80,0xEF,0x7F,0x70,
- 0x80,0xEF,0x3F,0x70,0xE0,0xE7,0x3F,0x78,0xF0,0xE1,0x3F,0x38,0xF0,0xC0,0x1F,0x3C,0x78,0xC0,0x1F,0x1E,0x38,0xC0,0x1F,0x0E,0x38,0xC0,0x1F,0x0F,0x1C,0xC0,0x9F,0x07,0x1C,0xC0,0xDF,0x03,0x1C,0xC0,0xFF,0x01,0x38,0xC0,0xFF,0x00,0x38,0xC0,0x7F,0x00,0x78,0xC0,0x3F,0x00,0xF0,0xC1,0x1F,0x00,0xE0,0xFF,0x1F,0x00,0xC0,0xFF,0x0F,0x00,0x00,0xFF,0x0F,0x00,0x00,0x80,0x0F,0x00,0x00,0x80,0x0F,0x00,0x00,0x80,0x0F,0x00,0x00,0x80,0x0F,0x00,0x00,0x80,0x0F,0x00,0x00,0x80,0x0F,0x00,0x00,0x80,0x0F,0x00,0x00,0x80,0x0F,0x00,0x00,0x80,0x0F,0x00,0x00,0x80,0x0F,0x00,0x00,0x80,0x0F,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x07,0x00,
- 0x00,0x00,0x07,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
- };
- unsigned char code LED_1[]=
- {
- //天行健
- 0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x40,0x00,0x60,0x10,0x40,0x00,0x60,0x10,0x40,0x00,0x30,0x10,0x40,0x00,0x38,0x10,0x40,0x00,0x1C,0x10,0x40,0x00,0x0E,0x10,0x40,0x00,0x07,0x10,0x40,0x80,0x07,0x10,0x40,0xE0,0x03,0x10,0x40,0xFC,0x01,0x10,0xC0,0x7F,0x00,0xF0,0xFF,0x3F,0x00,0xF0,0xFF,0x0F,0x00,0xF0,0xFF,0x01,0x00,0xF0,0xC0,0x03,0x00,0x10,0xC0,0x0F,0x00,0x10,0x40,0x3F,0x00,0x10,0x40,0xF8,0x00,0x10,0x40,0xE0,0x01,0x10,0x40,0xC0,0x03,0x18,0x40,0x80,0x07,0x1C,0x40,0x00,0x0F,0x1C,0x60,0x00,0x1E,0x18,0x30,0x00,0x3C,0x30,0x30,0x00,0x3C,0x20,0x30,0x00,0x38,0x00,0x60,0x00,0x38,0x00,0x40,0x00,0x10,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x04,0x18,0x00,0x00,0x06,0x0C,0x00,0x00,0x07,0x07,0x00,0x80,0x83,0x03,0x00,0xE0,0xC1,0x03,0x00,0xF0,0xF0,0xFF,0x7F,0x7C,0xF8,0xFF,0x7F,0x3E,0xFE,0xFF,0x7F,0x1C,0x9F,0x00,0x00,0x0C,0x0F,0x00,0x00,0x00,0x13,0x00,0x00,0x00,0x12,0x00,0x00,0x20,0x10,0x00,0x00,0x20,0x10,0x00,0x18,0x20,0x10,0x00,0x18,0x20,0x10,0x00,0x10,0x20,0x10,0x00,0x30,0x20,0x10,0x00,0x70,0x20,0x10,0x00,0x78,0x20,0xF0,0xFF,0x7F,0x20,0xF0,0xFF,0x3F,0x20,0xF0,0xFF,0x1F,0x20,0x10,0x00,0x00,0x30,0x10,0x00,0x00,0x18,0x10,0x00,0x00,0x18,0x18,0x00,0x00,0x38,0x18,0x00,0x00,0x30,0x18,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x80,0x03,0x00,0x00,0xE0,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0xFF,0xFF,0x7F,0xC0,0xFF,0xFF,0x7F,0xFC,0xFF,0xFF,0x7F,0xFE,0x19,0x00,0x60,0x7E,0x40,0x0C,0x70,0x4C,0xE0,0x7C,0x38,0x48,0xF8,0xF0,0x1D,0x40,0xFF,0xC0,0x0F,0xE0,0x7F,0xF8,0x07,0xE0,0xC7,0xFF,0x0F,0xE0,0xE0,0x7F,0x1C,0x40,0xE4,0x47,0x18,0x40,0x44,0x44,0x18,0x40,0x44,0x44,0x38,0x40,0x44,0x44,0x30,0x40,0x44,0x44,0x30,0xFC,0xFF,0xFF,0x37,0xFC,0xFF,0xFF,0x37,0xFC,0xFF,0xFF,0x37,0x4C,0x44,0x44,0x32,0x40,0x44,0x44,0x30,0xE0,0x7F,0x46,0x30,0xE0,0x7F,0x63,0x30,0xE0,0x7F,0x37,0x30,0x40,0x03,0x76,0x30,0x00,0x07,0x60,0x10,0x00,0x06,0x40,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
- };
- unsigned char code LED_2[]=
- {
- //君子自強不息
- 0x40,0x00,0x00,0x00,0x40,0x00,0x02,0x00,0x40,0x02,0x03,0x00,0x44,0xC2,0x01,0x00,0x44,0xE2,0x00,0x00,0x44,0x7A,0x00,0x00,0x44,0xFF,0x0F,0x00,0xFC,0xFF,0x07,0x00,0xFC,0x27,0x04,0x00,0x7C,0x22,0x04,0x00,0x44,0x22,0x04,0x00,0x44,0x22,0x04,0x00,0x44,0x22,0x04,0x00,0x44,0x22,0x04,0x00,0xFC,0x27,0x04,0x00,0xFE,0xF7,0x07,0x00,0xFE,0xF7,0x07,0x00,0x74,0x30,0x00,0x00,0x30,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x00,0x04,0x02,0x00,0x00,0x04,0x02,0x00,0x00,0x04,0x02,0x00,0x00,0x04,0x02,0x04,0x00,0x04,0x02,0x04,0x00,0x04,0x02,0x0C,0x00,0xC4,0xFF,0x0F,0x00,0xC4,0xFF,0x0F,0x00,0xC4,0xFF,0x07,0x00,0xE4,0x02,0x00,0x00,0x34,0x02,0x00,0x00,0x1C,0x02,0x00,0x00,0x1C,0x02,0x00,0x00,0x0E,0x02,0x00,0x00,0x0E,0x03,0x00,0x00,0x08,0x03,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF0,0xFF,0x0F,0x00,0xF0,0xFF,0x0F,0x00,0x20,0x22,0x04,0x00,0x30,0x22,0x04,0x00,0x3E,0x22,0x04,0x00,0x3E,0x22,0x04,0x00,0x26,0x22,0x04,0x00,0x24,0x22,0x04,0x00,0x20,0x22,0x04,0x00,0x20,0x22,0x04,0x00,0x20,0x22,0x04,0x00,0xF0,0xFF,0x0F,0x00,0xF0,0xFF,0x0F,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x0C,0x00,0x00,0xC8,0x0F,0x04,0x00,0x88,0x0F,0x0C,0x00,0x88,0x08,0x0E,0x00,0x88,0xF8,0x0F,0x00,0xFC,0xF9,0x07,0x00,0xFC,0xF8,0x04,0x00,0x0C,0x6A,0x0C,0x00,0x7C,0x7E,0x0C,0x00,0x7C,0x7E,0x04,0x00,0x7C,0x22,0x04,0x00,0x44,0x22,0x04,0x00,0xC4,0xFF,0x07,0x00,0xC4,0xFF,0x07,0x00,0x44,0x22,0x06,0x00,0x7E,0xA2,0x02,0x00,0x7E,0xBE,0x03,0x00,0x44,0x3E,0x0F,0x00,0x00,0x02,0x0F,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x04,0xC0,0x00,0x00,0x04,0x60,0x00,0x00,0x04,0x70,0x00,0x00,0x04,0x38,0x00,0x00,0x04,0x1C,0x00,0x00,0x04,0x0E,0x00,0x00,0x84,0x07,0x00,0x00,0xC4,0x03,0x00,0x00,0xFC,0xFF,0x0F,0x00,0xFC,0xFF,0x0F,0x00,0xFC,0xFF,0x07,0x00,0x0C,0x01,0x00,0x00,0x04,0x01,0x00,0x00,0x04,0x03,0x00,0x00,0x04,0x06,0x00,0x00,0x04,0x0E,0x00,0x00,0x06,0x3C,0x00,0x00,0x06,0x38,0x00,0x00,0x0C,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x03,0x00,0x00,0xC0,0x03,0x00,0xFC,0xDF,0x03,0x00,0xFC,0x1F,0x00,0x00,0xF8,0xFF,0x07,0x00,0x48,0xE9,0x07,0x00,0x4E,0x59,0x04,0x00,0x4E,0x39,0x04,0x00,0x4A,0xF9,0x04,0x00,0x4A,0xE9,0x04,0x00,0x48,0x49,0x04,0x00,0x48,0x09,0x04,0x00,0xFC,0x9F,0x07,0x00,0xFC,0x9F,0x07,0x00,0xFC,0x4F,0x04,0x00,0x00,0xC0,0x03,0x00,0x00,0x80,0x03,0x00,0x00,0x80,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
- };
- unsigned char code LED_3[]=
- {
- //一生一世
- 0x00,0x00,0x00,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xF0,0x01,0x00,0x00,0xF0,0x01,0x00,0x00,0xE0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x10,0x00,0x00,0x07,0x10,0x00,0xC0,0x03,0x10,0x00,0xF0,0x01,0x10,0x00,0xFE,0x00,0x10,0xC0,0x3F,0x08,0x10,0xF0,0x0F,0x08,0x10,0xF0,0x07,0x08,0x10,0xF0,0x04,0x08,0x10,0x20,0x04,0x08,0x10,0x20,0x04,0x08,0x10,0x00,0x04,0x08,0x10,0x00,0x04,0x08,0x10,0xFC,0xFF,0xFF,0x1F,0xFC,0xFF,0xFF,0x1F,0xFC,0xFF,0xFF,0x1F,0xFC,0xFF,0xFF,0x1F,0x08,0x04,0x08,0x10,0x00,0x04,0x08,0x10,0x00,0x04,0x08,0x10,0x00,0x04,0x08,0x10,0x00,0x04,0x0C,0x10,0x00,0x04,0x0E,0x10,0x00,0x06,0x0E,0x10,0x00,0x07,0x0E,0x10,0x00,0x07,0x0C,0x18,0x00,0x0E,0x00,0x1C,0x00,0x0C,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0xF0,0x01,0x00,0x00,0xF0,0x01,0x00,0x00,0xE0,0x01,0x00,0x00,0xC0,0x01,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x30,0x00,0x00,0xE0,0xFF,0xFF,0x3F,0xE0,0xFF,0xFF,0x3F,0xE0,0xFF,0xFF,0x3F,0xE0,0xFF,0xFF,0x3F,0x00,0x30,0x00,0x38,0x00,0x30,0x00,0x38,0x00,0x30,0x00,0x38,0x00,0x30,0x00,0x38,0xFC,0xFF,0xFF,0x39,0xFC,0xFF,0xFF,0x39,0xFC,0xFF,0xFF,0x39,0x00,0x30,0x60,0x38,0x00,0x30,0x60,0x38,0x00,0x30,0x60,0x38,0x00,0x30,0x60,0x38,0x00,0x30,0x60,0x38,0xFC,0xFF,0xFF,0x39,0xFC,0xFF,0xFF,0x39,0xFC,0xFF,0xFF,0x39,0xFC,0xFF,0xFF,0x39,0x00,0x30,0x00,0x38,0x00,0x38,0x00,0x38,0x00,0x3C,0x00,0x38,0x00,0x3C,0x00,0x38,0x00,0x38,0x00,0x30,0x00,0x30,0x00,0x20,0x00,0x00,0x00,0x00
- };
- unsigned char code LED_4[]=
- {
- //生日快樂
- 0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x10,0x00,0x00,0x07,0x10,0x00,0xC0,0x03,0x10,0x00,0xF0,0x01,0x10,0x00,0xFE,0x00,0x10,0xC0,0x3F,0x08,0x10,0xF0,0x0F,0x08,0x10,0xF0,0x07,0x08,0x10,0xF0,0x04,0x08,0x10,0x20,0x04,0x08,0x10,0x20,0x04,0x08,0x10,0x00,0x04,0x08,0x10,0x00,0x04,0x08,0x10,0xFC,0xFF,0xFF,0x1F,0xFC,0xFF,0xFF,0x1F,0xFC,0xFF,0xFF,0x1F,0xFC,0xFF,0xFF,0x1F,0x08,0x04,0x08,0x10,0x00,0x04,0x08,0x10,0x00,0x04,0x08,0x10,0x00,0x04,0x08,0x10,0x00,0x04,0x0C,0x10,0x00,0x04,0x0E,0x10,0x00,0x06,0x0E,0x10,0x00,0x07,0x0E,0x10,0x00,0x07,0x0C,0x18,0x00,0x0E,0x00,0x1C,0x00,0x0C,0x00,0x1C,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0xFF,0xFF,0x3F,0xF8,0xFF,0xFF,0x3F,0xF8,0xFF,0xFF,0x3F,0x70,0xC0,0x01,0x1C,0x70,0xC0,0x01,0x1C,0x70,0xC0,0x01,0x1C,0x70,0xC0,0x01,0x1C,0x70,0xC0,0x01,0x1C,0x70,0xC0,0x01,0x1C,0x70,0xC0,0x01,0x1C,0x70,0xC0,0x01,0x1C,0x70,0xC0,0x01,0x1C,0x70,0xC0,0x01,0x1C,0x70,0xC0,0x01,0x1C,0x70,0xC0,0x01,0x1C,0x70,0xC0,0x01,0x1C,0x70,0xC0,0x01,0x1C,0xF8,0xFF,0xFF,0x3F,0xF8,0xFF,0xFF,0x3F,0xF8,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xE0,0x01,0x00,0x00,0xF0,0x01,0x00,0x00,0xFC,0x00,0x00,0x00,0x7C,0x00,0x00,0xFC,0xFF,0xFF,0x7F,0xFC,0xFF,0xFF,0x7F,0xFC,0xFF,0xFF,0x7F,0x00,0x1E,0x00,0x00,0x00,0x1C,0x00,0x60,0x00,0x3C,0x03,0x60,0x80,0x39,0x03,0x30,0x80,0x01,0x03,0x18,0x80,0x01,0x03,0x1E,0x80,0x01,0x83,0x0F,0x80,0x01,0xE3,0x07,0x80,0x01,0xFF,0x03,0xFC,0xFF,0xFF,0x00,0xFC,0xFF,0x3F,0x00,0xFC,0xFF,0x1F,0x00,0x80,0x01,0x7F,0x00,0x80,0x01,0xFB,0x01,0x80,0x01,0xE3,0x07,0x80,0x01,0x83,0x0F,0x80,0xFF,0x03,0x1E,0x80,0xFF,0x03,0x3C,0x80,0xFF,0x03,0x78,0x00,0x00,0x03,0x78,0x00,0x00,0x03,0x70,0x00,0x00,0x03,0x70,0x00,0x00,0x03,0x60,0x00,0x00,0x00,0x40,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x0C,0x00,0xF0,0x01,0x06,0xF0,0xFF,0x01,0x07,0xF0,0xFF,0xC1,0x03,0xE0,0xFF,0xE1,0x01,0x60,0xC0,0xF1,0x00,0x60,0xC0,0x7D,0x10,0x60,0xC0,0x3D,0x10,0x30,0xC0,0x19,0x10,0x30,0xC0,0x11,0x30,0x30,0xC0,0x01,0x70,0x30,0xC0,0x01,0x70,0x30,0xFF,0xFF,0x7F,0x30,0xFF,0xFF,0x3F,0x38,0xFF,0xFF,0x1F,0x38,0xC0,0x01,0x00,0x38,0xC0,0x09,0x00,0x38,0xC0,0x19,0x00,0x3C,0xC0,0x39,0x00,0x3C,0xC0,0x71,0x00,0x3C,0xC0,0xE1,0x01,0x3C,0xC0,0xC1,0x07,0x38,0xE0,0xC1,0x0F,0x00,0xE0,0x81,0x0F,0x00,0xC0,0x01,0x0F,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
- };
- unsigned char code LED_5[]=//鳳凰傳奇
- {
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x7E,0x00,0x00,0xE0,0x1F,0xF8,0xFF,0xFF,0x0F,0xF8,0xFF,0xFF,0x0B,0xF8,0xFF,0x7F,0x0C,0xF8,0x3F,0x00,0x06,0x18,0x06,0x00,0x06,0x18,0x46,0x00,0x03,0x18,0x46,0x80,0x01,0x18,0xC6,0xC0,0x01,0x18,0x86,0xF1,0x00,0x18,0x86,0x7B,0x00,0x18,0x06,0x3F,0x00,0x18,0x06,0x1F,0x00,0x18,0xC6,0x1F,0x00,0x18,0xF6,0x3F,0x00,0x18,0xFE,0x79,0x00,0x18,0x7E,0xF8,0x01,0x18,0x1E,0xF0,0x01,0x18,0x0C,0xE0,0x01,0xF8,0xFF,0x0F,0x00,0xF8,0xFF,0xFF,0x01,0xF8,0xFF,0xFF,0x0F,0xF8,0xFF,0xFF,0x1F,0x00,0x00,0x80,0x7F,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0xFF,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x7E,0x00,0x00,0xF0,0x1F,0xFC,0xFF,0xFF,0x4F,0xFC,0xFF,0xFF,0x41,0xF8,0xFF,0x3F,0x40,0x18,0x00,0x20,0x40,0x18,0xFF,0x2F,0x44,0x18,0xFF,0x2F,0x44,0x18,0xFE,0x27,0x44,0x18,0xFE,0x27,0x44,0x18,0x22,0x22,0x44,0xD8,0x23,0x22,0x44,0xF8,0x23,0xE2,0x7F,0xF8,0x22,0xE2,0x7F,0x58,0x22,0xE2,0x7F,0x58,0x22,0x22,0x44,0x18,0xFE,0x27,0x46,0x18,0xFF,0x37,0x47,0x18,0xFF,0x3F,0x43,0x18,0xFE,0x3B,0x46,0x18,0x02,0x70,0x64,0xF8,0xFF,0x7F,0x70,0xFC,0xFF,0xFF,0x63,0xFC,0xFF,0xFF,0xDF,0x18,0x00,0xF8,0xBF,0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0xFE,
- 0x00,0x00,0x10,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x0F,0x00,0x00,0xC0,0x03,0x00,0x00,0xF0,0x01,0x00,0x00,0xFC,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xE0,0xFF,0xFF,0xFF,0xFC,0xFF,0xFF,0xFF,0xFC,0x01,0x00,0x00,0x7C,0x04,0x01,0x00,0x18,0x86,0x01,0x00,0x08,0x86,0x01,0x00,0x00,0x86,0x01,0x00,0x00,0x86,0x01,0x00,0x00,0x86,0x21,0x04,0x00,0x86,0x7F,0x0C,0x00,0xF6,0x7F,0x08,0xC0,0xFF,0x3F,0x18,0xFC,0xFF,0x33,0x18,0xFC,0xBF,0x31,0x30,0xFC,0x87,0x31,0x78,0x0C,0x86,0x31,0x7C,0x08,0x86,0x31,0xEF,0x00,0x86,0xB1,0xE7,0x00,0x86,0xF1,0xC3,0x00,0x86,0xF1,0xC1,0x00,0x87,0xF1,0x00,0x00,0xC7,0x71,0x00,0x00,0xC7,0x71,0x00,0x00,0xC6,0x31,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x80,0x01,0x00,0xC0,0x80,0x01,0x00,0xC0,0xC0,0x01,0x00,0xC0,0xC0,0x01,0x00,0xC0,0xC0,0xF9,0x3F,0xC0,0xE0,0xF9,0x3F,0xC0,0xA0,0xF9,0x3F,0xC0,0xB0,0xF1,0x1F,0xC0,0x98,0x31,0x0C,0xC0,0x98,0x31,0x0C,0xC0,0x9C,0x31,0x0C,0xC0,0x8F,0x31,0x0C,0xC0,0x87,0x31,0x0C,0xFE,0x83,0x31,0x0C,0xFE,0x83,0x31,0x0C,0xFC,0x83,0xF9,0x1F,0xDC,0x82,0xF9,0x1F,0xC8,0x86,0xF9,0x5F,0xC0,0x86,0x11,0x40,0xC0,0x8E,0x01,0x40,0xC0,0x8C,0x01,0xC0,0xC0,0x9C,0x01,0xC0,0xC0,0xBC,0xFF,0xFF,0xC0,0xB8,0xFF,0xFF,0xE0,0xB8,0xFF,0xFF,0xE0,0xB0,0xFF,0x7F,0xE0,0x80,0x01,0x00,0xC0,0xC0,0x01,0x00,0x80,0xE0,0x01,0x00,0x00,0xE0,0x01,0x00
- };
- unsigned char code LED_6[]=//情有獨鐘
- {
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x7C,0x00,0x00,0x00,0x3E,0x00,0x00,0xFC,0xFF,0xFF,0x7F,0xFC,0xFF,0xFF,0x7F,0xFC,0xFF,0xFF,0x7F,0x00,0x07,0x00,0x00,0x00,0x6E,0x00,0x00,0x60,0x6E,0x00,0x00,0x60,0x60,0x00,0x00,0x60,0x66,0xFF,0x7F,0x60,0x66,0xFF,0x7F,0x60,0x66,0xFF,0x7F,0x60,0x66,0xFF,0x3F,0x60,0x66,0x33,0x03,0x60,0x66,0x33,0x03,0xFC,0x7F,0x33,0x03,0xFC,0x7F,0x33,0x03,0xFC,0x7F,0x33,0x13,0x60,0x66,0x33,0x33,0x60,0x66,0x33,0x33,0x60,0x66,0x33,0x73,0x60,0x66,0xFF,0x7F,0x60,0x66,0xFF,0x7F,0x60,0x66,0xFF,0x3F,0x60,0x76,0x00,0x00,0x60,0x70,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0xC0,0x00,0x30,0x00,0xC0,0x00,0x18,0x00,0xC0,0x00,0x1C,0x00,0xC0,0x00,0x0E,0x00,0xC0,0x00,0x07,0x00,0xC0,0x80,0x03,0x00,0xC0,0xC0,0x01,0x00,0xC0,0xE0,0x01,0x00,0xC0,0xF8,0xFF,0x7F,0xC0,0xFC,0xFF,0x7F,0xC0,0xFF,0xFF,0x3F,0xE0,0x3F,0xC6,0x00,0xFC,0x37,0xC6,0x00,0xFC,0x31,0xC6,0x00,0xFC,0x30,0xC6,0x00,0xD8,0x30,0xC6,0x00,0xC8,0x30,0xC6,0x10,0xC0,0x30,0xC6,0x10,0xC0,0x30,0xC6,0x10,0xC0,0x30,0xC6,0x30,0xC0,0x30,0xC6,0x70,0xC0,0xF8,0xFF,0x7F,0xC0,0xF8,0xFF,0x7F,0xC0,0xF8,0xFF,0x3F,0xC0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x20,0x80,0x00,0x10,0x30,0xC0,0x00,0x10,0x30,0x70,0x00,0x30,0x18,0x38,0x10,0x60,0x0C,0x1C,0x10,0xE0,0x0E,0x1F,0x70,0xC0,0xC7,0x07,0x70,0xC0,0xFF,0x03,0x3C,0xE0,0xFF,0xFF,0x3F,0xF8,0xFC,0xFF,0x1F,0x78,0xE0,0xFF,0x07,0x38,0x00,0x00,0x18,0x18,0xFF,0x3F,0x38,0x00,0xFF,0x3F,0x38,0x00,0xFF,0x1F,0x18,0x00,0xFE,0x1F,0x18,0x00,0x06,0x0C,0x18,0x00,0x06,0x0C,0x18,0xFC,0xFF,0xFF,0x1F,0xFC,0xFF,0xFF,0x1F,0xFC,0xFF,0xFF,0x1F,0xF8,0xFF,0xFF,0x1F,0x00,0x06,0x0C,0x18,0x00,0x06,0x4C,0x18,0x00,0xFE,0xDF,0x18,0x00,0xFF,0xDF,0x1F,0x00,0xFF,0x9F,0x1F,0x00,0xFE,0x0F,0x3F,0x00,0x04,0x00,0x3E,0x00,0x00,0x00,0x1C,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0xC0,0x05,0x00,0x00,0xF0,0x04,0x00,0x00,0x7C,0x04,0x00,0x80,0x1F,0x04,0x00,0xF8,0x1F,0x04,0x08,0xFC,0xF3,0xFF,0x1F,0xFC,0xF0,0xFF,0x1F,0x98,0xF0,0xFF,0x1F,0x88,0x10,0x04,0x0E,0x80,0x18,0x04,0x07,0xC0,0x18,0x86,0x03,0xC0,0x30,0x86,0x01,0xC0,0x21,0xCE,0x00,0x00,0xFF,0x5F,0x00,0x00,0xFE,0x1F,0x00,0x00,0xFE,0x0F,0x00,0x00,0x06,0x0C,0x00,0x00,0x06,0x0C,0x00,0x00,0x06,0x0C,0x00,0xFC,0xFF,0xFF,0x7F,0xFC,0xFF,0xFF,0x7F,0xF8,0xFF,0xFF,0x3F,0x08,0x06,0x0C,0x00,0x00,0x06,0x0C,0x00,0x00,0x06,0x04,0x00,0x00,0xFE,0x0F,0x00,0x00,0xFE,0x0F,0x00,0x00,0xFE,0x0F,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
- };
- unsigned char code LED_7[]=
- {
- //房子圖片
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x78,0x00,0x00,0x00,0xF8,0x00,0x07,0x00,0xF8,0xF1,0x03,0x00,0xF8,0xFF,0x01,0x00,0xF8,0xFF,0x01,0x00,0xFC,0xFF,0x00,0xC0,0xFF,0x7F,0x00,0xFC,0xFF,0x3F,0x00,0xF8,0xFF,0x3F,0x00,0xC0,0xFF,0x7F,0x00,0x00,0xFC,0xFF,0x00,0x00,0xF8,0xFF,0x01,0x00,0xF8,0xFF,0x01,0x00,0xF8,0xF1,0x03,0x00,0xF8,0x00,0x07,0x00,0x78,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0xC0,0x00,0x00,
- 0x00,0xC0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xFF,0xFF,0x3F,0x80,0xFF,0xFF,0x3F,0x80,0xFF,0xFF,0x3F,0xC0,0xFF,0xFF,0x3F,0xC0,0xFF,0xFF,0x3F,0xC0,0xFF,0xFF,0x3F,0xE0,0xFF,0xFF,0x3F,0xE0,0xFF,0xFF,0x3F,0xF0,0xFF,0xFF,0x3F,0xF0,0xFF,0xFF,0x3F,0xF8,0xFF,0xFF,0x3F,0xF8,0xFF,0x01,0x20,0xFC,0xFF,0x01,0x20,0xFC,0xFF,0x01,0x20,0xFE,0xFF,0x01,0x20,0xFE,0xFF,0xFF,0x3F,0xFC,0xFF,0x01,0x20,0xFC,0xFF,0x01,0x20,0xF8,0xFF,0x01,0x20,0xF8,0xFF,0x01,0x20,
- 0xF0,0xFF,0xFF,0x3F,0xF0,0xFF,0xFF,0x3F,0xE0,0xFF,0xFF,0x3F,0xE0,0xFF,0xFF,0x3F,0xE0,0xFF,0xFF,0x3F,0xC0,0xFF,0xFF,0x3F,0xC0,0xFF,0xFF,0x3F,0x80,0xFF,0xFF,0x3F,0x80,0xFF,0xFF,0x3F,0x00,0xFF,0xFF,0x3F,0x00,0xFF,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFE,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0xFC,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x30,0x00,0x00,
- 0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0xF0,0x00,0x08,0x00,0xF0,0x01,0x0F,0x00,0xF0,0xE3,0x07,0x00,0xF0,0xFF,0x03,0x00,0xF0,0xFF,0x03,0x00,0xF0,0xFF,0x01,0x00,0xFC,0xFF,0x00,0x80,0xFF,0xFF,0x00,0xF0,0xFF,0x7F,0x00,0xFC,0xFF,0x3F,0x00,0xF0,0xFF,0x7F,0x00,0x80,0xFF,0xFF,0x00,0x00,0xFC,0xFF,0x00,0x00,0xF8,0xFF,0x01,0x00,0xF0,0xFF,0x03,0x00,0xF0,0xFF,0x03,0x00,0xF0,0xE3,0x07,0x00,0xF0,0x01,0x0F,0x00,0xF0,0x00,0x08,0x00,0x70,0x00,0x00,0x00,0x70,0x00,0x00,0x00,0x30,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
- };
- void delay_ms(unsigned int num)
- {
- unsigned int k,l;
- for(k=num;k>0;k--)
- for(l=110;l>0;l--);
- //for(l=begin_display_timer*50;l>0;l--);
- }
- void delay_ms_readIAP(unsigned int num)
- {
- unsigned int k,l;
- for(k=num;k>0;k--)
- for(l=60;l>0;l--);
- //for(l=begin_display_timer*50;l>0;l--);
- }
- void InitialSound(void)
- {
- BeepIO = 1;
- Sound_Temp_TH1 = (65535-(1/1200)*SYSTEM_OSC)/256-210; // 計算TL1應(yīng)裝入的初值 (10ms的初裝值)
- Sound_Temp_TL1 = (65535-(1/1200)*SYSTEM_OSC)%256-210; // 計算TH1應(yīng)裝入的初值
- TH1 = Sound_Temp_TH1;
- TL1 = Sound_Temp_TL1;
- TMOD = 0x11;
- ET0 = 1;
- ET1 = 1;
- TR0 = 0;
- TR1 = 0;
- IP=0X46;
- IPH=0x4A;//T0 T1 EX1 EX0
- EA = 1;
- }
- void BeepTimer0(void) interrupt 1 using 1//音符發(fā)生中斷
- {
- BeepIO = !BeepIO;
- TH0 = Sound_Temp_TH0;
- TL0 = Sound_Temp_TL0;
- }
- void BeepTimer1(void) interrupt 3 //音符發(fā)生中斷
- {
- TR1=0;
- ET1 = 0;
- timer_out=1;
- }
- //**************************************************************************
- void Play(unsigned char *Sound,unsigned char Signature,unsigned Octachord,unsigned int Speed)
- {
- unsigned int NewFreTab[12]; //新的頻率表
- unsigned char i,j;
- unsigned int Point,LDiv,LDiv0,LDiv1,LDiv2,LDiv4,CurrentFre,Temp_T,SoundLength,music_length=0;
- unsigned char Tone,Length,SL,SH,SM,SLen,XG,FD;
- for(i=0;i<12;i++) // 根據(jù)調(diào)號及升降八度來生成新的頻率表
- {
- j = i + Signature;
- if(j > 11)
- {
- j = j-12;
- NewFreTab[i] = FreTab[j]*2;
- }
- else
- NewFreTab[i] = FreTab[j];
- if(Octachord == 1)
- NewFreTab[i]>>=2;
- else if(Octachord == 3)
- NewFreTab[i]<<=2;
- }
- SoundLength = 0;
- while(Sound[SoundLength] != 0x00) //計算歌曲長度
- {
- SoundLength+=2;
- }
- Data=0xff;
- Point = 0;
- if((LED_EEPROM==1)&&(have_music==1)/*1*/)
- {
- Tone = IapReadByte(IAP_ADDRESS7+(Point++));
- Length = IapReadByte(IAP_ADDRESS7+(Point++)); // 讀出第一個音符和它時時值
- }
- else
- {
- Tone = Sound[Point];
- Length = Sound[Point+1]; // 讀出第一個音符和它時時值
- }
- LDiv0 = 12000/Speed; // 算出1分音符的長度(幾個10ms)
- LDiv4 = LDiv0/4; // 算出4分音符的長度
- LDiv4 = LDiv4-LDiv4*SOUND_SPACE; // 普通音最長間隔標準
- TR0 = 0;
- TR1 = 1;
- if((LED_EEPROM==1)&&(have_music==1))
- {
- while(IapReadByte(IAP_ADDRESS7+(Point))!=0x00)
- {//
- SL=Tone%10; //計算出音符
- SM=Tone/10%10; //計算出高低音
- SH=Tone/100; //計算出是否升半
- CurrentFre = NewFreTab[SignTab[SL-1]+SH]; //查出對應(yīng)音符的頻率
- if(SL!=0)
- {
- if (SM==1) CurrentFre >>= 2; //低音
- if (SM==3) CurrentFre <<= 2; //高音
- Temp_T = 65536-(50000/CurrentFre)*10/(12000000/SYSTEM_OSC);//計算計數(shù)器初值
- Sound_Temp_TH0 = Temp_T/256;
- Sound_Temp_TL0 = Temp_T%256;
- TH0 = Sound_Temp_TH0;
- TL0 = Sound_Temp_TL0 + 12; //加12是對中斷延時的補償
- }
- SLen=LengthTab[Length%10]; //算出是幾分音符
- XG=Length/10%10; //算出音符類型(0普通1連音2頓音)
- FD=Length/100;
- LDiv=LDiv0/SLen; //算出連音音符演奏的長度(多少個10ms)
- if (FD==1)
- LDiv=LDiv+LDiv/2;
- if(XG!=1)
- if(XG==0) //算出普通音符的演奏長度
- if (SLen<=4)
- LDiv1=LDiv-LDiv4;
- else
- LDiv1=LDiv*SOUND_SPACE;
- else
- LDiv1=LDiv/2; //算出頓音的演奏長度
- else
- LDiv1=LDiv;
- if(SL==0) LDiv1=0;
- LDiv2=LDiv-LDiv1; //算出不發(fā)音的長度
- if (SL!=0)
- {
- TR0=1;
- for(i=LDiv1;i>0;i--) //發(fā)規(guī)定長度的音
- {
- if(begin_LED)//已經(jīng)發(fā)生水銀中斷
- {
- timer_led=1;
- }
- timer_out=0;
- TH1 = Sound_Temp_TH1;
- TL1 = Sound_Temp_TL1;
- ET1 = 1;
- TR1=1;
- while(timer_out==0)
- {
- if(timer_led==1)//如果有顯示任務(wù)標志
- {
- timer_led=0;
- CH=0;
- CL=0;
- //PCA_COUNT++;
- total=1;//PCA中斷向下記數(shù)
- CR=1;//開始PCA計時
- xianshi_enable=1;//使能LED顯示
- hh=0;
- }
- if((xianshi_enable))//&&(continue_display==0)
- {
- H4=0;
- if(PCA_COUNT<2)//PAC中斷向下記數(shù)和向上計數(shù)一樣
- {
- // if(begin_display_timer<(CH*256+CL))//判斷延時是否完成
- {
- CH=0;
- CL=0;
- hh++;//延時次數(shù)自加
- if(hh>tt)//200次延時后顯示的漢字就會在顯示在中間位置
- {
- hh=0;
- CR=0;//停止PCA計數(shù)
- LED_display();//開始顯示圖片或者漢字
- continue_display=1;
- xianshi_enable=0;//顯示完成,下次可以不進次if語句
- }
- }
- }
- begin_LED=0;
- }
-
- if(continue_display==1)
- {
- LED_display();
- }
- }
- }
-
- if(LDiv2!=0)
- {
- TR0=0; BeepIO=1;
- for(i=LDiv2;i>0;i--) //音符間的間隔
- {
- if(begin_LED)
- {
- timer_led=1;
- }
- timer_out=0;
- TR1=1;
- ET1 = 1;
- TH1 = Sound_Temp_TH1;
- TL1 = Sound_Temp_TL1;
- while(timer_out==0)
- {
- if(timer_led==1)
- {
- timer_led=0;
- CH=0;
- CL=0;
- //PCA_COUNT++;
- total=1;//PAC中斷向下記數(shù)
- CR=1;
- xianshi_enable=1;
- hh=0;
- }
- if((xianshi_enable)&&(continue_display==0))
- {
- if(PCA_COUNT<2)//PAC中斷向下記數(shù)和向上計數(shù)一樣
- {
- // if(begin_display_timer<(CH*256+CL))//判斷延時是否完成
- {
- CH=0;
- CL=0;
- hh++;//延時次數(shù)自加
- if(hh>tt)//200次延時后顯示的漢字就會在顯示在中間位置
- {
- hh=0;
- CR=0;//停止PCA計數(shù)
- LED_display();//開始顯示圖片或者漢字
-
- continue_display=1;
-
- xianshi_enable=0;//顯示完成,下次可以不進次if語句
- }
- }
- }
- begin_LED=0;
- }
-
- if(continue_display==1)
- {
- LED_display();
- }
- }
- }
- }
- }
- Tone = IapReadByte(IAP_ADDRESS7+(Point++));
- Length = IapReadByte(IAP_ADDRESS7+(Point++));
- }
- }
- else
- {
- while(Point < SoundLength)
- {//
- SL=Tone%10; //計算出音符
- SM=Tone/10%10; //計算出高低音
- SH=Tone/100; //計算出是否升半
- CurrentFre = NewFreTab[SignTab[SL-1]+SH]; //查出對應(yīng)音符的頻率
- if(SL!=0)
- {
- if (SM==1) CurrentFre >>= 2; //低音
- if (SM==3) CurrentFre <<= 2; //高音
- Temp_T = 65536-(50000/CurrentFre)*10/(12000000/SYSTEM_OSC);//計算計數(shù)器初值
- Sound_Temp_TH0 = Temp_T/256;
- Sound_Temp_TL0 = Temp_T%256;
- TH0 = Sound_Temp_TH0;
- TL0 = Sound_Temp_TL0 + 12; //加12是對中斷延時的補償
- }
- SLen=LengthTab[Length%10]; //算出是幾分音符
- XG=Length/10%10; //算出音符類型(0普通1連音2頓音)
- FD=Length/100;
- LDiv=LDiv0/SLen; //算出連音音符演奏的長度(多少個10ms)
- if (FD==1)
- LDiv=LDiv+LDiv/2;
- if(XG!=1)
- if(XG==0) //算出普通音符的演奏長度
- if (SLen<=4)
- LDiv1=LDiv-LDiv4;
- else
- LDiv1=LDiv*SOUND_SPACE;
- else
- LDiv1=LDiv/2; //算出頓音的演奏長度
- else
- LDiv1=LDiv;
- if(SL==0) LDiv1=0;
- LDiv2=LDiv-LDiv1; //算出不發(fā)音的長度
- if (SL!=0)
- {
- TR0=1;
- for(i=LDiv1;i>0;i--) //發(fā)規(guī)定長度的音
- {
- if(begin_LED)//已經(jīng)發(fā)生水銀中斷
- {
- timer_led=1;
- }
- timer_out=0;
- TH1 = Sound_Temp_TH1;
- TL1 = Sound_Temp_TL1;
- ET1 = 1;
- TR1=1;
- while(timer_out==0)
- {
- if(timer_led==1)//如果有顯示任務(wù)標志
- {
- timer_led=0;
- CH=0;
- CL=0;
- //PCA_COUNT++;
- total=1;//PCA中斷向下記數(shù)
- CR=1;//開始PCA計時
- xianshi_enable=1;//使能LED顯示
- hh=0;
- }
- if((xianshi_enable))//&&(continue_display==0)
- {
- H4=0;
- if(PCA_COUNT<2)//PAC中斷向下記數(shù)和向上計數(shù)一樣
- {
- // if(begin_display_timer<(CH*256+CL))//判斷延時是否完成
- {
- CH=0;
- CL=0;
- hh++;//延時次數(shù)自加
- if(hh>tt)//200次延時后顯示的漢字就會在顯示在中間位置
- {
- hh=0;
- CR=0;//停止PCA計數(shù)
- LED_display();//開始顯示圖片或者漢字
- continue_display=1;
- xianshi_enable=0;//顯示完成,下次可以不進次if語句
- }
- }
- }
- begin_LED=0;
- }
-
- if(continue_display==1)
- {
- LED_display();
- }
- if(change_code)
- {
- break;
- }
- }
- if(change_code)
- {
- break;
- }
- }
-
- if(LDiv2!=0)
- {
- TR0=0; BeepIO=1;
- for(i=LDiv2;i>0;i--) //音符間的間隔
- {
- if(begin_LED)
- {
- timer_led=1;
- }
- timer_out=0;
- TR1=1;
- ET1 = 1;
- TH1 = Sound_Temp_TH1;
- TL1 = Sound_Temp_TL1;
- while(timer_out==0)
- {
- if(timer_led==1)
- {
- timer_led=0;
- CH=0;
- CL=0;
- //PCA_COUNT++;
- total=1;//PAC中斷向下記數(shù)
- CR=1;
- xianshi_enable=1;
- hh=0;
- }
- if((xianshi_enable)&&(continue_display==0))
- {
- if(PCA_COUNT<2)//PAC中斷向下記數(shù)和向上計數(shù)一樣
- {
- // if(begin_display_timer<(CH*256+CL))//判斷延時是否完成
- {
- CH=0;
- CL=0;
- hh++;//延時次數(shù)自加
- if(hh>tt)//200次延時后顯示的漢字就會在顯示在中間位置
- {
- hh=0;
- CR=0;//停止PCA計數(shù)
- LED_display();//開始顯示圖片或者漢字
-
- continue_display=1;
-
- xianshi_enable=0;//顯示完成,下次可以不進次if語句
- }
- }
- }
- begin_LED=0;
- }
-
- if(continue_display==1)
- {
- LED_display();
- }
-
- if(change_code)
- {
- break;
- }
- }
- if(change_code)
- {
- break;
- }
- }
- }
- }
- Point+=2;
- Tone=Sound[Point];
- Length=Sound[Point+1];
- if(change_code)
- {
- break;
- }
- }
- }
- BeepIO = 1;
- }
- void DelayUs(unsigned char us)//delay us
- {
- unsigned char uscnt;
- uscnt=us>>1;
- while(--uscnt);
- }
- void DelayMs(unsigned char ms)//delay Ms
- {
- while(--ms)
- {
- DelayUs(250);
- DelayUs(250);
- DelayUs(250);
- DelayUs(250);
- }
- }
- void delay_us(unsigned char t)
- {
- unsigned char t1;
- unsigned char t2;
- for(t1=0;t1<t;t1++)
- {
- for(t2=0;t2<80;t2++)
- {
- ;
- }
- }
- }
- void uart_send(uchar string)
- {
- SBUF = string;
- while(TI==0);
- delay_us(10);
-
- }
- //-------------------------------------------------------------
- //--------------------------------------------------------------------------------------------------
- // 函數(shù)名稱: UART_init()串口初始化函數(shù)
- // 函數(shù)功能: 在系統(tǒng)時鐘為11.059MHZ時,設(shè)定串口波特率為9600bit/s
- //
- // 串口接收中斷允許,發(fā)送中斷禁止
- //--------------------------------------------------------------------------------------------------
- void UART_init()
- {
- /*TR1=0;
- TMOD=0x20; //中斷1 方式2
- REN=1; //串口中斷使能
- SM0=1; //串口方式3(異步)
- SM1=1;
- TH1=0xFD; //初值
- TL1=0xFD;
- EA=1;
- ES=1;
- TR1=1; //使能中斷 */
- SCON=0x50;
- TMOD|=0x20;
- TH1=0xfd;
- TL1=0xfd;
- TR1=1;
- EA=1;
- ES=1;
- }
- void COM_send(char string)
- {
- SBUF=string;
- while(!TI);
- TI=0;
- }
- void send_uart(unsigned char ad)
- {
- ES=0;
- TI=0;
- SBUF=ad;
- while(!TI);
- TI=0;
- ES=1;
- }
- /*void LED_display(void)
- {
- unsigned char h;
- unsigned int i,j;
- EX0=0;
- IT0=0;
- H1=1;H2=1;H3=1;H4=1;
- j=0;
- for(h=0;h<96;h++)
- {
- for(i=0;i<4;i++)
- {
- if(i==0)
- {
- H1=0;H2=1;H3=1;H4=1;
- }
- else if(i==1)
- {
- H1=1;H2=0;H3=1;H4=1;
- }
- else if(i==2)
- {
- H1=1;H2=1;H3=0;H4=1;
- }
- else if(i==3)
- {
- H1=1;H2=1;H3=1;H4=0;
- }
- Data=*(LED_p[LED_code]+(j));//temp1[j++];
- j++;
- if(j>127)
- {
- j=0;
- LED_code++;
- if(LED_code>2)
- {
- LED_code=0;
- }
- }
- delay_ms(1);
- Data=0x00;
- }
- }
- H1=1;H2=1;H3=1;H4=1;
- EX0=1;
- IT0=1;
- begin_timer_LED=1;//LED顯示完成,下次進水銀中斷就可以讀出需要延時的時間。
- }//LED連續(xù)顯示3個漢字,下面改成一次顯示一個漢字*/
- void LED_display(void)
- {
- unsigned char h;
- unsigned int i,j;
- EX0=0;
- IT0=0;
- H1=1;H2=1;H3=1;H4=1;
- j=0;
- for(h=0;h<32;h++)
- {
- for(i=0;i<4;i++)
- {
- if(i==0)
- {
- H1=0;H2=1;H3=1;H4=1;
- }
- else if(i==1)
- {
- H1=1;H2=0;H3=1;H4=1;
- }
- else if(i==2)
- {
- H1=1;H2=1;H3=0;H4=1;
- }
- else if(i==3)
- {
- H1=1;H2=1;H3=1;H4=0;
- }
-
- RECEIVR_buffer[j]=IapReadByte(512*display_LED+(midder_led_code)*128+j);
-
- if(LED_EEPROM)//使用EEPROM里面的數(shù)據(jù)
- {
- Data=RECEIVR_buffer[j];
- }
- else
- {
-
- if(music_num==0)
- {
- Data=*(LED_p1[0]+(LED_code*128+j));
- }
- else if(music_num==1)
- {
- Data=*(LED_p1[1]+(LED_code*128+j));
- }
- else if(music_num==2)
- {
- Data=*(LED_p1[2]+(LED_code*128+j));
- }
- else if(music_num==3)
- {
- Data=*(LED_p1[3]+(LED_code*128+j));
- }
- else if(music_num==4)
- {
- Data=*(LED_p1[4]+(LED_code*128+j));
- }
- else if(music_num==5)
- {
- Data=*(LED_p1[5]+(LED_code*128+j));
- }
- else if(music_num==6)
- {
- Data=*(LED_p1[6]+(LED_code*128+j));
- }
- else if(music_num==7)
- {
- Data=*(LED_p1[7]+(LED_code*128+j));
- }
- //下面屏蔽的部分是采用一個漢字一個數(shù)組的形式。上面的是四個漢字一個數(shù)組的顯示,這樣方便字幕提取
- /* if(music_num==0)
- {
- Data=*(LED_p1[LED_code]+(j));//temp1[j++];
- }
- else if(music_num==1)
- {
- Data=*(LED_p2[LED_code]+(j));//temp1[j++];
- }
- else if(music_num==2)
- {
- Data=*(LED_p3[LED_code]+(j));//temp1[j++];
- }
- else if(music_num==3)
- {
- Data=*(LED_p4[LED_code]+(j));//temp1[j++];
- }
- else if(music_num==4)
- {
- Data=*(LED_p5[LED_code]+(j));//temp1[j++];
- }
- else if(music_num==5)
- {
- Data=*(LED_p6[LED_code]+(j));//temp1[j++];
- }
- else if(music_num==6)
- {
- Data=*(LED_p7[LED_code]+(j));//temp1[j++];
- }
- else if(music_num==7)
- {
- Data=*(LED_p8[LED_code]+(j));//temp1[j++];
- }*/
- }
- j++;
- if(LED_EEPROM)
- {
- if(j>=127)
- {
- j=0;
- midder_led_code++;
- if(midder_led_code>=LED_EEPROM_number)//LED_EEPROM_number
- {
- midder_led_code=0;
- continue_display=0;
- begin_timer_LED=1;
- }
- }
- delay_ms_readIAP(2);
- }
- else
- {
- if(j>=127)
- {
- j=0;
- LED_code++;
- if(LED_code>3)//LED_code_number為需要顯示的漢字個數(shù)
- {
- LED_code=0;
- continue_display=0;
- begin_timer_LED=1;
- }
- }
- delay_ms(1);
- }
- Data=0x00;
- }
- }
- H1=1;H2=1;H3=1;H4=1;
- EX0=1;
- IT0=1;
- //LED顯示完成,下次進水銀中斷就可以讀出需要延時的時間。
- }
- void PCA_int() interrupt 6 using 1
- {
- CCF0 = 0; // PCA 中斷清零
- CH=0;
- CL=0;
- CCAP_VALUE += 65530; //這個地方一定要注意自加,不然會導(dǎo)致中斷進入不了。我也很奇怪為什么會這樣。
- CCAP0L = CCAP_VALUE;
- CCAP0H = CCAP_VALUE>>8;
- if(total==0)
- {
- PCA_COUNT++;
- if(PCA_COUNT>250)
- {
- PCA_COUNT=250;
- }
- }
- if(total==1)
- {
- PCA_COUNT--;
- if(PCA_COUNT<1)
- {
- PCA_COUNT=1;
- }
- }
- /*
- CCF0 = 0; // PCA 中斷清零
- CCAP_VALUE += 50000; // 比較數(shù)加50000,不理溢出
- CCAP0L = CCAP_VALUE;
- CCAP0H = CCAP_VALUE>>8;
- PCA_COUNT++;
- */
- }
- void PCA_intial()
- {
- CCON = 0x00;
- CL = 0; // 計數(shù)清零
- CH = 0;
- CMOD = 0x00;//0x01; // 選擇12分頻的系統(tǒng)時鐘,ECF = 0,CIDL = 0; 允許溢出中斷
- CCAP0L = 65530; // 先賦值高8位
- CCAP0H = 65530; // 再賦值低8位
- CCON = 0x40; // CF = CCF1 = CCF0 = 0; CR = 1;開啟PCA計數(shù)器
- CCAPM0 = 0x49; //0x49; ECOM = 1,CAPP0 = CAPN0 = 0,MAT0 = 1,TOG = 0,PWM0 = 0,ECCF0 = 1; 開啟PCA中斷
- CR=0;
- EPCAI=1;
- EA = 1;
- }
- void Delay(BYTE n)
- {
- WORD x;
- while(n--)
- {
- x=0;
- while(++x);
- }
- }/**/
- void IapIdle()
- {
- IAP_CONTR=0; //CLOSE IAP FUNCTION
- IAP_CMD=0; //CLEAR COMMAND TO STANDBY
- IAP_TRIG=0; //CLEAR TRIGGER REGISTER
- IAP_ADDRH=0X80; //DATA PTR POINT TO NON-EEPROM AREA
- IAP_ADDRL=0; //CLEAR IAP ADDRESS TO PREVENT MISUSE
- }
- BYTE IapReadByte(WORD addr)
- {
- BYTE dat;
- IAP_CONTR=ENABLE_IAP; //OPEN IAP FUNCTION ,AND SET WAIT TIME
- IAP_CMD=CMD_READ; //SET ISP/IAP/EEPROM READ COMMAND
- IAP_ADDRL=addr; //SET ISP/IAP/EEPROM address low
- IAP_ADDRH=addr>>8; //SET ISP//IAP//EEPROM address HIGH
- IAP_TRIG=0X46; //SEND TRIGGER COMMAND1 OX46
- IAP_TRIG=0XB9; //SEND TRIGGER COMMAND2 0XB9
- _nop_();
- dat=IAP_DATA; //read ISP/IAP/EEPROM data
- IapIdle(); // close ISP/IAP/EEPROM FUNCITON
- return dat; //RETURN FLAH DATA
- }
- void IapProgramByte(WORD addr, BYTE dat)
- {
- IAP_CONTR=ENABLE_IAP; //OPEN IAP FUNTION AND SET WAIT TIME
- IAP_CMD=CMD_PROGRAM; //SET ISP/IAP/EEPROM PROGRAM COMMAND
- IAP_ADDRL=addr; //set ISP/IAP/EEPROM ADDRESS LOW
- IAP_ADDRH=addr>>8; //set ISP/IAP/EEPROM address high
- IAP_DATA=dat; // WRITE ISP/IAP/EEPROM data
- IAP_TRIG=0X46;
- IAP_TRIG=0XB9;
- _nop_();
- IapIdle();
- }
- void IapEraseSector(WORD addr)
- {
- IAP_CONTR=ENABLE_IAP;
- IAP_CMD=CMD_ERASE;
- IAP_ADDRL=addr;
- IAP_ADDRH=addr>>8;
- IAP_TRIG=0X46;
- IAP_TRIG=0XB9;
- _nop_();
- IapIdle();
- }
- main()
- {
- unsigned char h,hz_num[15]={0};
- unsigned int i,zd;
-
- music_p[0]=Music_Code0;
- music_p[1]=Music_Code1;
- music_p[2]=Music_Code2;
- music_p[3]=Music_Code3;
- music_p[4]=Music_Code4;
- music_p[5]=Music_Code5;
- music_p[6]=Music_Code6;
- music_p[7]=Music_Code7;
-
-
- LED_p1[0]=LED_1;
- LED_p1[1]=LED_2;
- LED_p1[2]=LED_3;
- LED_p1[3]=LED_4;
- LED_p1[4]=LED_0;
- LED_p1[5]=LED_5;
- LED_p1[6]=LED_6;
- LED_p1[7]=LED_7;
-
- //下面屏蔽部分是采用的一個漢字一個數(shù)組的形式進行的顯示,可以節(jié)省內(nèi)存
- /*LED_p1[0]=LED_wo;//我愛你;
- LED_p1[1]=LED_tp1;
- LED_p1[2]=LED_ni;
- LED_p1[3]=LED_tanhao;
-
- LED_p2[0]=LED_bao;//寶貝寶貝;
- LED_p2[1]=LED_be;
- LED_p2[2]=LED_bao;
- LED_p2[3]=LED_be;
-
- LED_p3[0]=LED_di;//帝業(yè)電子;
- LED_p3[1]=LED_ye;
- LED_p3[2]=LED_dian;
- LED_p3[3]=LED_zi;
-
- LED_p4[0]=LED_3D;//3D搖搖棒;
- LED_p4[1]=LED_yao;
- LED_p4[2]=LED_yao;
- LED_p4[3]=LED_bang;
-
- LED_p5[0]=LED_yi;//一生一世;
- LED_p5[1]=LED_sheng;
- LED_p5[2]=LED_yi;
- LED_p5[3]=LED_shi;
- LED_p6[0]=LED_sheng;//生日快樂;
- LED_p6[1]=LED_ru;
- LED_p6[2]=LED_kuai;
- LED_p6[3]=LED_lei;
- LED_p7[0]=LED_feng;//鳳凰傳奇;
- LED_p7[1]=LED_huang;
- LED_p7[2]=LED_chuan;
- LED_p7[3]=LED_qi;
-
- LED_p8[0]=LED_qing;//情有獨鐘;
- LED_p8[1]=LED_you;
- LED_p8[2]=LED_du;
- LED_p8[3]=LED_zhong;*/
-
-
- left_right=1;
- H1=1;H2=1;H3=1;H4=1;
- UART_init();
- /*bank=IapReadByte(IAP_ADDRESS8+6);
- COM_send(bank+0x30);
- IapEraseSector(0x0000);
- IapProgramByte(0,'W');
- IapProgramByte(1,'B');
- IapProgramByte(2,'Q');
- IapProgramByte(3,'D');
- while(1)
- {
- COM_send(IapReadByte(0));
- COM_send(IapReadByte(1));
- COM_send(IapReadByte(2));
- COM_send(IapReadByte(3));
- delay_ms(4000);
- } */
-
- /* while(1)
- {
- if(LED_EEPROM==1)
- break;
- }
- */
- key_change=1;
- if(key_change==0)//如果上電的時候按鍵是按下去的,那么進去下載模式。否則進入顯示模式
- {
- bank=IapReadByte(IAP_ADDRESS8+6);
- if(bank==0xFF)
- {
- bank=0;
- IapProgramByte(IAP_ADDRESS8+6,0);
- }
- H3=0;
- delay_ms(4000);
- H3=1;
- while(1)
- {
- delay_ms(4000);
- delay_ms(4000);
- /* if(flag==1)
- {
- flag=0;
- for(i=0;i<512;i++)
- {
- IapProgramByte(i,0x55);
- }
- for(i=0;i<512;i++)
- {
- //COM_send(IapReadByte(i));
- COM_send(IapReadByte(i));
- }
- flag1++;
- }*/
- }
- }
- while(key_change==1);
- delay_ms(4000);
- if(IapReadByte(IAP_ADDRESS8+9)!=0)//實現(xiàn)顯示上的切換,基數(shù)次上電顯示的是EEPROM保存的漢字,偶數(shù)次上電顯示的程序自帶的內(nèi)容
- {
- LED_EEPROM=1;
- hz_num[9]=0;
- COM_send('E');COM_send('E');COM_send('P');COM_send('R');COM_send('O');COM_send('M');
- COM_send(0x0d);
- COM_send(0x0a);
- }
- else
- {
- LED_EEPROM=0;
- hz_num[9]=1;
- COM_send('Z');COM_send('I');COM_send('D');COM_send('A');COM_send('I');COM_send('I');
- COM_send(0x0d);
- COM_send(0x0a);
- }
- for(i=0;i<9;i++)
- {
- hz_num[i]=IapReadByte(IAP_ADDRESS8+i);
- }
- hz_num[10]=IapReadByte(IAP_ADDRESS8+10); //音樂下載標志
- sleep=IapReadByte(IAP_ADDRESS8+11); //音樂下載標志
- hz_num[11]=sleep;
- if(hz_num[10]==0x55)
- {
- have_music=1;
- // COM_send('h');COM_send('a');COM_send('v');COM_send('e');COM_send(0x0d);COM_send(0x0a);
- /* for(i=0;i<100;i++)
- {
- COM_send(IapReadByte(IAP_ADDRESS7+i));
- }*/
- }
- if((sleep==0)||(sleep==0xff))
- {
- sleep=340;
- }
- else
- {
- //COM_send(sleep/10+0x30);COM_send(sleep%10+0x30);COM_send(0x0d);COM_send(0x0a);
- sleep=sleep*10;
- }
- IapEraseSector(IAP_ADDRESS8);
- for(i=0;i<12;i++)
- {
- IapProgramByte(IAP_ADDRESS8+i,hz_num[i]);
- }
-
- if(LED_EEPROM==1)
- {
- /*for(zd=0;zd<128;zd++)
- {
- RECEIVR_buffer[zd]=IapReadByte(zd);//獲取第一個漢字的代碼
- COM_send(RECEIVR_buffer[zd]);
- delay_ms(100);
- }*/
- bank=IapReadByte(IAP_ADDRESS8+6);//得到已經(jīng)有幾個bank里面保存了數(shù)據(jù)
- LED_EEPROM_number=IapReadByte(IAP_ADDRESS8);//得到第一個bank里面保存了幾個漢字
- tt=300-LED_EEPROM_number*20;
- /* COM_send('b');COM_send('a');COM_send('n');COM_send('k');COM_send('=');COM_send(bank+0x30);
- COM_send(0x0d);
- COM_send(0x0a);
- COM_send('L');COM_send('E');COM_send('D');COM_send('_');COM_send('E');COM_send('E');
- COM_send('P');COM_send('R');COM_send('O');COM_send('M');COM_send('_');COM_send('n');
- COM_send('u');COM_send('m');COM_send('b');COM_send('e');COM_send('r');COM_send('=');
- COM_send(LED_EEPROM_number+0x30);
- COM_send(0x0d);
- COM_send(0x0a);*/
- }
- EX0=1;
- IT0=1;
- EX1=1;
- IT1=1;
- EA=1;
- InitialSound();
- TR0 = 1;
- TR1 = 1;
-
- P1 = 0x55;
- H1=1;
- PCA_intial();
- /*CR=1;
- while(1)
- {
- if(PCA_COUNT==40)
- {
- PCA_COUNT = 0;
- H1=!H1;
- }
- } */
- LED_display();
- while(1)
- {
- Play(music_p[music_num],5,2,sleep);
- can_add=1;
- if(change_code)
- {
- change_code=0;
- }
- }
- }
- //--------------------------------------------------------------
- //--------------------------------------------------------------------------------------------------
- // 函數(shù)名稱: com_interrup()串口接收中斷處理函數(shù)
- // 函數(shù)功能: 接收包括起始位'S'在內(nèi)的十位數(shù)據(jù)到數(shù)據(jù)緩沖區(qū)
- //--------------------------------------------------------------------------------------------------
- void ISR_Hy(void) interrupt 0 using 1
- {
- EX0=0;
- IT0=0;
- begin_LED=1;
- if(begin_timer==1)
- {
- total=0;//PAC向上計數(shù)
- begin_timer=0;
- CH=0;
- CL=0;
- CR=1;
- }
- if(begin_timer_LED==1)
- {
- CR=0;
- total=0;//PCA向下計時
- begin_timer_LED=0;
- begin_timer=1;//允許下次進水銀中斷后開始計時
- total_timer=CH*256;//得到時間值
- total_timer=total_timer+CL;
- // begin_display_timer=total_timer;//得到時間值
- }
- EX0=1;
- IT0=1;
- }
- void ISR_key(void) interrupt 2
- {
- delay_ms(30);
- if(key_change==0)
- {
- EX1=0;
- IT1=0;
- change_code=1;
- if((LED_EEPROM==1)&&(have_music==1))
- {
- display_LED++;//顯示內(nèi)容更新
- LED_EEPROM_number=IapReadByte(IAP_ADDRESS8+display_LED);//顯示內(nèi)容包含幾個漢字
- }
- else if(can_add)
- {
- music_num++;//播放的音樂內(nèi)容更新
- display_LED++;//顯示內(nèi)容更新
- LED_EEPROM_number=IapReadByte(IAP_ADDRESS8+display_LED);//顯示內(nèi)容包含幾個漢字
- can_add=0;
- }
- if(music_num>7)
- {
- music_num=0;
- }
- if(display_LED>=bank)
- {
- display_LED=0;
- LED_EEPROM_number=IapReadByte(IAP_ADDRESS8);
- }
- if(LED_EEPROM)
- {
- tt=300-LED_EEPROM_number*20;
- }
- else
- {
- tt=300;
- }
- while(key_change==0);
- delay_ms(30);
- EX1=1;
- IT1=1;
- }
-
- }
- void com_interrupt(void) interrupt 4 //using 3
- {
- unsigned int i;
- unsigned char hz_number[6]={0};
- WORD add;
- if(RI) //處理接收中斷
- {
- RI=0;
- RECEIVR_buffer[receive_number]=SBUF; //接收串口數(shù)據(jù)
- // COM_send(RECEIVR_buffer[receive_number]);
- if ((RECEIVR_buffer[receive_number] ==0x0A)&&(RECEIVR_buffer[receive_number-1] ==0x0D))
- {
- if((RECEIVR_buffer[receive_number-2]=='N')&&(RECEIVR_buffer[receive_number-3]=='W')&&(RECEIVR_buffer[receive_number-4]=='O')
- &&(RECEIVR_buffer[receive_number-5]=='D'))
- {
- down=1;
- IapEraseSector(512*bank);
- receive_number=0;
- UART_LED_EEPROM_number=0;
- //COM_send(UART_LED_EEPROM_number+0x30);
- // COM_send(0x0D);
- // COM_send(0x0A);
- COM_send('A');
- }
- else if((RECEIVR_buffer[receive_number-2]=='P')&&(RECEIVR_buffer[receive_number-3]=='O')&&(RECEIVR_buffer[receive_number-4]=='T')
- &&(RECEIVR_buffer[receive_number-5]=='S'))
- {
- if(music_flag==1)
- {
- UART_LED_EEPROM_number=0;
- music_flag==0;
- have_music=1;//
- for(i=0;i<12;i++)
- {
- hz_number[i]=IapReadByte(IAP_ADDRESS8+i);
- }
- hz_number[10]=0x55;
- IapEraseSector(IAP_ADDRESS8);
- for(i=0;i<12;i++)
- {
- IapProgramByte(IAP_ADDRESS8+i,hz_number[i]);
- }
- }
- else
- {
- down=0;
- receive_number=0;
- COM_send('O');COM_send('K');
-
- for(i=0;i<bank;i++)
- {
- hz_number[i]=IapReadByte(IAP_ADDRESS8+i);
- }
- hz_number[bank]=UART_LED_EEPROM_number;
- hz_number[bank+1]=IapReadByte(IAP_ADDRESS8+10);//讀出音樂是否下載標志
- hz_number[11]=IapReadByte(IAP_ADDRESS8+11);
- IapEraseSector(IAP_ADDRESS8);
- bank++;
- if(bank>6)
- {
- bank=0;
- }
- for(i=0;i<bank;i++)
- {
- IapProgramByte(IAP_ADDRESS8+i,hz_number[i]);
- }
- IapProgramByte(IAP_ADDRESS8+6,bank);
- IapProgramByte(IAP_ADDRESS8+10,hz_number[bank+1]);//寫入音樂是否下載標志
- IapProgramByte(IAP_ADDRESS8+11,hz_number[11]);
- UART_LED_EEPROM_number=0;
-
- // LED_EEPROM=1;
- // LED_EEPROM_number=IapReadByte(IAP_ADDRESS8+i);
- }
- }
- else if((RECEIVR_buffer[receive_number-2]=='D')&&(RECEIVR_buffer[receive_number-3]=='A')&&(RECEIVR_buffer[receive_number-4]=='E')
- &&(RECEIVR_buffer[receive_number-5]=='R'))
- {
- receive_number=0;
- //bank=IapReadByte(IAP_ADDRESS8+6);
- COM_send(bank+0x30);
- flag++;
- }
- else if((RECEIVR_buffer[receive_number-2]=='R')&&(RECEIVR_buffer[receive_number-3]=='A')&&(RECEIVR_buffer[receive_number-4]=='E')
- &&(RECEIVR_buffer[receive_number-5]=='L')&&(RECEIVR_buffer[receive_number-6]=='C'))
- {
- receive_number=0;
- IapEraseSector(IAP_ADDRESS1);
- IapEraseSector(IAP_ADDRESS2);
- IapEraseSector(IAP_ADDRESS3);
- IapEraseSector(IAP_ADDRESS4);
- IapEraseSector(IAP_ADDRESS5);
- IapEraseSector(IAP_ADDRESS6);
- IapEraseSector(IAP_ADDRESS7);
- IapEraseSector(IAP_ADDRESS8);
- // bank=0;
- have_music=0;
- IapProgramByte(IAP_ADDRESS8+6,0);
- bank=IapReadByte(IAP_ADDRESS8+6);
- COM_send('C');COM_send('L');COM_send('E');COM_send('A');COM_send('R');
- COM_send('+');COM_send('O');COM_send('K');
- }
- else if((RECEIVR_buffer[receive_number-2]=='S')&&(RECEIVR_buffer[receive_number-3]=='U')&&(RECEIVR_buffer[receive_number-4]=='M')
- &&(RECEIVR_buffer[receive_number-5]=='L')&&(RECEIVR_buffer[receive_number-6]=='C'))
- {
- receive_number=0;
- IapEraseSector(IAP_ADDRESS7);
- // bank=0;
- for(i=0;i<12;i++)
- {
- hz_number[i]=IapReadByte(IAP_ADDRESS8+i);
- }
- hz_number[10]=0;
- IapEraseSector(IAP_ADDRESS8);
- for(i=0;i<12;i++)
- {
- IapProgramByte(IAP_ADDRESS8+i,hz_number[i]);
- }
- COM_send('C');COM_send('L');COM_send('E');COM_send('A');COM_send('R');
- COM_send('+');COM_send('O');COM_send('K');
- }
- else if((RECEIVR_buffer[0]=='S')&&(RECEIVR_buffer[1]=='L')&&(RECEIVR_buffer[2]=='E')&&(RECEIVR_buffer[3]=='E')
- &&(RECEIVR_buffer[4]=='P'))
- {
- if(RECEIVR_buffer[7]==0x0d)
- {
- sleep=((RECEIVR_buffer[5]-0x30)*10+(RECEIVR_buffer[6]-0x30))*10;
- }
- else
- {
- sleep=(RECEIVR_buffer[5]-0x30)*10;
- }
- for(i=0;i<12;i++)
- {
- hz_number[i]=IapReadByte(IAP_ADDRESS8+i);
- }
- hz_number[11]=sleep/10;
- IapEraseSector(IAP_ADDRESS8);
- for(i=0;i<12;i++)
- {
- IapProgramByte(IAP_ADDRESS8+i,hz_number[i]);
- }
- receive_number=0;
- COM_send('S');COM_send('L');COM_send('E');COM_send('E');COM_send('P');
- }
- else if((RECEIVR_buffer[receive_number-2]=='C')&&(RECEIVR_buffer[receive_number-3]=='I')&&(RECEIVR_buffer[receive_number-4]=='S')&&(RECEIVR_buffer[receive_number-5]=='U')
- &&(RECEIVR_buffer[receive_number-6]=='M'))
- {
- music_flag=1;
- IapEraseSector(IAP_ADDRESS7);
- receive_number=0;
- COM_send('A');
- }
- else if(down==1)
- {
- add=512*bank;
- /* for(i=0;i<receive_number;i++)
- {
- COM_send(RECEIVR_buffer[i]);
- }*/
- for(i=0;i<receive_number;i++)
- {
- if(RECEIVR_buffer[i]==0x0d)
- {
- //delay_ms(2000);
- COM_send('A');
- break;
- }
- else
- //COM_send(UART_LED_EEPROM_number+0x30);
- //COM_send(0x0D);
- // COM_send(0x0A);
- IapProgramByte((add+(UART_LED_EEPROM_number*128)+i),RECEIVR_buffer[i]);
- // COM_send(IapReadByte((add+UART_LED_EEPROM_number*128+i)));
- }
-
- /* for(i=0;i<receive_number;i++)
- {
- // COM_send(IapReadByte(add+UART_LED_EEPROM_number*128+i)); //發(fā)送數(shù)據(jù)
- COM_send((add+UART_LED_EEPROM_number*128+i)/1000+0x30);
- COM_send((add+UART_LED_EEPROM_number*128+i)%1000/100+0x30);
- COM_send((add+UART_LED_EEPROM_number*128+i)%100/10+0x30);
- COM_send((add+UART_LED_EEPROM_number*128+i)%10+0x30);
- COM_send(0x0D);
- COM_send(0x0A);
- delay_ms(10);
- }
- COM_send('H');COM_send('H');COM_send('H');COM_send('H');COM_send('H');COM_send('H');
- COM_send('H');COM_send('H');COM_send('H');COM_send('H');COM_send('H');COM_send('H');
- COM_send(0x0D);
- COM_send(0x0A);*/
- UART_LED_EEPROM_number++;
- receive_number=0;
- }
- else if(music_flag==1)
- {
- for(i=0;i<receive_number;i++)
- {
- if(RECEIVR_buffer[i]==0x0d)
- {
- COM_send('A');
- break;
- }
- else
- //COM_send(UART_LED_EEPROM_number+0x30);
- //COM_send(0x0D);
- // COM_send(0x0A);
- IapProgramByte((IAP_ADDRESS7+(UART_LED_EEPROM_number*128)+i),RECEIVR_buffer[i]);
- }
- /* for(i=0;i<receive_number;i++)
- {
- // COM_send(IapReadByte(add+UART_LED_EEPROM_number*128+i)); //發(fā)送數(shù)據(jù)
- COM_send((add+UART_LED_EEPROM_number*128+i)/1000+0x30);
- COM_send((add+UART_LED_EEPROM_number*128+i)%1000/100+0x30);
- COM_send((add+UART_LED_EEPROM_number*128+i)%100/10+0x30);
- COM_send((add+UART_LED_EEPROM_number*128+i)%10+0x30);
- COM_send(0x0D);
- COM_send(0x0A);COM_send('H');COM_send('H');COM_send('H');COM_send('H');
- COM_send('H');COM_send('H');COM_send('H');COM_send('H');COM_send('H');COM_send('H');
- COM_send(0x0D);
- COM_send(0x0A);*/
- UART_LED_EEPROM_number++;
- delay_ms(10);
- }
- COM_send('H');COM_send('H');
- receive_number=0;
- }
- }
- else
- receive_number++;
-
- }
復(fù)制代碼
所有資料51hei提供下載:
yaoyaobang.zip
(13.28 KB, 下載次數(shù): 5)
2018-11-1 11:32 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|