单片机实验一、查表程序(MOVC A,@A DPTR)
- 格式:pdf
- 大小:362.83 KB
- 文档页数:2
实验名称:一、查表程序日期:2011.4.24得分:同组人:(不填)指导教师:马惠兰一、实验目的1.熟悉Keil uvision3单片机仿真软件的使用方法。
2.熟练掌握单片机实验操作步骤。
3.熟练掌握用MOVC A , @A+DPTR和MOVC A , @A+PC进行查表的程序设计方法和编程技巧。
4.掌握Keil uvision3对寄存器和SFR赋值和查看数据的命令和方法。
二、实验设备PC机一台三、实验内容根据累加器A中的自变量,查表求1~20的平方数,平方高位数存放在寄存器R6中,平方低位数存放在寄存器R7中。
四、实验原理本次实验采用查表指令MOVC A , @A+DPTR实现上述字数据查表。
因为最大的自变量20的平方数是400,为了查表后验证方便,自变量1~20对应的平方数用伪指令DW定义,并且定义为压缩BCD码。
查表指令MOVC A , @A+DPTR只能进行字节查表,要查找一个字数据,必须进行两次查表。
利用指令MOVC A , @A+DPTR查表,表可以存放在任何位置,查表前只需要将表的首地址用MOV指令送DPTR、累加器A中必须是要查找数据在表中的偏移地址即可,查找到的数据存放在累加器A中。
编程时,首先将表的首地址送DPTR,累加器A中的自变量减1形成要查找数据在表中的序号,序号乘2得到表内偏移地址,将该偏移地址暂存到寄存器R6中,用MOVC A , @A+DPTR指令进行第一次查表,得到该自变量的平方高8位在累加器A 中,并与R6进行交换,这样查找的平方高位数存放在寄存器R6中,累加器A中是第一次查表时的表内偏移地址;累加器A再加1,得到要查找的平方低位数在表内的偏移地址,再用MOVC A , @A+DPTR指令进行第二次查表,累加器A得到该自变量的平方低8位,送寄存器R7。
据此实验原理编写的实验源程序清单见附页。
五、实验步骤1.在F盘下为工程建立文件夹张三1;2.新建工程项目文件张三1.uv2,保存在文件夹张三1中,并为工程选择目标器件为AT89S52;3.编辑源程序,建立源文件张三1.ASM,保存在文件夹张三1中;4.将源文件张三1.ASM添加到工程项目组中;5.设置调试环境,选择调试模式为软件模拟;6.加载运行程序,根据预先设计的数据记录表格记录实验数据;7.实验数据经过实验指导教师检查正确后,实验结束。
软件实验4 查表及散转实验1.实验目的1)掌握查表指令的使用方法和查表程序设计;2)理解并能运用散转指令进行程序设计。
2.预习要求1)了解近程和远程两条查表指令的功能和特点;2)了解多分支结构程序的编程方法,以及根据数值实现散转的方法;3)预习本节实验内容,编写实验程序。
3.实验说明运用查表指令设计查表程序,可以使微控制器方便地实现一些复杂函数(如sin x、x+x2)等的运算。
先把函数值按一定规律编成表格存放在程序存储器中,根据自变量就可以查表得到函数值。
这种方法程序简单,执行速度快。
1)查表指令近程查表指令:MOVC A,@A+PC该指令以PC作为基址寄存器,PC的内容和A的内容相加后指向表格中某个数值的地址,从该地址中的数值即为要查找的数送入累加器A。
近程查表指令不占用其它特殊功能寄存器,A的范围是0~255,该指令只能查找本指令后的256B范围内的表格,因此表格的存放空间受到限制。
远程指令:MOVC A,@A+DPTR该指令以DPTR为基址寄存器,DPTR的内容和A的内容相加后指向表格中某个数值的地址,从该地址中的数值即为要查找的数送入累加器A。
DPTR总是设置指向表头,表格的存放空间可以是64KB范围内的任意ROM中,A的范围是0~255,表格的长度与近程查表指令相同。
2)查表程序设计在微控制器应用系统中,查表程序使用频繁。
利用它可避免进行复杂的运算或转换过程,应用比较广泛。
查表就是根据自变量x的值,在表中查找y,使y=f(x)。
x和y可以是各种类型的数据,微控制器中的表格通常是一维表格。
表格通常存放在程序存储器中。
3)散转程序设计根据不同的输入条件或不同的运算结果,使程序转向不同的处理程序,称之为散转程序。
散转程序是分支结构程序的一种。
散转程序需要一个表,但表中所列的不是普通数据,而是某些功能程序的入口地址或转向这些功能程序的转移指令。
8051微控制器中用JMP @A+DPTR指令实现程序散转,它是一条单字节转移指令,转移的目标地址由A中8位无符号数与DPTR的16位数内容之和来确定,DPTR内容为基址,A的内容为变址。
实验一;1、把R1中内容传送至R0中org 0000hmov r1,#22hmov a,r1mov r0,a;2、把内部数据存储器20H单元中的内容传送至内部数据存储器30H单元中mov 20h,#33hmov 30h,20h;3、把外部数据存储器20H单元中的内容传送至内部数据存储器20H单元中mov dptr,#20hmov a,#66hmovx @dptr,aclr amovx a,@dptrmov 20h,a;4、把外部数据存储器20H单元中的内容传送至内部数据存储器20H单元中mov dptr,#2000hmovx @dptr,aclr amovx a,@dptrmov 20h,a;5、把外部程序存储器2000H单元中的内容传送至内部数据存储器20H单元中mov dptr,#2000hclr amovc a,@a+dptrmov 20h,asjmp $org 2000htab: db 88hend6.把外部数据存储器2050H单元、2060H单元中的内容相互交换。
mov dptr,#2050hmov a,#55hmovx @dptr,amov dptr,#2060hmov a,#66hmovx @dptr,aclr amovx a,@dptrpush accmov dptr,#2050hmovx a,@dptrmov dptr,#2060hmovx @dptr,apop accmov dptr,#2050hmovx @dptr,a;8、应用MOVC A,@A+dptr指令求累加器A的平方值Y(设Y<=255),并把结果送至R7中保存。
org 0000hljmp mainorg 0030hmain: mov a,#3h ;查3的平方值mov dptr,#tab ;指向平方表的表头movc a,@a+dptr ;查表指令sjmp $tab:db 0,1,4,9,16,25,36,47,64,81,100,121,144,169,196,255;平方表end;实验二;1、将(R2R3)和(R4R5)中的双字节无符号数相加,结果存放在40H和41H单元中。
前言随着社会的进步,人们的发展水平逐渐提高,单片机技术已经成为我们生活的一部分。
随着时代的发展,单片机已经为现代人工作、科研、生活、提供更好的更方便的设施,一切都已向着数字化控制,智能化控制方向发展。
通过本次的实习,使我们进一步的理解了我们学到的理论知识,巩固和深化了单片机的基本认识,提高了单片机应用技术的实践操作技能,掌握单片机的应用系统设计的一般方法。
本次实习培养我们利用单片机进行科研技术革新,开发和创新的基本能力,为毕业从事与单片机有关的事业打下了一定的基础。
本次设计的总体就是利用Protuse软件以及keil软件进行基础的认识,学会对单片机系统的设计及仿真,并能学会自主对单片机进行设计和仿真。
本次实习主要进行了两个设计并对其进行了扩展:单片机控制步进电动机以及数字温度计设计。
虽然仅仅是两个基本设计,但从中我们也获益无穷,正说为只有基础稳定,我们才能站的更高,看的更远,学到跟多的知识。
本人水平有限,编写过程中难免有错误之处,希望老师能给与批评指导。
一实习中常用软件1.Proteus 7 Professional软件Proteus软件是英国Labcenter electronics公司出版的EDA工具软件。
它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。
Proteus是世界上著名的EDA 工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB 设计,真正实现了从概念到产品的完整设计。
是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年即将增加Cortex和DSP系列处理器,并持续增加其他系列处理器模型。
在编译方面,它也支持IAR、Keil和MPLAB 等多种编译器。
2.1Proteus 7 Professional基本概念2.1.1 功能特点Proteus软件具有其它EDA工具软件的功能。
《单片机应用技术》习题答案第一章1-1选择1.计算机中最常用的字符信息编码是( A )A ASCIIB BCD码C 余3码D 循环码2.要MCS-51系统中,若晶振频率屡8MHz,一个机器周期等于(A ) μsA 1.5B 3 C3.MCS-51的时钟最高频率是( A ).A 12MHzB 6 MHzC 8 MHzD 10 MHz4.以下不是构成的控制器部件(D ):A 程序计数器、B指令寄存器、C指令译码器、D存储器5.以下不是构成单片机的部件(D )A 微处理器(CPU)、B存储器C接口适配器(I\O接口电路) D 打印机6.下列不是单片机总线是(D )A 地址总线B 控制总线C 数据总线D 输出总线7.-49D的二进制补码为.( B )A 11101111B 11101101C 0001000D 111011008.十进制29的二进制表示为原码(C )A 11100010B 10101111C 00011101D 000011119. 十进制0.625转换成二进制数是( A )A 0.101B 0.111 C10 选出不是计算机中常作的码制是( D )A 原码B 反码C补码 D ASCII1-2填空题原码、反码和补码000111013.十进制数-29的8位补码表示为.11100011CPU、存储器和I\O接口三部分组成.EA必须接地.6.输入输出设备是计算机与外部世界交换信息的载体..110100018.-49D的二进制补码为.11101101ASCII10.计算机中的数称为机器数,它的实际值叫真值。
1-3判断题1.我们所说的计算机实质上是计算机的硬件系统与软件系统的总称。
(√)2.MCS-51上电复位时,SBUF=00H。
(×)。
SBUF不定。
3.使用可编程接口必须处始化。
(√)。
4.8155的复位引脚可与89C51的复位引脚直接相连。
(√)5.MCS-51是微处理器。
(×)不是。
单片机课程设计60秒倒计时前言在生活和生产的各领域中,凡是有自动控制要求的地方都会有单片机的身影出现;从简单到复杂,从空中、地面到地下,凡是能想像到的地方几乎都有使用单片的需求。
现在尽管单片机的应用已经很普遍了,但仍有许多可以用单片机控制而尚未实现的项目,因此,单片机的应用大有想像和拓展空间。
单片机的应用有利于产品的小型化、多功能化和智能化,有助于提高劳动效率,减轻劳动强度,提高产品质量,改善劳动环境,减少能源和材料消耗,保证安全等。
但是,单片机应用的意义绝不仅限于它的广阔范围以及所带来的经济效益上,更重要的意义还在于:单片机的应用正从根本上改变着传统的控制系统设计思想和设计方法。
从前必须有模拟电路或数字电路实现的大部分功能,现在已能使用单片机通过软件(编程序)方法实现了。
这种以软件取代硬件并提高系统性能的控制系统“软化”技术,称之为微控制技术。
微控制技术是一种全新的概念,是对传统控制技术的一次革命。
随着单片机应用的推广普及,微控制技术必将不断发展、日益完善和更加充实。
近年来随着计算机在社会领域的渗透, 单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。
在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。
模拟多通道压力系统是利用压力传感器采集当前压力并反映在显示器上,它可以分析压力过量程,并发出报警。
并采用电子秤原理可根据输入单价准确的计算出物体的金额。
本篇论文讨论了简单的倒计时器的设计与制作,对于倒计时器中的四位LED数码显示器来说,我为了简化线路、降低成本,采用以软件为主的接口方法,即不使用专门的硬件译码器,而采用软件程序进行译码。
第一章方案论证1.1课程设计的目的和要求1.目的课程设计是单片机课程教学的最后一个环节,是对学生进行全面的系统的训练。
进行课程设计可以让学生把学过的比较零碎的知识系统化,真正的能够把学过的知识落到实处,能够开发简单的系统,也进一步激发了学生再深一步学习的热情,因此课程设计是必不可少的,是非常必要的。
软件实验报告软件实验一一、实验目的1.熟悉软件实验的基本步骤和汇编程序的调试方法;2.了解内存块的移动方法;3.了解将十六进制数转换成ASCII值的方法。
二、实验原理用MOV和MOVX指令可以进行数据的赋值和移动,用循环可以完成大量数据的复制。
三、实验内容及步骤1、软件设置为模拟调试状态,在所建的Project文件中添加例程1的源程序进行编译,编译无误后,可以选择单步或跟踪执行方式或全速运行程序。
打开CPU窗口,观察CPU窗口各寄存器的变化。
打开View菜单中的Memory Window,可以观察内部RAM、外部RAM的数据和程序存储器中的程序。
在Address窗口输入X:8000H后回车,观察8000H-800FF起始的256个字节单元的内容。
2、新建一个Project文件,添加例程2的源程序进行编译,编译无误后,可以选择单步或跟踪执行方式或全速运行程序。
打开View菜单中的Memory Window,在Address 窗口的Memory#1输入X:3000H后回车,点击运行按钮后, 在Memory#2输入X:4000H后回车,观察外部RAM3000H和4000H中的内容。
3、添加将片内30H-3FH单元的内容复制片外片外1030H~103FH中的源程序,编译运行,观察比较30-3FH单元中的内容和片外1030H-103FH中的内容。
4、添加将30H、31H单元中的十六进制数,转换成ASCII码,存放到40H开始的4个单元中的源程序,编译运行,观察结果。
5、添加求内部RAM 30H—37H单元中8个无符号数的算术和的源程序,8个无符号数设定为25H,36H,4AH,65H,7FH,82H,9BH,1DH,观察39H,38H中的数字是否分别为02H,C3H。
四、实验结果1.步骤1的结果为8000H-80FFH的内容都为1.2.步骤2的结果为3000H起始的256个字节存储块与4000H起始的256个字节存储块各单元内数据对应相同。
查表程序设计例题(MOVC A,@A+DPTR; MOVC A,@A+PC)的应用西电出版社张毅坤《单片微型计算机原理与应用》P95~98例6:设有一巡检报警装置,需要对16路值进行比较,当每一路输入值超过该路的报警值时,实现报警。
要求编制一个查表子程序,依据路数Xi,查表得Yi的报警值。
解:Xi为路数,查表时按照O,1,2,…,15取值,故为单字节规则量。
表格依Xi顺序列表,仅存二字节报警值Yi,其表格构造见表3—4。
程序入口:(R2)=路数Xi。
程序出口:(R4 R3)=对应Xi的报警值Yi。
查表子程序如下:STAl:MOV A, R2 ;路数xi送ARL A ; Xi×2MOV R4, A ;暂存ADD A,#TABL(rel) ;加上表首偏移量MOVC A,@A+Pc ;查Yi第一字节 XCH A,R4 ;第一字节送R4ADD A,#TABL(rel)+1 ;形成第=字节表址MOVC A,@A+Pc ;取Yi第二字节MOV R3, A ;第二字节送R3RETTAB2:DW 050FH,OE89H,A695H,1EAAH ;报警值表 DW 0D9BH,7F93H,0373H,26D7HDW 2710H,9E3FH,1A66H,22E3HDW 1174H,16EFH,33E4H, 6CAOH上述查表程序中使用RL A使(A)乘2,这是由于DW定义的是双字节空间,为了保证指向正确的查表地址,所以要进行乘2处理。
另外,程序中使用MOVC A,@A+PC指令,使表格偏移不得超过255个字节。
当表格偏移大于255个字节时,应使用MOVC A,@A+DPTR查表指令。
例7:自变量xi为双字节规则量,函数值yi也为双字节数,对应xi依次存于表首地址为#TABL的表格中。
表格构造见表3—5。
编制一个查表程序,将查得的函数值yi存入R4、R3中。
解:入口:(R3R2)=由其它程序得到的xi规则量,即:xi=0000H,O0OlH,0002H,…出口:(R5 R4)=依据xi查得的函数值yi。
实验二 I/O口输入、输出实验一、实验目的1. 学习I/O口的使用方法。
2. 学习延时子程序、查表程序的编写和使用。
二、参考程序框图三、程序设计1、P0口循环点亮程序 ORG 0030HSTART : MOV P2,#00H; //消影 MOV A ,#01H; // LOOP : MOV P2 ,A; //点亮一个led 灯ACALL DELAY; //延时500ms RL A; //左移一位 AJMP LOOP; //跳转循环DELAY : MOV R7,#10; //延时程序 DE1 : MOV R6,#200; DE2 : MOV R5,#123; DJNZ R5,$; DJNZ R6,DE2; DJNZ R7,DE1; RET END2、I/O口输入输出(方法一)ORG 0000H;START : MOV P2,#00H; //初始化 MOV P0,#00H;MOV P1,#0FFH; //p1口初始化给ffh 值 MOV DPTR,#TABLE; //表地址存入DPTR MOV 50H,#0FEH; //比较初值载入地址50h L0 :MOV A,P1; //按键消抖 CJNE A,#0FFH,L1; AJMP L0; L1 :MOV A,P1;CJNE A,#0FFH,LL1; AJMP L0;LL1 :CJNE A,50H,LL2; //是否与地址50h 中数据相等 MOV P0,A; //相等输出对应led 灯 MOV A,#00H; MOVC A,@A+DPTR;MOV P2,A; //输出表格数据到数码管 LCALL DELAY; //延时LJMP START; //返回程序开头 LL2 :XCH A,50H; //交换数据 RL A; //左移XCH A,50H; //再次交换,此时地址50h 中数据左移一位 INC DPTR; //表格数据地址加一 LJMP LL1; //返回继续比较DELAY : MOV R7,#01H; //延时程序 DE1 : MOV R6,#28H; DE2 : MOVR5,#5AH; DJNZ R5,$;DJNZ R7,DE1; RETTABLE : ;//DB 0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H;DB 06H,5BH,4FH,66H,6DH,7DH,07H,7FH; //表格数据 END程序二(方法二)ORG 0000HMOV P2,#00H; //I./O口初始化 MOV P1,#0FFH; //P1口赋FFH 初值 MOVP0,#00H;START : MOV P2,#00H; //P2清0; MOV P0,#00H; //P0清0; MOV R1 ,P1;MOV A,R1; //读P1口CJNE A,#0FFH,L1; //是否有数据输入AJMP START; //无输入则跳转,继续查询 LCALL DELAY;L1 : MOV R1,P1; //消除按键抖动 MOV A,R1;CJNE A, #0FFH,LL1; AJMP START;LL1 : CJNE A,#0FEH,LL2; //是否按键1输入MOV P2,#06H; //是则P2输出相应的按键号码 CPL A; //A取反MOV P0,A; //输出到P0口 LCALL DELAY; //延迟AJMP LP; //跳转到LPLL2 : CJNE A,#0FDH,LL3; //是否按键2输入 MOV P2,#5BH; //以下同上 CPL A; MOV P0,A;LCALL DELAY; AJMP LP;LL3 : CJNE A,#0FBH,LL4; //判断按键3是否按下 MOV P2,#4FH; CPL A; MOV P0,A;LCALL DELAY; AJMP LP;LL4 : CJNE A,#0F7H,LL5; //判断按键4是否按下CPL A; MOV P0,A;LCALL DELAY; AJMP LP;LL5 : CJNE A,#0EFH,LL6; //判断按键5是否按下 MOV P2,#6DH; CPL A; MOV P0,A;LCALL DELAY; AJMP LP;LL6 : CJNE A,#0DFH,LL7; //判断按键6是否按下 MOV P2,#7DH; CPL A; MOV P0,A;LCALL DELAY; AJMP LP;LL7 : CJNE A,#0BFH,LL8; //判断按键7是否按下 MOV P2,#07H; CPL A; MOV P0,A;LCALL DELAY; AJMP LP;LL8 : CJNE A,#7FH,LP; //判断按键8是否按下 MOV P2,#7FH; CPL A; MOVP0,A;LCALL DELAY;LP : AJMP START; //跳转回程序开头 DELAY : MOV R7,#01H; //延时程序DE1 : MOV R6,#28H; DE2 : MOV R5,#5AH; DJNZ R5,$; DJNZ R6,DE2; DJNZR7,DE1; RET END四、思考题1、LED 循环方向更改:RL A; 改成 RR A;1S 的延时程序: DELAY : MOV R7,#20; //延时程序DE1 : MOV R6,#200; DE2 : MOV R5,#123;DJNZ R5,$;DJNZ R6,DE2;DJNZ R7,DE1; RET 2、提高电阻阻值3、一般为5V 或者3.3V 。
单片机实验实训实验报告班级:10计科A1 学号:20123430074 姓名:贾强强第一章Keil教程1.源文件的建立1)启动uVision后,File->New,打开一个新的文本编辑窗口,在窗口中输入汇编语言程序2)保存文件,扩展名一般用asm或a51.例如:exam1.asm2. 建立工程文件1)点击Project->NewProject,出现对话框,输入工程名。
点击保存。
随后出现第二个对话框,选择CPU(这里选89C51),然后确定2)工程详细设置点击Project窗口中的Target1(Project->Optionfortarget’target1’)出现对话框,后面大部分页面默认就行3.编译、连接1)将源文件加入到工程2)选择菜单Project->Build target3) 进入下一步调试第二章文件的下载操作1. 运行环境:FLIP2.4.62. 实验步骤:1)选择芯片选择“Select device->AT89C51RC2”2) 选择要烧写的文件单击Load HEX File,在对话框中选择要烧写的HEX文件3)通信设置单击“Set Communication->RS232/com1/9600波特“后单击Connect 4)下载烧写文件单片机与PC连通后单击Run5)运行a.下载成功后,单击Start applicationb.拔掉w1短接调线,然后执行reset重启操作4.1实验1 Keil及FLIP的使用实验目的:熟悉Keil2单片机开发软件的使用方法;熟悉在系统编程下软件FLIP的使用方法,同时利用Keil环境测试汇编语言指令实验要求:测试如下指令MOV A,R0;MOV A ,50HMOV A,@R0MOV A,#20H实验步骤:(1)在C盘根目录创建test1的文件夹(2)创建工程,名为:test1,放于test1文件夹中(3)创建源文件,名为:test1.asm,内容如下(4)将test1.asm加入工程,编译(5)如有错误进行修改(6)调试(单击debug菜单下的start/stop debuge session,并进行单步跟踪,注意咯寄存器及内存单元变化)实验程序:ORG 0000HMOV R0,#30H MOV 50H,#3AH MOV A,R0 MOV A,@R0 MOV A,20H MOV @R0,A END4.2. 实验2 基本I/O引脚信号的控制1.实验目的:熟练掌握对基本I/O口的控制方法,通过编写循环和延时程序控制P1口引脚信号电平的高低,从而实现相对应LED灯的亮灭2.实验要求:LED灯的亮灭时间为1秒,并伴随有你蜂鸣器1秒间隔的“嘀”声3.实验电路(略)(1)延时程序设计方法a)原理介绍:MOV R6 ,#200 1D1:MOV R7,#228 1DJNZ R7,$ 2*248NOP 1DJNZ R6,D1 2总延迟机器周期为:2+(2+2*228+2+1)*200=92220总延迟时间为:92220*1.085=100057b)延时子程序:DELAY: MOV R5,#10MOV R6,#200MOV R7,#228DJNZ R7,$DJNZ R6,D2DJNZ R5,D1RET (2)输出控制P1.0=1时,灯亮P2.7=0时,蜂鸣器响5.程序框图:6.汇编源程序:ORG 0000HSTART: CLR P1.0CLR P2.7LCALL DELAYSETB P1.0SETB P2.7LCALL DELAYLJMP START DELAY: MOV R5,#10 D1: MOV R6,#200 D2: MOV R7,#248 DJNZ R7,$DJNZ R6,D2DJNZ R5,D1RETEND4.3 实验3 基本分支与循环程序设计实验目的:掌握基本分支与循环程序设计方法实验要求:(1)有一变量在片内RAM的20H单元。
实验二分支程序,查表程序编写实验一、实验目的1.掌握跳转指令2.掌握子程序调用指令3.掌握查表程序运用二、实验设备单片机IDE集成开发软件三、实验要求验证“实验原理”一节中给出的实例程序,熟悉各种跳转指令、子程序调用指令,以及查表程序编写方法。
四、实验原理作为软件实验,可以在没有硬件及仿真仪的情况下,利用集成开发环境进行。
1.跳转指令控制转移的指令包括无条件转移指令和有条件跳转指令。
(1)长跳转指令LJMP addr16长跳转,把16位(2个字节)的地址送入PC中。
〔2〕绝对转移指令AJMP addr11在存储空间2kB内转移。
与PC当前值高5位共同组成16位目标地址。
(3)短跳转指令SJMP rel8位补码表示的地址。
可以在-128到127之间跳转。
(4)间接跳转指令JMP @A+DPTR这是一条很有用的散转指令。
跳转地址在程序运行时动态决定。
(5)累加器判零转移指令JZ rel,JNZ rel,JZ rel,累加器为0转移,JNZ rel,累加器不为0转移。
(6)比较转移指令,CJNE <目的字节>,<源字节>,rel。
CJNE A,#data,relCJNE A,direct,relCJNE @Ri,#data,relCJNE Rn,#data,rel(8)循环转移指令DJNZ Rn,rel。
首先Rn减1,然后判断是否是零,不是则跳转。
DJNZ direct , rel。
首先直接地址中的数据减1,然后判断是否是零,不是则跳转。
(9)位控制转移指令JC rel,若Cy=1,则(PC)<--(PC)+2+rel若Cy=0,则(PC)<--(PC)+2JNC rel若Cy=0,则(PC)<--(PC)+2+rel若Cy=1,则(PC)<--(PC)+2JB bit,rel; 若(bit)=1,则(PC)<--(PC)+3+rel若(bit)=0,则(PC)<--(PC)+3JNB bit,rel若(bit)=0,则(PC)<--(PC)+3+rel若(bit)=1,则(PC)<--(PC)+3JBC bit,rel; 若(bit)=1,则(PC)<--(PC)+3若(bit)=0,则(PC)<--(PC)+3+rel,(bit)←02.子程序调用和返回指令。
单⽚机查表指令单⽚机具有两条查表指令,⽤于从 ROM 中读出预存的数据: MOVC A, @A + PC MOVC A, @A + DPTR 其中前⼀条指令的⽤法,⽐较难,使⽤的时候,需要计算⼀个“偏移量”。
不了解“指令的字节数”的⼈,都不清楚应该如何计算。
第⼀条指令 第⼀条指令中,Rn代表的是R0-R7。
第⼆条指令中,direct就是指的直接地址,⽽第三条指令中,就是我们刚才讲过的。
第四条指令是将⽴即数data送到A中。
下⾯我们通过⼀些例⼦加以说明: MOV A,R1 ;将⼯作寄存器R1中的值送⼊A,R1中的值保持不变。
MOV A,30H ;将内存30H单元中的值送⼊A,30H单元中的值保持不变。
MOV A,@R1 ;先看R1中是什么值,把这个值作为地址,并将这个地址单元中的值送⼊A中。
如执⾏命令前R1中的值为20H,则是将20H单元中的值送 ⼊A中。
MOV A,#34H ;将⽴即数34H送⼊A中,执⾏完本条指令后,A中的值是34H。
以寄存器Rn为⽬的操作的指令 MOV Rn,A MOV Rn,direct MOV Rn,#data 这组指令功能是把源地址单元中的内容送⼊⼯作寄存器,源操作数不变。
以直接地址为⽬的操作数的指令 MOV direct,A 例: MOV 20H,A MOV direct,Rn MOV 20H,R1 MOV direct1,direct2 MOV 20H,30H MOV direct,@Ri MOV 20H,@R1 MOV direct,#data MOV 20H,#34H 以间接地址为⽬的操作数的指令 MOV @Ri,A 例:MOV @R0,A MOV @Ri,direct MOV @R1,20H MOV @Ri,#data MOV @R0,#34H ⼗六位数的传递指令 MOV DPTR,#data16 8051是⼀种8位机,这是唯⼀的⼀条16位⽴即数传递指令,其功能是将⼀个16位的⽴即数送⼊DPTR中去。
篮球赛计时计分器设计院系自动化学院专业自动化班级学号姓名指导教师负责教师摘要体育比赛中的计时计分系统是对体育比赛过程中所产生的时间、比分等数据信息进行快速采集、加工处理、传递和利用的系统。
此系统能否清晰、稳定、精确的反应体育比赛中的客观数据,直接影响到比赛的公平性和公正性。
本文针对上述情况研制了篮球赛计时计分器。
该系统以单片机为核心,利用7段共阴LED作为显示器件。
为了调整比赛中的时间和比分,在本设计中设立了8个按键,分别用于记录甲、乙两队的分数,设置赛程时间,调整赛程时间,启动和暂停赛程时间等功能,本系统还设计了定时报警系统。
实践证明,该系统精度高、稳定性好、抗干扰性强,具有一定的应用前景。
关键词:计时器;计分器;单片机;LED显示AbstractThe system of time and score recorded in the sporting games is the one like this: the data about time and socres that generated in the process of the games can be collected rapidly, processed, transmited and be used. If the system can reflect the objective data in the games clearly, stably and accurately, it will affect the fairness and impartiality of the games. According to this, calculagraph and scores recorder of the basketball games are researched and designed in this paper. The core of the system is the MCU, using seven segments LED as the display. In order to adjusting the time and the scores of the game, eight keys are used in this paper. The functions of these keys are: recording the scores of the team A and B, setting up or adjusting the time of the game, and starting or suspending the time of the game. The timing alarm system is also designed in the system. Experiments has proved that the system has high precision, good stability, strong anti-interference and it have a application prospects.Key words: calculagraph;scores recorder; MCU; LED display目录第1章绪论 (1)1.1 课题背景 (1)1.1.1 篮球赛计时计分器发展过程 (2)1.1.2 篮球赛计时计分器研究目的与意义 (2)1.2 课题任务及要求 (3)1.3 课题内容及安排 (3)第2章篮球赛计时计分器的总体方案论证 (4)2.1 篮球赛计时计分器的硬件方案论证 (4)2.2 篮球赛计时计分器的软件方案论证 (5)2.3 篮球赛计时计分器部分器件方案论证 (6)2.3.1 硬件译码与软件译码的比较 (6)2.3.2 CD4511与MC14495的比较 (8)第3章篮球赛计时计分器的硬件设计 (11)3.1 球赛计时计分器的工作原理 (11)3.2 计时电路的设计 (11)3.2.1 计时电路的工作原理 (12)3.2.2 赛程时间设置 (13)3.2.3 赛程时间启/停设置 (14)3.3 计分电路的设计 (14)3.3.1 计分电路的工作原理 (14)3.3.2 比分交换控制的实现 (14)3.3.3 比分刷新控制器 (14)3.3.4 比分校正控制电路 (16)3.4 报警电路设计 (16)3.5 单片机的选择 (17)3.6 显示电路的设计 (18)3.7 复位电路的设计 (20)第4章篮球赛计时计分器的软件设计 (22)4.1 监控程序设计 (22)4.2 计时显示子程序设计 (23)4.3 计分显示子程序设计 (25)4.4 LED显示子程序设计 (27)第5章篮球赛计时计分器的整体调试 (29)5.1 调试分析 (29)5.2 故障调试及解决方式 (30)5.3 联调结果 (32)结论 (35)社会经济效益分析 (37)参考文献 (38)致谢 (40)附录Ⅰ篮球赛计时计分器的硬件原理图 (41)附录Ⅱ程序清单 (42)附录Ⅲ元器件清单 (565)第1章绪论在我们生活的大千世界上,人类已进入了科学技术空前发展的信息社会。
实验二排序查表程序设计【实验目的】熟悉51指令系统,掌握汇编语言编程方法。
【实验内容】5名学生的语文数学成绩如表2.1所示。
表2.1 学生成绩单按表2.1中每个学生成绩定义的数据表如下,其中数据为方便查看用BCD码表示:TAB:DB 78H,95H,88H,85H,65H,89H,91H,99H,56H,75H1.编程实现将5名同学的语文成绩依次存到30H~34H单元,数学成绩存到40H~44H单元;2.用冒泡法编程实现将30H~34H中的语文成绩按从大到小排序。
【实验原理与设计】1.查表指令(1)MOVC A,@A+PC是以当前PC值作为基址,再加上偏移量A作为查表指针,而其中的PC值是指向查表指令的下一条指令的地址(即MOVC A, @A+PC后一条指令机器码所存的ROM单元地址),偏移量A由两部分组成,一部分是PC距表头的距离,另一部分是所查数据与表头的距离。
(2)MOVC A, @A+DPTR是以DPTR作为基址,再加上偏移量A作为查表指针,而DPTR直接指向表头地址,偏移量A只有所查数据到表头距离这一部分,相比较以PC值作为基址简单些较常用。
2.冒泡法数据排序具体实现过程是:建立标志位,先令标志位为0,从低址到高址进行扫视,将数据两两比较,发现数据逆序则进行交换,并将标志位置1。
如果数据总数为N,则一轮扫视要将数据两两比较N-1次,就会把最大的数(或最小的数)换到最后,即为一次冒泡。
每轮扫视结束,若标志位为1,则开始新一轮扫视,直到最后一轮扫视标志位为0时停止,说明排序已完成。
3.程序参考流程图(1)根据实验内容1要求,查表用MOVC A, @A+DPTR指令,其参考程序流程图如图2.1所示。
图2.1 查表程序流程图图2.1中每次偏移量加1时要注意保持其基本量不变,也就是如果偏移量存在累加器A中,当执行完查表指令后A中的数据时所查到的数据不再是偏移量,所以要设定一寄存器将每次查表前A中的偏移量存储一下,以便查下一个数据时调用。