① 单片机开发板有什么用途
1、可以作为烧写器(即编程器),将自己写好的程序写入单片机中,但烧写单片机的种类单一 ,型号也不会太多。
2、可以利用开发板上的一些硬件做一些单片机实验(不需要自己搭建实验电路)有利于初学者使用。
单片机的学习需要理论和动手,理论与实践并重。
(1)单片机音乐盒按键系统扩展阅读:
单片机开发板介绍
单片机开发板是用于学习51、STC、AVR型号的单片机实验设备。
根据单片机使用的型号又有51单片机开发板、STC单片机开发板、AVR单片机开发板。
常见配套有硬件、实验程序源码、电路原理图、电路PCB图等学习资料。
例如电子人单片机开发板,针对部分学者需要特别配套有VB上位机软件开发,游戏开发等教程学习资料,开发此类单片机开发板的公司一般提供完善的售后服务与技术支持。
② 跪求51单片机音乐盒汇编语言程序,急用!!!!谢谢@@
HUAN BIT 20H
ORG 0000H
JMP MAIN
ORG 000BH
MOV TL0,R2
MOV TH0,R3
CPL P2.0
ORG 001BH
DJNZ R4,GOON
MOV IE,#80H
JMP T1END
GOON: MOV TL1,#0B0H
MOV TH1,#3CH
T1END: RETI
ORG 0100H
MAIN: MOV R5,#99H
LOOP: MOV TMOD,#11H
MOV IP,#02H
MOV TL0,#0B0H
SETB EA
NEXT: MOV DPTR,#TAB
MOV R1,#00H
L1: MOV A,R1
MOVC A,@A+DPTR
MOV R3,A
JZ L3
INC R1
MOV A,R1
MOVC A,@A+DPTR
MOV R2,A
XRL A,#0FFH
JNZ L4
MOV A,R3
XRL A,#0FFH
JZ L5
L4: INC R1
MOV A,R1
L3: MOVC A,@A+DPTR
MOV R4,A
MOV TH0,R3
MOV TL0,R2
SETB ET0
SETB TR0
SETB ET1
SETB TR1
SETB HUAN
JB HUAN,$
INC R1
CJNE R1,#00H,L2
INC DPH
L2: JMP L1
L5: DJNZ R5,LOOP
JMP $
;《两只老虎》播放数据
TAB: DB 0FBH,0F9H,08H,0FCH,066H,08H,0FCH,0C7H,08H,0FBH,0F9H,08H
DB 0FBH,0F9H,08H,0FCH,066H,08H,0FCH,0C7H,08H,0FBH,0F9H,08H
DB 0FCH,0C7H,08H,0FCH,0F3H,08H,0FDH,0A4H,10H,0FCH,0C7H,08H
DB 0FCH,0F3H,08H,0FDH,04AH,08H,0FDH,04AH,04H,0FDH,095H,04H
DB 0FDH,04AH,04H,0FCH,0F3H,04H,0FCH,0C7H,08H,0FBH,0F9H,08H
DB 0FDH,04AH,04H,0FDH,095H,04H,0FDH,4AH,08H,04H,0FCH,0FCH,04H
DB 0FCH,0C7H,08H,0FBH,0F9H,08H,0FCH,066H,08H,0FAH,093H,08H
DB 0FBH,0F9H,08H,00H,08H,0FCH,66H,04H,0FAH,093H,08H
DB 0FBH,0F9H,08H,00H,10H,0FFH,0FFH
END
要播放其余的歌则用相应的播放数据
③ 求一份基于AT89C51单片机课程设计音乐盒,程序是C语言写的,不是汇编。在数码管上显示四首歌的序号,1~4。
#include <reg52.h>
#include "Music.h"
#include "SoundPlay.h"
#include "lcd.h"
#define SYSTEM_OSC 12000000 //定义晶振频率12000000HZ
#define SOUND_SPACE 4/5 //定义普通音符演奏的长度分率,//每4分音符间隔
sbit BeepIO = P2^0; //定义输出管脚
unsigned char code an[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//an code 0~9
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; //音长定时器初值暂存
//*******************************************************************
#define MaxNo 3 //定义歌曲数目
unsigned char code *Sound;
unsigned char code * code Music[MaxNo]={Music_4,Music_8,Music_7,Music_6,Music_5,Music_9,Music_3,Music_2,Music_1};
signed char FlagNo=0;
static unsigned char KeyScan(void);
static void Beep(void);
bit RunStop = 1;//1表示运行
sbit KeyB =P3^2; // 上一首
sbit KeyF =P3^3; //下一首
sbit KeyT =P3^5; //暂停
extern void Delay1ms(unsigned int);
void InitialSound(void)
{
BeepIO = 0;
Sound_Temp_TH1 = (65535-(1/1200)*SYSTEM_OSC)/256; // 计算TL1应装入的初值 (10ms的初装值)
Sound_Temp_TL1 = (65535-(1/1200)*SYSTEM_OSC)%256; // 计算TH1应装入的初值
TH1 = Sound_Temp_TH1;
TL1 = Sound_Temp_TL1;
TMOD |= 0x11; //两个定时器都工作在方式1
ET0 = 1;
ET1 = 0;
TR0 = 0;
TR1 = 0;
EA = 1;
FlagNo = 0;
Sound = Music[FlagNo];
P1 = an[FlagNo+1];
}
void BeepTimer0(void) interrupt 1 //音符发生中断
{
BeepIO = !BeepIO;
TH0 = Sound_Temp_TH0;
TL0 = Sound_Temp_TL0;
}
//*******************************************************************
void Play(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;
unsigned char Tone,Length,SL,SH,SM,SLen,XG,FD;
#ifdef USE_LCD
lcd_init();
lcd_write_string(0,"MusicPlayer");
#endif
Again :
Delay1ms(600);
for(i=0;i<12;i++) // 根据调号及升降八度来生成新的频率表
{
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;
}
Point = 0;
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;
while(Point < SoundLength)
{
if(KeyScan())goto Again; /*more keyscan for speed*/
SL=Tone%10; //计算出音符
SM=Tone/10%10; //计算出高低音
SH=Tone/100; //计算出是否升半
CurrentFre = NewFreTab[SignTab[SL-1]+SH]; //查出对应音符的频率
if(KeyScan())goto Again; /*more keyscan for speed*/
if(SL!=0)
{
if (SM==1) CurrentFre >>= 2; //低音
if (SM==3) CurrentFre <<= 2; //高音
Temp_T = 65536-(50000/CurrentFre)*10/(12000000/SYSTEM_OSC);//计算计数器初值
Sound_Temp_TH0 = Temp_T/256;
Sound_Temp_TL0 = Temp_T%256;
TH0 = Sound_Temp_TH0;
TL0 = Sound_Temp_TL0 + 12; //加12是对中断延时的补偿
}
if(KeyScan())goto Again; /*more keyscan for speed*/
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; //算出不发音的长度
if(KeyScan())goto Again; /*more keyscan for speed*/
if (SL!=0)
{
TR0=1;
for(i=LDiv1;i>0;i--) //发规定长度的音
{
while(TF1==0);
TH1 = Sound_Temp_TH1;
TL1 = Sound_Temp_TL1;
TF1=0;
if(KeyScan())goto Again; /*more keyscan for speed*/
}
}
if(KeyScan())goto Again; /*more keyscan for speed*/
if(LDiv2!=0)
{
TR0=0; BeepIO=0;
for(i=LDiv2;i>0;i--) //音符间的间隔
{
while(TF1==0);
TH1 = Sound_Temp_TH1;
TL1 = Sound_Temp_TL1;
TF1=0;
if(KeyScan())goto Again; /*more keyscan for speed*/
}
}
Point+=2;
Tone=Sound[Point];
Length=Sound[Point+1];
if(KeyScan())goto Again; /*more keyscan for speed*/
#ifdef USE_LCD
lcd_write_char(12,FlagNo+49);
#endif
}
BeepIO = 0;
FlagNo ++;
if (FlagNo == MaxNo)FlagNo =0;
Sound = Music[FlagNo];
P1 = an[FlagNo+1];
}
/**************************************************************
功能: 键盘扫描函数
入参: viod KeyF 下一首
KeyB 上一首
KeyT 暂停
返回: unsigned char
1 需跳转 0 不跳转
***************************************************************/
static unsigned char KeyScan(void)
{
unsigned char Cont;
if (KeyF == 0){ //前进
Delay1ms(5);
if (KeyF == 0){
while(KeyF == 0){
EA = 0;
FlagNo ++;
if (FlagNo == MaxNo)FlagNo =0;
P1 = an[FlagNo+1];
Beep();
Delay1ms(600); //是长按
EA = 1;
}
if (FlagNo == MaxNo)FlagNo =0;
Sound = Music[FlagNo];
P1= an[FlagNo+1]; //刷显示
while(KeyF == 0);
return 1;
}
}
if (KeyB == 0){ //后退
Delay1ms(5);
if (KeyB == 0){
while(KeyB == 0){
EA = 0;
FlagNo --;
if (FlagNo == -1)FlagNo =MaxNo-1;
P1 = an[FlagNo+1];//刷显示
Beep();
Delay1ms(600); //是长按
EA = 1;
}
if (FlagNo == -1)FlagNo =MaxNo-1;
Sound = Music[FlagNo];
P1 = an[FlagNo+1];
while(KeyB == 0);
return 1;
}
}
if (KeyT == 0){ //暂停
Delay1ms(20);
Cont = 0;
EA = 0;
TR0 = 0;
TR1 = 0;
if (KeyT == 0){
RunStop = ~RunStop;
while(KeyT == 0); //等待第一次释放
Beep();
if (!RunStop){ //是暂停 则关中断和定时器
EA = 0;
TR0 = 0;
TR1 = 0;
while(KeyT == 0); //检测第二次按键 并等待它释放(若有的话)
while (KeyT){ //第二次释放了 等待第三次按下
P1 = an[Cont++%10]; //第三次未按下 则暂停数秒0~9
Delay1ms(100);
} //此处暂停 直到再次有按键低电平
EA = 1; //重开定时器和中断
TR0 = 1;
TR1 = 1;
Sound = Music[FlagNo];
P1 = an[FlagNo+1]; //恢复原来的显示
}
}
EA = 1;
TR0 = 1;
TR1 = 1;
return 0;
}
return 0;
}
void Beep(void)
{
unsigned char i;
for(i = 0;i < 200 ;i ++){
BeepIO = ~BeepIO;
Delay1ms(1);
}
}
Playmusic:
#include <REG52.H>
#include "Music.h"
#include "SoundPlay.h"
void Delay1ms(unsigned int count)
{
unsigned int i,j;
for(i=0;i<count;i++)
for(j=0;j<120;j++);
}
main()
{
InitialSound();
while(1)
{
Play(0,3,380);
Delay1ms(500);
}
}
Music:
#include "Music.h" //*****************************Music********************************
//挥着翅膀的女孩
unsigned char code Music_1[]={
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_2[]={
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_3[] ={
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 };
④ 想在单片机中烧一首歌(MP3)做音乐盒 需要哪些器材 怎么做
呃,。。
这个比较复杂,
存在的问题如下:
1.一般的单片机的容量有限,几K到几十K甚至上百K不等,而一首MP3一般要几M大小。。。这个差距你也能看的出来。。。除非外扩存储空间,比如说flash,比如说SD卡之类的。。。
2.MP3是压缩格式,按你说的做成音乐盒的话,肯定要解压缩,一般的单片机的RAM也很有限,运算速度也很一般,软解码的话不现实;除非选择硬解码,这样的话就要外加芯片。。。
再这样分析下去估计你做成的就不是一个音乐盒了,而是一款“MP3”了。。。
生活中常见的那些会唱歌的玩具呀,短暂录音的喇叭呀,汽车上那种“倒车请注意”或者语音报站之类的东西呀,都不是用你想象的方案实现的,用的是专门的语音录制芯片。。。
当然,也可能是在下的见识有限,没有接触过能实现你这个要求的方案,
还有就是有个“凌阳”的单片机,似乎在语音方面比较擅长(本人也没用过,不敢妄断),你可以在网上了解一下。
希望以上回答能对你有所帮助。
---------------------------mscfox
---------------------------
我想知道你还想了解哪方面的?
⑤ 单片机音乐盒MOV DPTR,#DAT ;表头地址送DPTR 怎样送
如:MOV DPTR,#07EE
MOV @DPTR #0056
的意思是把立即数(DAT)送到DPTR中,其中DPH是高8位,DPL是低8位,
然后DPTR的内容作为地址,就是将0056送到07EE这个单元中。懂了么,不懂的话, 可以找我,QQ:309570317