打印
[应用方案]

用汇编语言实现单片机的循环灯控制

[复制链接]
1331|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
跟屁虫|  楼主 | 2016-2-29 20:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
                             Protues模拟图:
程序:
 ORG           0000H
         LJMP          MAIN

         ORG           0100H
MAIN:    MOV           SP,#60H
         MOV           A,#01H        ;先让第一个发光二极管亮
LOOP:    MOV           P2,A          ;从P2口输出到发光二极管
         LCALL         DELAY         ;延时1秒
         RL            A             ;左移一位,下一个发光二极管亮
         SJMP          LOOP          ;循环

DELAY:   MOV           R0,#10        ;延时0.5秒子程序,使用参数R0、R7、R6。
DELY0:   MOV           R7,#100         
DELY1:   MOV           R6,#250      
         DJNZ          R6,$
         DJNZ          R7,DELY1
         DJNZ          R0,DELY0
         RET

         END           

CPU的时序及有关概念
时序是表达指令执行各控制信号在时间上的相互关系。时序是用定时单位来说明的,89C51单片机的时序定  时单位共有4个,从大到小依次是:拍、状态、机器周期、指令周期,下面依次说明:
1.拍(P):把振荡脉冲的周期称为拍,用P表示。它就是晶体的振荡周期,或是外部振荡脉冲的周期,拍是89C51单片机中最小的时序单位。
2.状态或时钟周期(S):振荡脉冲经过二分频后,就得到单片机的时钟信号,把时钟信号的周期称为状态,用S表示。一个状态包含两个拍,分别称为P1和P2,或者前拍和后拍。时钟周期是单片机最基本的时间单位,在一个时钟周期内,CPU仅完成一个最基本的动作。
3.机器周期:通常把CPU完成一个基本操作所需要的时间称为机器周期。一个机器周期由6个状态(或12拍)组成,可依次表示为S1P1,S1P2,S2P1,S2P2,…,S6P1,S6P2。
当振荡频率为12MHz时,一个机器周期为1us;当振荡脉冲频率为6MHz时,一个机器周期为2us。
4.指令周期:指令周期就是一条指令所需要的时间。指令周期是89C51单片机中最大的时序单位,一般由若干个机器周期组成。指令不同,所需要的机器周期数也不同,但一条指令的周期应在1~4个机器周期范围内。

延时时间为250*10*100*2*1us=0.5s


沙发
yiyigirl2014| | 2016-2-29 21:55 | 只看该作者
指令周期就是一条指令所需要的时间。指令周期是89C51单片机中最大的时序单位,一般由若干个机器周期组成。很多年没有用过汇编了。

使用特权

评论回复
板凳
neeringstu| | 2016-3-3 16:07 | 只看该作者
在汇编语言下面容易加入操作系统吗

使用特权

评论回复
地板
ideafor| | 2016-3-3 22:36 | 只看该作者
这个是什么软件,感觉比用真实软件生钱啊

使用特权

评论回复
5
quray1985| | 2016-3-5 19:46 | 只看该作者
用汇编语言实在是太麻烦了,还是好好学习C语言吧

使用特权

评论回复
6
奥德赛| | 2016-3-7 17:14 | 只看该作者
这个protues软件里面有没有8086?

使用特权

评论回复
7
C洛达尔多| | 2016-3-8 20:41 | 只看该作者
这个是89C52的仿真程序,有没有8086的例子呢?

使用特权

评论回复
8
john_lee| | 2016-3-8 21:52 | 只看该作者
回以上两位小号:没有!

使用特权

评论回复
9
西门扫雪| | 2016-3-9 22:25 | 只看该作者
汇编语言的执行效率高,但是太难编写了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

28

主题

245

帖子

2

粉丝