标题: 用查表指令MOVC A,@A+DPTR实现P1端口LED的全亮全灭 汇编程序 [打印本页]

作者: wudawei    时间: 2014-12-31 15:28
标题: 用查表指令MOVC A,@A+DPTR实现P1端口LED的全亮全灭 汇编程序
;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






欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1