[应用方案] 用汇编语言实现单片机的循环灯控制

[复制链接]
1802|8
 楼主| 跟屁虫 发表于 2016-2-29 20:04 | 显示全部楼层 |阅读模式
                             Protues模拟图:
程序:
  1. ORG           0000H
  2.          LJMP          MAIN

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

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

  17.          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 | 显示全部楼层
这个是什么软件,感觉比用真实软件生钱啊
quray1985 发表于 2016-3-5 19:46 | 显示全部楼层
用汇编语言实在是太麻烦了,还是好好学习C语言吧
奥德赛 发表于 2016-3-7 17:14 | 显示全部楼层
这个protues软件里面有没有8086?
C洛达尔多 发表于 2016-3-8 20:41 | 显示全部楼层
这个是89C52的仿真程序,有没有8086的例子呢?
john_lee 发表于 2016-3-8 21:52 | 显示全部楼层
回以上两位小号:没有!
西门扫雪 发表于 2016-3-9 22:25 | 显示全部楼层
汇编语言的执行效率高,但是太难编写了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

28

主题

245

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部