分支程序设计实验单片机第二次试验_第1页
分支程序设计实验单片机第二次试验_第2页
分支程序设计实验单片机第二次试验_第3页
分支程序设计实验单片机第二次试验_第4页
分支程序设计实验单片机第二次试验_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、分支程序设计实验-单片机第 次试验作者:日期:、任务要求设有8 bits符号数X存于外部RAM单元,按以下方式计算后的结果丫也存于外部RAM单元,请按要求编写程序。X2Y X/2当X 40当 20 X 40当X 20利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别通过P0、P1、P2端口输出(以压缩BCD码的形式)。P3.0为低电平时开始计时,为高电平时停止计时。提高部分(选做):a .实现4位十进制加、减1计数,千位、百位由P1 口输出;十位、个位由P2 口输出。利用P3.7状态选择加、减计数方式。b.禾U用P 3 口低四位状态控制开始和停止计数,控制方式自定。、设

2、计思路?1 .将8 b its符号数从外部RA M单元取出至A中,符号位为1的时候为负数,进行取反运算;当符号位为 0的时候为正数,因此将 A与20进行比较,当A< 20时跳至取反运算那一步;当A>20时将A与40进行比较,如果当A4 0时则对其进行平方运算那一步,当A<40时则进行除法运算那一步。每次算完之后直接储存, 最后再分配储存于外部RA M单元的指定位置。2. 清零R0 R2和P0P2,开始先判断控制位P3. 0是不是0,当P3. 0 =1时原地踏步重复判断,当P 3. 0 = 0时开始运行程序。 计时开始,进行秒钟R 0计数,每次计数完成用BCD码子程序转换,然后

3、判断计数后R0值是否到6 0,若R0的值不足60,就直接输出给P 2,若R0的值为60,就把R0和P 2进行清零后,开始分钟计数部分。同理,每次分钟计数完之后用BCD码子程序转换,然后判断计数后R1的值是否为6 0,若不为60,就直接输出给P1,若R1的值为60,就把R 1和P 1清零后开始时钟计数部分。时钟计数完后同样用BCD码子程序转换,然后判断计数后的 R2的值是否为24,若不为2 4,就直接输出给P 0,若R2为24,就把R 2和P0清零后直接跳出计数部分,从判断P 3. 0部分再开始.每两次计数输出之间穿插一个1s的延时程序。就可以达到时钟的功能。三、资源分配1.分支程序:数据指针

4、D PTR :对片外RAM进行读写操作2000H:存放8bit s符号数X20 1 OH :存放结果丫(取反后的数,或者平方后的高8位,或者除法后的商)2011H:存放结果Y (平方后的低8位,或者除法后的余数)2 .时钟程序:R0、R1、R2 :分别进行秒钟,分钟,时钟的计数P2 、P1、P0:分别输出秒钟,分钟,时钟P3.0:是否计数的控制位R 3、R4 R5:为1s延时程序指定循环次数B : BCD码转换子程序的操作数四、流程图 1? 分支程序流程图:2.时钟程序的流程图:开始©DPTRHSODOH;A-(PTK, B-0NACC.7-Q¥NA/20Y卜IAOYCy=

5、l,朝駅40Y除i疑算BA, AA"B_N平方廷MLCy=O I SPA52OaTA,取反运gDPTRYZBOH)-扎DP1X+M2O11H)B给束五、源代码(含文件头说明、语句行注释)1.分支程序代码如下:LP3:C PL?对x取反S J MPST ORECOMP 1 :C J NEA, #20, CO MP2 ?;AM 20 时,转到C OMP2SJMPLP3;A= 2 0时,转到L P3取反COMP2:JC;C= 1 , A<20,转到 LP3 取反C JNEA, #4 0,C O MP3;C=0, A>2 0 .当 AM 40 时,转到?S JMPSTA R T?

6、STA R T:MOVDPT R, #20 0 0 H?M O VA, # 31?M OVXDPT R,A;存数?MOVB ,0J寄存器B清零MO VXA, DPTf?;从R0中取出数xJ NBACC . 7, C OMP1;判断符号位,符号位为O RG0000HC0MP10时转到COd P3LP1:MO VB, A?;A= 4 0时,给B赋值为 AMULAB?计算x平方S JMPSTORECOM P3:LP1 ?;C=0,A >4 0,转到LP 1计算x平方MOVB ,# 0?C =1 , A <40,赋值 B=2DIV?;计算x除以2S TOR E:M OVD P TR,#20

7、10H?MOVX DP TR,A;存数:?1 NCD P TR;对于平方,高位在前地位在后M OV;对于除法,商在前余数在后?M OVX DP TRA ?SJM PEND2 .时钟程序代码如下:? O R G 00 0 OHSJMP MAI NMA IN:MO V R0,#0;RO, R 1, R2初始化MOV R1, #0MOV R2, #0MOV P0 ,#0;P0,P1,P2 置 0MOV P 1 ,# 0MOVP2, #0I NPUT:JB P3 .0,I INPUT? ?延时程序? DEL A Y:MO V R3,#64 H;循环次数100LOO P :M OV R4, #64 H;

8、循环次数100L OO P1:M OV R 5,#31H;循环次数4 9L00P2: NNO P? DJNZ R 5,LOOP2 ;晶振频率设为23.8 8 36Hz5 0 24 37u sDJNZ R4, LO OP?;(4* 4 9+3)*100+3 : *100 = 1 9 9 0 300 乘以 0.S TARTDJ NZ R3,LO OP差不多1sINCR0;秒钟计数MOV A , R 0ACALL OUTP UT;计算bed码CJNE R0, # 6 0,X2;6 0进制判断进1O V R0 ,#0;进位之后清0M OV P2 ,#0;输出清0分钟计数I NC R1MOV A,R1A

9、CALLOUTPUT;计算bed码CJNER1,#6 0 ,X 1;60进制判断MO VR 1 ,# 0;进位之后清0MO VP 1,# 0;输出清0I NCR2;时钟计数MO VA , R 2;计算b c d码A CAL L OUTPUTC JNE R2,#2 4 , X;判断是不是溢出了MOV R2,#0溢出之后清0MOVP0,#0输出清0SJMPINPU T;跳出循环X 2:MOVP2,;输出S J MPNPUTX 1: MO VP1,ASJMP INPUTX 0 :MOVP 0 ,AS J MPIN PUTOU T PUT:MO V B, # 0AH;BCD码转换程序D IV AB;相

10、除得到高位,低位得到咼位SWAP AO RL A ,BRETS TEP:SJM P S TE PEND六、程序测试方法与结果?实验一:第一次令 A为10H ,进行运算后得到的结果是EFH,即取反成功第二次令A为20H,进行运算后得到的结果是10H,即除以2后的结果因此可以判断程序没有问题实验二:第一次不进行任何操作开始运行程序,程序没有反应第二次将P3. 0改为0后,程序开始运行第三次将P3. 0改为0后再运行程序,经过一段时间后停止,发现此时程序运行的时间为1分4 1秒,即101秒;而实际经过的时间为1 0 0.8589 7秒,两者误差很小,说明程序 设计以及运行正常思考题1.实现多分支结构程序的主要方法有哪些?举例说明。主要方法有:分支地址表如:BRA TAB: DWSUBR)DWSUBR1DWSUBR2转移地址表如:J MP TAB : AJMPS UBR0AJM P S U BR1AJMPSUBR2地址偏移量表女0: DI S TAB:DBSUBR O-DISTABDB SU BR1 -DIST A BDB SUB R3-DIS T AB

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论