📄 led_table.asm
字号:
;/********************************************************************
; * 主 页 : HTTP://WWW.QLMCU.COM
; *
; * 程序功能 : LED 流水灯(采用查表方式)
; *
; * 应用软件 : KEIL C
; *
; * 版 本 : KEIL 7.06
; *
; * 硬 件 : WS803、WS804、WS806
; *
;* 创建时间 : 2005-07-28
;*
; * 程序整理 : benladn911
; *
; * 注:为了有更多实用的实验程序供大家学习,部分程序参考网上的资源,
; * 在此谢谢这些无私奉献的朋友!!!
; *
; ********************************************************************/
;/* 程序详细功能介绍:
; *利用取表的方法,使端口P1做单一灯的变化:左移2次,右移2次,闪烁2次(延时的时间0.2秒)。
; *在用表格进行程序设计的时候,要用以下的指令来完成
; *(1).利用MOV DPTR,#DATA16的指令来使数据指针寄存器指到表的开头。
; *(2).利用MOVC A,@A+DPTR的指令,根据累加器的值再加上DPTR的值,就可以使程序计数器PC指到表格内所要取出的数据。
; *因此,只要把控制码建成一个表,而利用MOVC 工,@A+DPTR做取码的操作,
; *就可方便地处理一些复杂的控制动作.
; */
ORG 0000H
LJMP START
ORG 0100H
START:CLR P3.7 ;选通WS 系列实验板的LED 流水灯的电源控制端
MOV DPTR,#TABLE ;取表格数据
LOOP: CLR A ;对A清零
MOVC A,@A+DPTR ;查表
CJNE A,#01H,LOOP1 ;当A等于01时程序往下执行,否则跳到 LOOP1
LJMP START ;跳到程序的开头
LOOP1: MOV P0,A ;把取得的表格数据送到P0
MOV R3,#20
LCALL DELAY
INC DPTR
LJMP LOOP
DELAY: MOV R4,#20 ;延时子程序
D1: MOV R5,#248
DJNZ R5,$
DJNZ R4,D1
DJNZ R3,DELAY
RET
TABLE: DB 0FEH,0FDH,0FBH,0F7H
DB 0EFH,0DFH,0BFH,07FH
DB 0FEH,0FDH,0FBH,0F7H
DB 0EFH,0DFH,0BFH,07FH
DB 07FH,0BFH,0DFH,0EFH
DB 0F7H,0FBH,0FDH,0FEH
DB 07FH,0BFH,0DFH,0EFH
DB 0F7H,0FBH,0FDH,0FEH
DB 00H, 0FFH,00H, 0FFH
DB 01H
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -