- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[单片机程序流程图及源代码
单片机上机实验报告【实验一】 端口实验,掌握通过端口编程实现数据输出和输入的方法,并观察结果。实验内容:1)输出实验:假定4个端口全部连接发光二极管,编程实现所有发光二极管同时亮,延迟一定时间(自定)后,又同时灭,如此循环。2)输入:从P0口输入某个数据到累加器A,打开观察窗口观察数据是否进入累加器A。实现方式:通过peripherals实现端口数据观察实验。程序流程图:将P0到P3端口先赋值为0,调用延迟后,再赋1,然后循环执行。源代码:ORG 0000H ;程序入口地址LJMP MAIN ;跳转到主程序ORG 0300H ;主程序地址MAIN:MOV P0,#00H;MOV P1 ,#00H;MOV P2 ,#00H;MOV P3 ,#00H ;P0~P3均赋值为0ACALL DEL;调用延迟MOV P0 ,#0FFH;MOV P1 ,#0FFH;MOV P2 ,#0FFH;MOV P3 ,#0FFH;P0~P3均设为1MOV A,P0;将P0口值赋给累加器ACALL DEL;AJMP MAIN;跳转到主程序入口ORG 0200H; 延迟程序入口地址DEL:MOV R5,#04H;寄存器实现延迟,F3:MOV R6,#0FFH;若主频为12MHZ则F2:MOV R7,#0FFH;延时为256*256*4F1:DJNZ R7,F1; 0.26S,人眼可分辨DJNZ R6,F2;DJNZ R5,F3;RET; 从延迟程序返回END; 结束3.假设P0口外接一个数码管(共阴),如图,请在数码管上轮流显示数字0~9(采用软件延时)。程序流程图: 将数码管的真值编码0~9依次赋给P0并调用延迟,然后循环运行程序即可。源代码:ORG 0000H; 程序入口SJMP MAIN; 跳转到主程序ORG 0300H;主程序入口地址 MAIN:MOV P0,#0FCH; 将数码管0的编码赋给P0口 ACALL DELAY;调用延迟,使数码管亮0持续0.33S MOV P0,#60H; show 1 ACALL DELAY; MOV P0,#0DAH; show 2 ACALL DELAY; MOV P0,#0F2H; show 3 ACALL DELAY; MOV P0,#66H;show 4 ACALL DELAY; MOV P0,#0B6H; show 5 ACALL DELAY; MOVP0,#0BEH; show 6 ACALL DELAY; MOV P0,#0E0H; show 7 ACALL DELAY; MOV P0,#0FEH; show 8 ACALL DELAY; MOV P0,#0F6H; show 9 ACALL DELAY; AJMP LOOP; 跳转到主程序入口ORG 0200H;延迟程序入口DEL:MOV R5,#05H;采用软件延迟,若主频为12MHz,则DEL1:MOV R6,#0FFH;定时时间为256*256*5*1uS=0.33S, DEL2:MOV R7,#0FFH;人眼可分辨。DEL3:DJNZ R7, DEL3;DJNZ R6, DEL2;DJNZ R5, DEL1;RET; 延迟程序返回【实验二】 定时器/计数器及中断实验 实验内容:1、假设P0口外接一个数码管(共阴),如图,请在数码管上轮流显示数字0~9。(采用定时器实现延时并显示数字)。实验流程图:跟实验1.3差不多,只是延迟程序改成用定时器定时,定时器采用查询方式,由于定时器本身所能定时有点短,故采用寄存器进行计数以延长时间,定时器定时50ms,50ms*10=0.5s。源程序:ORG 0000H; AJMP MAIN; 跳入主程序 ORG 0030H;主程序地址MAIN:MOV P0,#0FCH;将1的编码值赋给 ACALL DELAY; P0并调用延迟 MOV P0,#0FCH; ACALL DELAY; MOV P0,#60H; ACALL DELAY; MOV P0,#0DAH; ACALL DELAY; MOV P0,#0F2H; ACALL DELAY; MOV P0,#66H; ACALL DELAY; MOV P0,#0B6H; ACALL DELAY; MOV P0,#0BEH; ACALL DELAY; MOV P0,#0E0H; ACALL DELAY; MOV P0,#0FEH; ACALL DELAY; MOV P0,#0F6H; 依次将1~9的值赋 ACALL DELAY; P0口,并调用延迟 AJMP MAIN; 跳回主程序入口DELAY: MOV R7,#0AH; 寄存器赋值计定时器定时值 AJMP DELAY1;跳转DELAY1:MOV TMOD,#01H 选
文档评论(0)