资源描述
1会计学单片机实验一单片机开发系统的使用单片机实验一单片机开发系统的使用三、实验原理三、实验原理:51单片机开发系统的结构单片机开发系统的结构 4 0 芯 扁芯 扁平电缆平电缆RS232PC机机仿真器仿真器C51实验开发板实验开发板(目标板)(目标板)电电 源源几个几个SFR的地址:的地址: A:0E0H B:0F0H PSW:0D0HCYACF0RS1RS0OVPPSW各位的意义:各位的意义:1、认识、认识51单片机开发系统的结构。单片机开发系统的结构。 2、初步认识仿真器软件和、初步认识仿真器软件和Keil C51软件界面软件界面 。3、简单程序调试、简单程序调试 。(1)传送指令:传送指令: 设置内部设置内部RAM的值,的值,(30H)=40H, (40H)=10H,单步执行下列程序,检查,单步执行下列程序,检查结果。结果。MOV R0,#30HMOV A,R0MOV R1, AMOV B, R1 SJMP $ 执行后:执行后:(R0)= ,(R1)= , (A)= ,(B)= , (30H)= ,(40H)= 。四、实验内容四、实验内容: (2) 运算指令运算指令 单步执行:单步执行:MOV A, #0BFHMOV 20H, #85HSETB CADD A, 20H SJMP $检查:检查:A= ,CY= ,AC= ,OV= ,P= 。单步执行:单步执行: 前面程序段,把第四句改为:前面程序段,把第四句改为:ADDC A,20H检查:检查:A= ,CY= ,AC= ,OV= ,P= 。单步执行:单步执行: 前面程序段,把第四句改为:前面程序段,把第四句改为: SUBB A,20H 检查:检查:A= ,CY= ,AC= ,OV= ,P= 。单步执行:单步执行: 前面程序段,把第四句改为:前面程序段,把第四句改为:CJNE A,20H,Q1 检查:检查:A= ,CY= ,AC= ,OV= ,P= 。单步执行:单步执行:MOV A, #0BFHMOV B, #85HMUL ABSJMP $ 检查:检查:A= ,B= ,CY= ,AC= ,OV= ,P= 。单步执行:单步执行:MOV A, #0BFHMOV B, #85HDIV ABSJMP $ 检查:检查:A= ,B= ,CY= ,AC= ,OV= ,P= 。 (3) 十进制调整指令十进制调整指令 MOV A, #37HMOV 20H, #85HCLR CADD A, 20HDA A SJMP $DA A指令前后分别检查:指令前后分别检查:A= ,CY= ,AC= ,OV= ,P= 。MOV SP,#30HMOV A, #0FHMOV B, #80HPUSH ACCPUSH BPOP ACCPOP BSJMP $ 运行后检查:运行后检查:A= ,B= ,30H= ,31H= 。 (4) 堆栈操作指令堆栈操作指令 4、多字节十进制数加法程序调试:、多字节十进制数加法程序调试: 两个两个4字节十进制数字节十进制数1234567和和89987265相加,将其相加,将其8421BCD码按低位到高位存码按低位到高位存放在地址为放在地址为20-23H、30-33H的的RAM中,运算结果存放在中,运算结果存放在20-23H的地址中。的地址中。 分别按分别按“跟踪跟踪”、“单步单步”和和“全速全速”方式调试程序。检查运算结果,区别方式调试程序。检查运算结果,区别“跟跟踪踪”、“单步单步”调试方式的不同。在调试方式的不同。在“ADD_BCD子程序子程序”的指令的指令“DA A”处设置断处设置断点,再用点,再用“全速全速”方式运行,到达方式运行,到达断点后,观察断点后,观察“A”的值,的值,然后用然后用“单步单步”运行,运行,观观察察指令指令“DA A”的功能。同时理解的功能。同时理解“断点断点” 方式调试程序的特点。方式调试程序的特点。 主程序主程序 MOV R0, #20H ;置被加数首地址置被加数首地址MOV R1, #30H ;置加数首地址置加数首地址MOV R2, #04H ;置被加数和加数的长度置被加数和加数的长度(字节数字节数)ACALL ADD_BCD ;调用多字节十进制数加法子程序;调用多字节十进制数加法子程序ADD_BCDSJMP $ ;停止;停止多字节十进制数加法子程序多字节十进制数加法子程序入口入口: R0、R1为为被加数和加数的首地址,按低位到高位存放被加数和加数的首地址,按低位到高位存放出口出口: R0为运算结果为运算结果的首地址,也按低位到高位存放的首地址,也按低位到高位存放ADD_BCD:CLR C ;进位清零进位清零LOOP: MOV A, R0 ;一字节的被加数一字节的被加数AADDC A, R1 ;一字节加一字节加DA A ;十进制数调整;十进制数调整MOV R0, A ;存;存一字节的运算结果一字节的运算结果INC R0 ;被加数指向下一字节被加数指向下一字节INC R1 ;加数指向下一字节加数指向下一字节DJNZ R2, LOOP ;循环控制;循环控制RET ;子程序返回;子程序返回END
展开阅读全文