单片机报告分支与循环程序设计实验.docVIP

  • 251
  • 0
  • 约5.38千字
  • 约 18页
  • 2016-10-21 发布于陕西
  • 举报

单片机报告分支与循环程序设计实验.doc

一、任务要求 实验目的:熟练掌握Keil环境下汇编语言程序的调试方法,加深对汇编语言指令、机器码、寻址方式等基本内容的理解,掌握分支程序和简单程序的设计与调试方法,了解并行IO口的使用。 实验内容: 1. 设有8bits符号数X存于外部RAM单元,按以下方式计算后的结果Y也存于外部RAM单元,请按要求编写程序。 2. 利用51系列单片机设计一个24小时制电子时钟,电子时钟的时、分、秒数值分别通过P0、P1、P2端口输出(以压缩BCD码的形式)。P3.0为低电平时开始计时,为高电平时停止计时。设计1s延时子程序(延时误差小于10us,晶振频率12MHz)。 提高部分选做 a. 实现4位十进制加、减1计数,千位、百位由P1口输出;十位、个位由P2口输出。利用P3.7状态选择加、减计数方式。 b. 利用P3口低四位状态控制开始和停止计数,控制方式自定。 二、设计思路 实验一 X存于片外 0070H单元先对 数,则用CJNE语句判断其与14H、28H的大小,若小于14H,取反;若小于28H,大于 14H,则除2,;若大于28H,则平方。若大于28H,其结果低四位存在片外RAM 0071H 单元高四位存在 单元,余数存在0072单元;若小于14H,其结果存于片外RAM 0071单元,片外RAM 0072 单元置零。 实验二: 先判断 设计一延时1s的程序,每满1s,秒数值加一,每满60s,分数值加一,每满60min, 时数值加一。时数值满24时,重新计数。电子时钟的时、分、秒数值分别通过P0、P1、 P2端口输出(以压缩BCD码的形式)。 实验三提高部分 此处使3口低四位全为一时开始计数3.7的状态,此处使若P3.7为0 时进行加计数,先C清零,用ADD对P2加一,再用ADDC对P1加进位位,再用DA A对 码修正。特别是当P2为00H时,将P2赋值99H,再将P1减一,而当P1为00H时,将 P1赋值99H即可。 三、资源分配 实验一: 数据 对 0071H单元高四位存在 单元;若小于28H,大于14H,其结果的商存于片外RAM 0071单元,余数存在0072 单元;若小于14H,其结果存于片外RAM 0071单元,片外RAM 0072单元置零。 实验二: 时钟时分秒分别存放于 寄存器R1、R2、R3存放1s延时程序的循环次数。 累加器缓存 P3作为控制位 P1口显示千百位 四、流程图 实验一: 实验二 实验三(提高实验): 五、源代码 (含文件头说明、语句行注释) 实验一 File name: 实验一 Description: 8bits符号数X存于片外0700H,当X=40时,取平方,高位存于片外 RAM 0701H,低位存于片外0702中;当20X40时,X除二,结果的商存于片外RAM 0701H 中单元,余数存在0702H单元中;当X=20时,对X取反,结果存于片外RAM 0701H 中,0702H单元清零。 Date: 2014.10.18 Designed by: 曹紫葳 Source used: 0700H:片外RAM存储的数X 0701H:平方结果的平方的低八位,除2结果的商,取反结果; 0702H:平方结果的高八位,除2结果的余数。 ORG 0000H AJMP MAIN ORG 0100H MAIN: CLR A ;累加器 CLR C ;进位位清零 MOV DPTR,#0700H 将 MOVX A,@DPTR JB ACC.7,STEP1 CJNE A,#14H,ON1 ;判断 STEP1: CPL A ;若 MOV B,#0H AJMP DONE ON1: JC STEP1 CJNE A,#28H,ON2 ;判断 STEP2: MOV B,A MUL AB ;若A大于40,取A的平方 AJMP DONE ON2: JNC STEP2 MOV B,#2 DIV AB ;若A小于40大于20,取 DONE: INC DPTR MOVX @DPTR,A INC DPTR MOV A,B ;将结果的低八位赋值给片外701单元 MOVX @DPTR,A ;将结果的

文档评论(0)

1亿VIP精品文档

相关文档