×
单片机 > 单片机程序设计 > 详情

Proteus--51系列汇编

发布时间:2020-08-26 发布时间:
|


















 
 单键控制多灯延时闪烁—延时子程序
ORG 0000H     ; 程序开始 
MAIN:
  MOV  C,80H  ;P0.0口的状态传递给位累加器C
  JNB   80H,GUAN   ;按位操作;按P0.0口的状态为0获得跳转,否则顺序执行
  MOV P1,#00H ;按P0.0口为1,得到顺序执行本指令;p1,p2,p3全部置低电平
  MOV P2,#00H 
  MOV P3,#00H 
  ACALL  DELAY     ; 调延时子程序
GUAN :   按P0.0口的状态为0获得的跳转执行指令—子程序
CPL  C   ;反转P0.0口的状态0为1
  MOV  P0.1,C   ; 按P0.0口的状态反转为1,显示P0.1口
  MOV P1,#0FFH   ; 把p1,p2,p3全部置高电平
  MOV P2,#0FFH; 
  MOV P3,#0FFH; 
  ACALL  DELAY   ; 调延时子程序 
AJMP MAIN   ; 延时结束后,短转移跳转到MAIN,重新开始 ,改变了的P0.0口的状态便起作用了 
ORG 0200H  ; 从200H开始存放
 
DELAY:      ; 延时子程序 — 这是一个非常有用、而且常见的一个子程序
  MOV R5,#04H    ;将16进制数04H传递给寄存器R5
F3:
  MOV R6,#0FFH  ;将16进制数0FFH传递给寄存器R6
F2:
  MOV R7,#0FFH  ;将16进制数0FFH传递给寄存器R7
F1:
  DJNZ  R7, F1 ;寄存器R7减1非0跳转到F1,直到减为0顺序执行下一指令
  DJNZ  R6, F2 ;寄存器R6减1非0跳转到F2,直到减为0顺序执行下一指令
  DJNZ  R5, F3 ;寄存器R5减1非0跳转到F3,直到减为0顺序执行下一指令
  RET       ; 子程序结束,返回子程序入口处 
END
程序说明:
每个口用字节赋值指令一次性的开关各个Pi口的外接器件。特别注意延时指令,在单片机的应用中,经常会使用延时特性。参见如下所述。
注意延时的本质实际上是单片机在空运转,因此可以使用一个跳转或多个跳转的空运转,以便控制更长的延时。寄存器是与运算器直接打交道的存储单元。
基本的延时子程序为
DELAY:
  MOV R5,#04H
F1:
  DJNZ  R5, F1
RET
 LED循环问题(跑马灯、流水灯)
一种方式位输出加延时子程序,二种方式字节输出加延时子程序,三种方式字节数据表加延时子程序。
 
a)  单个按键与多个LED灯—数码管(位操作—输入与字节操作—输出)—数表
 单输入与多输出的电子线路—静态特性
在单个LED灯的基础上,添加多个LED灯或者用LED组灯来替代单个添加。从单个LED到LED组的硬件添加,再通过指令变化,可以感受到、可以发现数码管的应用方法,也可以体会到引用数组—数据表的好处。
 
多输出电子线路的控制指令—动态特性
通过硬件的变化,指令集—程序也在随着变化。可以发现,添加延时指令,可实现LED闪烁;也就是用多灯。通过用位赋值指令并延时单个LED的开关时间,实现流水灯现象。也可以对每个口用位指令赋值,顺序开关;可以用字节指令送数据,LOOP循环实现跑马灯。还可以用数据组格式—数表格式,通过扫描实现,等等。
关键字:Proteus  51系列  汇编 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
单片机中高阻态的实质及意义