赞助论坛
  • 4120阅读
  • 0回复

0到9的计数器汇编程序(有详细的注释最佳的入门程序) [复制链接]

楼层直达
发帖
372
精华
0
金币
1233
威望
1
贡献
9
好评
9
注册
2010-03-08
楼主    场效应 发表于: 2012-08-13 08:08:18 
让你一个门外汉也能看懂汇编语言的程序:
START: MOV   R0, #0     ;初始化计数器
    MOV   DPTR,#TABLE   ;存入查表起始地址
LOOP: ACALL DISPLAY     ;调用扫描程序
    INC   R0         ;计时器加1
      CJNE R0, #10,LOOP; 不是10转移
    JMP   START
;-----------------------------------------
DISPLAY:
    MOV A, R0   ;
    MOV B, #10   ;换成十进制
  DIV   AB     ;a/b的商存入A,余数存入B
    MOV R1, A   ;R1暂时
  MOV   R2, B   ;R2放个位

;------个位数显示-----------------------------------
LOOP1:MOV A,R2    
    ACALL CHANG
    CLR   P2.0     ;开个位显示
    ACALL DLY10MS   ;延时
    SETB P2.0     ;关个位显示
    DJNZ R3, LOOP1 ;计数器减1不为0转移到LOOP
    RET
;取表显示子程序------------------------
CHANG: MOVC A,@A+DPTR ;
    MOV   P0, A   ;
    RET
;--------------------------
;延时程序
;--------------------------
DLY10MS: MOV R6, #10
D1:     MOV R7, #250
      DJNZ R7, $
      DJNZ R6, D1
      RET
;-------------------------------
TABLE:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H      
;------------------------------
END
你也可以以此类推扩展到你想要的多位数0-999999等