实验一系统认识及基本程序设计实验一、实验目的1.学习Keil集成开发环境的操作;2.熟悉TD-51系统板的结构及使用,熟悉51指令系统;3.掌握不同进制数及编码相互转换的程序设计方法,加深对数码转换的理解;4.学习查表程序的设计方法,进一步熟悉51的指令系统。二、实验设备PC机一台,TD-NMC+教学实验系统。三、实验步骤⑴编写实验程序,经编译、链接无误后,启动调试功能;⑵观察实验现象,并分析原因;⑶按复位键退出调试状态。四、实验内容1.将BCD码整数0~255存入片内RAM的20H、21H、22H中,然后转换为二进制整数00H~FFH,保存到寄存器R4中。修改20H、21H、22H单元的内容,如:00H,05H,08H;观察实验结果。参考程序:;==============================================================;文件名称:Asm2-1.asm;功能描述:BCD整数转换为二进制整数(8位,范围从00H--FFH);==============================================================ORG0000HLJMPMAINORG0100HMAIN:MOVR0,#20H;BCD存放高位地址MOVR7,#03H;BCD码0--255,最多3位CLRAMOVR4,ALP1:MOVA,R4MOVB,#0AHMULAB;乘10ADDA,@R0;加下一位的值INCR0;指向下一单元MOVR4,A;结果存入R4DJNZR7,LP1;转换未结束则继续SJMPMAIN;设置断点,观察实验结果R4中的内容END2.将16位二进制整数存入R3R4寄存器中,转换为十进制整数,以组合BCD形式存储在RAM的20H、21H、22H单元中。参考程序:;=============================================================;文件名称:Asm2-2.asm;功能描述:二进制整数(16位)转换为十进制整数(组合BCD);=============================================================;0--FFFFH(R3R4)==0--65535ORG0000HLJMPMAINORG0100HMAIN:MOVR0,#22H;转换结果低位地址MOVA,R0PUSHACC;ACC表示累加器A的直接地址MOVR7,#03HCLRALP1:MOV@R0,A;结果存储地址清零DECR0DJNZR7,LP1POPACCMOVR0,AMOVR7,#16LP2:PUSHACCCLRCMOVA,R4;R4中为二进制数的低位RLCAMOVR4,AMOVA,R3;R3中为二进制数的高位RLCAMOVR3,AMOVB,#03HLP3:MOVA,@R0ADDCA,@R0;执行乘2操作DAA;十进制调整MOV@R0,A;结果保存DECR0DJNZB,LP3POPACCMOVR0,ADJNZR7,LP2LJMPMAIN;设置断点观察结果,可进行下一次转换END3.通过查表的方法将16进制数转换为ASCII码;参考程序:;=============================================================;文件名称:Asm4-1.asm;功能描述:查表程序设计,将十六进制数0~F通过查表的方法;转换为ASCII码;=============================================================ORG0000HLJMPMAINORG0100HMAIN:MOVDPTR,#ASCTAB;表格首地址送DPTRMOVA,R7;R7中为待转换的数ANLA,#0FH;取低4位MOVCA,@A+DPTR;查表MOVR5,A;低4位转换结果送R1MOVA,R7ANLA,#0F0H;取待转换数的高4位SWAPA;高4位与低4位交换MOVCA,@A+DPTR;查表MOVR6,A;高4位转换结果送R2SJMPMAIN;设置断点观察结果ASCTAB:DB30H,31H,32H,33H,34HDB35H,36H,37H,38H,39HDB41H,42H,43H,44H,45H,46HEND4.通过查表的方法实现y=x2,其中x为0~9的十进制数,以BCD码表示,结果仍以BCD码形式输出。参考程序:;==============================================================;文件名称:Asm4-2.asm;功能描述:查表程序,用程序实现Y=X*X,X为0到9的十进制数,;用BCD码(00H到09H)表示,将X的平方,即Y也以BCD码;的形式保存到R1中.;==============================================================ORG0000HLJMPMAINORG0100HMAIN:MOVDPTR,#SQR;取表格首地址MOVA,R7;要计算的值MOVCA,@A+DPTR;查表MOVR6,A;结果保存SJMPMAINSQR:DB00H,01H,04H,09H,16HDB25H,36H,49H,64H,81HEND实验二片内I/O口及中断应用实验一、实验目的了解P1口作为输入输出方式使用时,CPU对P1口的操作方式。了解MCS-51单片机的中断原理,掌握中断程序的设计方法。二、实验设备PC机一台,TD-NMC+教学实验系统,连接线若干三、实验步骤⑴按实验内容要求完成硬件连线;⑵编写实验程序,经编译、链接无误后,启动调试功能;⑶观察实验现象,并分析原因;⑷按复位键退出调试状态。四、实验内容1.片内I/O口应用实验P1口是8位准双向口,每一位均可独立定义为输入输出。编写实验程序,将P1口的低4位定义为输出,高4位定义为输入,数字量从P1口的高4位输入,从P1口的低4位输出控制发光二极管的亮灭。;============================================================;文件名:DigitIO.ASM;功能说明:数字量输入输出实验,P1口高4位输入,低4位输出;============================================================ORG0000HLJMPSTARTORG0100HSTART:ORLP1,#0F0H;P1口高四位为输入MOVA,P1;读P1口的值SWAPA;A中高,低4位交换MOVP1,A;输出到P1口SJMPSTARTEND2.片内中断系统实验⑴定时器中断单片机集成的定时器可以产生定时中断,利用定时器0和定时器1,编写实验程序在P1.0及P1.1引脚上输出方波信号,通过示波器观察实验现象并测量波形周期。改变计数值,重新运行程序,反复验证程序功能。参考程序:;================================================================;文件名:INT1.ASM;功能说明:采用定时器的中断,在P1.0与P1.1引脚上输出周期波形.;================================================================ORG0000HLJMPSTARTORG000BHLJMPTIMER0ORG001BHLJMPTIMER1ORG0100HSTART:MOVP1,#0FFHMOVTH0,#0F8H;初始化定时器0计数初值MOVTL0,#00HMOVTH1,#0F8H;初始化定时器1计数初值MOVTL1,#00HMOVTMOD,#11H;设置定时器工作模式为方式1MOVTCON,#50H;启动定时器MOVIE,#8AH;使能中断SJMP$TIMER0:CPLP1.0;定时器0中断服务程序,对P1.0引脚取反MOVTH0,#0F8H;重新装入计数初值MOVTL0,#00HRETI;中断返回TIMER1:CPLP1.1;定时器1中断服务程序MOVTH1,#0F8HMOVTL1,#00HRETIEND⑵外部中断手动扩展外部中断INT0、INT1,当INT0产生中断时,使LED8亮8灭闪烁4次;当INT1产生中断时,使LED由右向左流水显示,一次亮两个,循环4次。先按KK1-,观察实验现象,然后按KK2-,观察实验现象。51单片机加入了中断系统,从而提高了CPU对外部事件的处理能力和响应速度。增强型单片机SST89E554RC共有8个中断源,即外部中断0(INT0)、定时器0(T0)、外部中断1(INT1)、定时器1(T1)、串行中断(TI和RI)、定时器2(T2)、PCA中断和Brown-out中断。参考程序:;======================================================================;文件名:INT2.ASM;功能说明:外部中断INT0,INT1操作.;外部中断0:使发光二极管闪烁4次.;外部中断1:使发光二极管由右向左流水显示,一次亮两个LED.;======================================================================ORG0000HLJMPSTARTORG0003HLJMPEINT0ORG0013HLJMPEINT1START:MOVP1,#00HSETBIT0;定义外部中断0为边沿触发SETBEX0;使能外部中断0SETBIT1;定义外部中断1为边沿触发SETBEX1;使能外部中断1SETBEA;使能总中断SJMP$EINT0:MOVR7,#04H;外部中断0中断服务程序ELP0:MOVP1,#0FFHACALLDELAY;调用延时程序MOVP1,#00HACALLDELAYDJNZR7,ELP0RETIEINT1:MOVA,#03H;外部中断1中断服务程序MOVR7,#10HILP1:MOVP1,ARLARLAACALLDELAYDJNZR7,ILP1RETIDELAY:MOVR6,#0FFH;延时子程序DLP1:MOVR5,#0FFHDLP2:DJNZR5,DLP2DJNZR6,DLP1RETEND实验三定时器/计数器应用实验一、实验目的1.了解MCS-51单片机定/计数器的工作原理与工作方式;2.掌握定时/计数器T0和T1在定时器和计数器两种方式下的编程;3.学习定时/计数器T2的可编程时钟输出功能。二、实验设备PC机一台,TD-NMC+教学实验系统,连接线若干三、实验步骤⑴按实验内容要求完成硬件连线;⑵编写实验程序,经编译、链接无误后,启动调试功能;⑶观察实验现象,并分析原因;⑷按复位键退出调试状态。四、实验原理通常,8051单片机内部有2个16位定时/计数器,即定时器0(T0)和定时器1(T1)。增强型单片机SST89E554RC内部还有一个16位定时器T2,与其相关的特殊功能寄存器有TL2、TH2、RCAP2L、RCAP2H、T2CON等。定时器/计数器2控制寄存器(T2CON)各位的含义简述如下:TF2:定时器溢出标志,当定时器溢出时置位,必须由软件清除。当RCLK=1或TCLK=1时此位将不会被置位。EXF2:定时器2外部标志,当EXEN2=1并且T2EX引脚上出现负跳变引起捕捉或重载发生时此位置1。如果定时器2中断使能,EXF2=1会引起中断,此位必须软件清除。DCEN=1时,EXF2不会引起中断。RCLK:接收时钟标志,RCLK=1,串行口使用T2的溢出脉冲作为方式1和3下的接收时钟;RCLK=0,串行口使用T1的溢出脉冲作为接收时钟。TCLK:发送时钟标志,与RCLK的作用相同。EXEN2:定时器2外部使能标志。EXEN2=1且T2未被用于串口时钟时,若T2EX引脚上出现负跳变则出现捕捉或