找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4468|回复: 0
打印 上一主题 下一主题
收起左侧

用查表指令MOVC A,@A+DPTR实现P1端口LED的全亮全灭 汇编程序

[复制链接]
跳转到指定楼层
楼主
ID:71407 发表于 2014-12-31 15:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
;51单片机入门程序10
;工程名称:用查表指令MOVC A,@A+DPTR实现P1端口LED的全亮全灭
;编写日期:2009.7.4 ;编写者:蓝柳柳 ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ORG 0000H
MAIN: MOV R7,#0 ;查表程序要用到软件计数器来计调出表中数据的次数(或个数) ;但是在用软件计数器前先清零,这是给软件计数器R7清零
  MOV DPTR,#LIULIU ; 把表格的首地址放入寄存器DPTR, ;注意了DPTR里的地址是永恒不变的
LOOP:MOV A,R7 ;把软件计数器里的数据送给累加器A,为查表作些准备
  MOVC A,@A+DPTR ;查表,把查到的数据送到A
  MOV P1,A ;把A里的数送到P1端口显示
  ACALL YS ;调用延时子程序,显示一小段时间 INC R7 ;软件计数器自动加1
  CJNE R7,#2,LOOP ;R7里的数到2了没,到了顺序往下运行,没到转移到LOOP处
  MOV R7,#0 ;软件计数器清零,也就是上面程序已经调出表里的最后一个数据
  AJMP LOOP ;回到LOOP处重新把表里的第一个数调出来显示
LIULIU: DB 00000000B,11111111B ;DB 00H ,0FFH 注意了如果是用十六进制表示时,#号后面不能 ;直接跟十六进制里面的那几个英文字母,要用0隔开

YS: ;延时子程序,如果是用12MHZ作为时钟电路的话,那么延时时间为1秒
  MOV R1,#10
  D: MOV R2,#200 T: MOV R3,#248
  DJNZ R3,$
  DJNZ R2,T DJNZ R1,D
  RET ;子程序返回指令,子程序的设计一般都是因为主程序要调用它, ;调用完是要返回到主程序继续运行下一个语句的
END

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表