您好,欢迎访问三七文档
单片机实验报告实验一数据传送(RAM–XRAM)一、实验目的熟悉星研集成环境软件或熟悉KeilC51集成环境软件的使用方法。熟悉MCS51汇编指令,能自己编写简单的程序,掌握数据传输的方法。二、实验内容1、熟悉星研集成环境软件或熟悉KeilC51集成环境软件的安装和使用方法。2、编写程序,实现内外部数据段的传送、校验。三、程序框图开始堆栈指针初始化计数器、地址初始化内部RAM数据传送外部RAM一次地址指针+1计数器-1=0?计数器、地址指针复位取内部RAM和对应的外部RAM比较是否相等地址指针+1计数器-1=0?传送正确传送错误结束NNYYYN数据传送程序框图四、实验步骤在内部RAM30H~3FH中输入数据;使用单步、断点方式调试程序,检测外部数据RAM的1000H~100FH中的内容。熟悉查看特殊功能寄存器、内部数据RAM、外部数据空间的各种方法。五、程序清单;将内部RAMAddress1开始的16个字节送到外部RAM从Address2开始的单元里,再作比较。Address1DATA30HAddress2XDATA1000HORG0000HLJMPSTARORG0100HSTAR:MOVSP,#60HMOVR0,#Address1MOVDPTR,#Address2MOVR7,#10HSTAR1:MOVA,@R0;传送MOVX@DPTR,AINCR0INCDPTRDJNZR7,STAR1MOVR0,#Address1MOVDPTR,#Address2MOVR7,#10HSTAR2:MOVB,@R0;比较MOVXA,@DPTRCJNEA,B,STAR3INCR0INCDPTRDJNZR7,STAR2SJMP$;传送正确STAR3:SJMP$;传送错误END实验二双字节BCD码(十进制数)加法一、实验目的熟悉51汇编指令,学会使用星研集成环境软件,能自己编写简单的程序,熟悉BCD码,了解如何调用系统提供的子程序。二、实验内容从键盘上输入4位被加数、加数,实现双字节BCD码(四位数)的加法,结果显示在数码管上;熟悉使用断点、单步进入、单步、运行到光标处、修改PC指针、全速运行等各种调试手段;熟悉查看特殊功能寄存器、内部数据RAM、外部数据空间的各种方法。三、实验框图开始初始化堆栈设定先清LED,再接收键输入标志通过键盘获得4位被加数(压缩BCD码)置位接收到第一个键后才清除LED标志通过键盘获得4位加数(压缩BCD码)被加数与加数的低位字节不带进位加法被加数与加数的高位字节带进位加法十进制调整十进制调整压缩BCD码(结果)转换为非压缩BCD码高位0消隐显示结果双字节BCD加法程序框图四、实验步骤1、连线说明:D3区:CLK——B2区:2MD3区:CS——A3区:CS5D3区:A0——A3区:A02、在F4区的键盘上输入4位被加数、加数3、结果显示在F4区的数码管上五、程序清单EXTRNCODE(Display8,GetBCDKey)BufferDATA30H;8字节显示缓冲区F1BIT0D1H;PSW.1ORG0000HLJMPSTARTORG0100HSTART:MOVSP,#60HCLRF1;先清除显示,再接收键输入START1:MOVR0,#bufferMOVA,#4;按键次数LCALLGetBCDKey;得到双字节十进制数(被加数)SETBF1;接收到第一个键,才清除显示MOVR0,#buffer+4MOVA,#4;按键次数LCALLGetBCDKey;得到双字节十进制数(加数)MOVA,buffer+1ADDA,buffer+5DAAMOVbuffer+5,AMOVA,bufferADDCA,buffer+4DAAMOVbuffer+4,ACLRARLCADisplay:PUSHACC;显示结果MOVR0,#bufferMOVA,buffer+5;低位ACALLB1toB2;压缩BCD码转换成非压缩BCD码MOVA,buffer+4;高位ACALLB1toB2POPACC;进位ACALLB1toB2MOV@R0,#10H;最高二位消隐INCR0MOV@R0,#10HMOVR0,#buffer+5MOVR7,#5ACALLBlackDisplay;将高位0消隐MOVR0,#bufferLCALLDisplay8SJMPSTART1;将一个字节压缩BCD码转换成二个字节非压缩BCD码B1toB2:PUSHACCANLA,#0FHMOV@R0,AINCR0POPACCANLA,#0F0HSWAPAMOV@R0,AINCR0RETBlackDisplay:MOVA,@R0;将高位0消隐JNZExitMOVA,#10HMOV@R0,ADECR0DJNZR7,BlackDisplayExit:RETEND实验三双字节BCD码(十进制数)减法一、实验目的熟悉51汇编指令,学会使用星研集成环境软件,掌握汇编语言的设计和调试方法。能看懂程序流程框图,能自己设计程序,熟悉BCD码、补码,了解如何调用系统提供的子程序。二、实验内容从键盘上输入4位被减数、减数,实现双字节BCD码(四位数)的减法,结果显示在数码管上;进一步熟悉使用断点、单步进入、单步、运行到光标处、修改PC指针、全速运行等各种调试手段;熟悉查看特殊功能寄存器、内部数据RAM、外部数据空间的各种方法。三、程序框图设定先清LED,再接收键输入标志堆栈初始化开始通过键盘获得双字节十进制被减数(压缩BCD码)置位接收到第一个键后才清除LED标志通过键盘获得双字节十进制减数(压缩BCD码)减数进行十进制取补双字节十进制加法操作C=1?C=0,有进位(结果为负),再执行一次求补运算,调整为正数高位0消隐,若结果为负,前面加上-显示结果YN双字节十进制减法程序框图四、实验步骤1、连线说明:D3区:CLK——B2区:2MD3区:CS——A3区:CS5D3区:A0——A3区:A02、在F4区的键盘上输入4位被减数、减数3、结果显示在F4区的数码管上五、程序清单EXTRNCODE(Display8,GetBCDKey)BufferDATA30H;8字节显示缓冲区F1BIT0D1H;PSW.1ORG0000HLJMPSTARTORG0100HSTART:MOVSP,#60HCLRF1;先清除显示,再接收键输入START1:MOVR0,#bufferMOVA,#4;按键次数LCALLGetBCDKey;得到双字节十进制数(被减数)SETBF1;接收到第一个键,才清除显示MOVR0,#buffer+4MOVA,#4;按键次数LCALLGetBCDKey;得到双字节十进制数(减数)MOVA,#9AHCLRCSUBBA,buffer+5MOVbuffer+5,AMOVA,#99HCLRCSUBBA,buffer+4MOVbuffer+4,A;减数取补MOVA,buffer+1ADDA,buffer+5DAAMOVbuffer+5,AMOVA,bufferADDCA,buffer+4DAAMOVbuffer+4,AMOVF0,C;借位标志JCDisplayMOVA,#9AHSUBBA,buffer+5MOVbuffer+5,AMOVA,#99HSUBBA,buffer+4XCHA,buffer+5ADDA,#00HDAAXCHA,buffer+5ADDCA,#00HDAAMOVbuffer+4,ADisplay:MOVR0,#buffer;显示结果MOVA,buffer+5;低位ACALLB1toB2;压缩BCD码转换成非压缩BCD码MOVA,buffer+4;高位ACALLB1toB2MOV@R0,#10H;最高四位消隐INCR0MOV@R0,#10HINCR0MOV@R0,#10HINCR0MOV@R0,#10HMOVR0,#buffer+3MOVR7,#3ACALLBlackDisplay;将高位0消隐MOVR0,#bufferLCALLDisplay8SJMPSTART1BlackDisplay:MOVA,@R0;将高位0消隐JNZExitMOVA,#10HMOV@R0,ADECR0DJNZR7,BlackDisplayExit:JBF0,Exit1INCR0MOV@R0,#11H;负数标志Exit1:RETB1toB2:PUSHACCANLA,#0FHMOV@R0,AINCR0POPACCANLA,#0F0HSWAPAMOV@R0,AINCR0RETBlackDisplay:MOVA,@R0JNZExitMOVA,#10HMOV@R0,ADECR0DJNZR7,BlackDisplayExit:RETEND实验四四字节十六进制数转十进制数一、实验目的进一步熟悉51汇编指令,了解十六进制数转十进制数的方法。二、实验内容从键盘上输入8位十六进制数,实现四字节十六进制数转8位十进制数,并在数码管上显示。注意输入数据必须在00000000H~05F00000H范围,否则,结果超出8位十进制数,无法正确显示。三、程序框图初始化堆栈开始设定先清LED,再接收键输入标志通过键盘获得4字节十六进制数置位接收到第一个键后,才清除LED标志十六进制转十进制子程序显示开始0→R4,R5,R6,R7(用于存放压缩BCD码)32→B(循环次数)CLRC四字节十六进制数带进位左移一位(R4R5R6R7)×2+进位位C→(R4R5R6R7),同时进行十进制调整主程序十六进制转十进制子程序NY返回B-1=0?四、实验步骤1、连线说明:D3区:CLK——B2区:2MD3区:CS——A3区:CS5D3区:A0——A3区:A02、在F4区的键盘上输入8位十六进制数3、结果显示在F4区的数码管上五、程序清单EXTRNCODE(Display8,GetKey)BufferDATA30H;8字节显示缓冲区F1BIT0D1H;PSW.1ORG0000HLJMPSTARTORG0100HSTART:MOVSP,#60HCLRF1;先清除显示,再接收键输入START1:MOVR0,#bufferMOVA,#8;按键次数LCALLGetKey;得到4字节十六进制数SETBF1;接收到第一个键后,才清除显示MOVR0,bufferMOVR1,buffer+1MOVR2,buffer+2MOVR3,buffer+3ACALLB4toD4;转换成十进制数Display:MOVR0,#buffer;显示结果MOVA,R7;低位ACALLB1toB2;压缩BCD码转换成非压缩BCD码MOVA,R6ACALLB1toB2MOVA,R5ACALLB1toB2MOVA,R4;高位ACALLB1toB2MOVR0,#buffer+7MOVR7,#7ACALLBlackDisplay;将高位0消隐MOVR0,#bufferLCALLDisplay8SJMPSTART1;四字节十六进制数转十进制数:R0R1R2R3为十六进制,R4R5R6R7为压缩BCD码B4toD4:CLRAMOVR4,AMOVR5,AMOVR6,AMOVR7,AMOVB,#32LOOP:CLRCMOVA,R3RLCAMOVR3,AMOVA,R2RLCAMOVR2,AMOVA,R1RLCAMOVR1,AMOVA,R0RLCAMOVR0,AMOVA,R7ADDCA,R7DAAMOVR7,AMOVA,R6ADDCA,R6DAAMOVR6,AMOVA,R5ADDCA,R5DAAMOVR5,AMOVA,R4ADDCA,R4DAAMOVR4,ADJNZB,LOOPRETB1toB2:PUSHACCANLA,#0FHMOV@R0,AINCR0POPACCANLA,#0F0HSWAPAMOV@R0,AINCR0RETBlackDisplay:MOVA,@R0;将高位0消隐JNZExitMOVA,#10HMOV@R0,ADECR0DJNZR7,BlackDisplayExit:RETEND实验五双字节BCD码(十进制数)乘法一、实验目的进一步熟悉51汇编指令,掌握汇编语言的设计和调试方法。根据程序流程
本文标题:单片机实验报告
链接地址:https://www.777doc.com/doc-7322144 .html