- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
单片机原理与应用第一次作业
学号:_______ 姓名:_______
目录
一、题目
二、软件
三、硬件
一、题目
§题目:广告灯控制系统
§内容:做宣传广告时,为了使广告内容醒目,引人注意,往往用灯光闪烁或明暗对比等手段。设有8个广告字,每次亮一个字,亮10ms,依次左移,然后依次右移,循环不止。
§要求:以LED发光二极管代替广告字,程序延时。
§硬件:画出硬件电路原理图,考虑LED的驱动问题。
§软件:画出程序流程图,编写源程序。
§调试:记录调试过程,分析调试结果。
二、软件
1.源程序:
ORG 0000H ;定义起始地址
MOV A, ;将二进制立即放到累加器A中
LJMP START ;长转移到START函数
ORG 0100H ;定义START函数的起始地址
START: MOV R0,#7 ;将十进制立即数7放到寄存器R0中
MOV R1,#7 ;将十进制立即数7放到寄存器R1中
LEFT: MOV P1,A ;将A中的内容送到P1口,只有P1.7为低电平,该处二极管被点亮
LCALL DEL10ms ;延时10ms
RR A ;将A中的内容右移一位,相应地,低电平所处位置左移一位
DEC R0 ;将R0中的内容减1
CJNE R0,#0,LEFT ;判断R0是否为0,若不是则转移到LEFT函数起始位置,若是则程序顺序执行
RIGHT: MOV P1,A ;将A中的内容送到P1口,此时只有P1.0为低电平,该处二极管被点亮
LCALL DEL10ms ;延时10ms
RL A ;将A中的内容左移一位,相应地,低电平所处位置右移一位
DEC R1 ;将R1中的内容减1
CJNE R1,#0,RIGHT ;判断R1是否为0,若不是则转移到RIGHT函数起始位置,若是则程序顺序执行
LJMP START ;长转移到START函数
DEL10ms: MOV R7,#25 ;将十进制立即数25放到寄存器R7中
DEL1: MOV R6,#200 ;将十进制立即数200放到寄存器R6中
DEL2: DJNZ R6,DEL2 ;将R6中的内容减1,判断R6是否为0,若否则转移到DEL2函数起始位置,否则程序顺序执行
DJNZ R7,DEL1 ;将R7中的内容减1,判断R7是否为0,若否则转移到DEL1函数起始位置,否则程序顺序执行
RET ;返回到调用DEL10ms函数的语句的下一条语句
END ;程序结束的标志,因为上述程序中有死循环,所以目标程序执行不到这一步
注:上述程序已用Proteus 7.8中调试过,能满足题目要求。调试方法为设置执行指定时间分别为10ms,20ms,30ms等整十毫秒,看执行完毕后发光的那个二极管符不符合预期。
收获:
(1)其实此次作业若在上完第四单元后布置会更好,因为第三章只教了一些指令,第四章教的才是单片机汇编语言程序设计,不过提前布置可以督促大家预习第四单元。
(2)写程序的过程中,我深切的感受到了汇编语言指令中的标号带来的便利,其功能实际上与C语言的函数名相同,是为了方便调用或转移。
(3)51单片机所有I/O口上电之后全部默认为高电平,想让某一发光二极管发光,就要用程序来使其一端为高电平,另一端为低电平。
(4)上述程序中延时10ms的延时程序是由教材第65面例4-14的延时50ms的延时程序改编而来,我在照搬书上的延时程序,并下载到单片机中或用Proteus 7.8进行仿真时发现只有最右边的二极管发光。认真研究后知道SJMP $其实就是HERE;SJMP HERE的意思,是一
文档评论(0)