|
一个简单的例子 ,每隔一秒寄存器加1,因为好多地方需要做计时或者延时操作,所以先理解一下计时器的运行比较有用
=================================================================
ORG 1000H
GOTO MAIN ;代码的第一条指令必须是GOTO指令跳转到初始化或者主程序
NOP ;中断定时器0服务程序入口,必须用GOTO跳转
NOP ;中断定时器1服务程序入口,NOP指令表示未使用
NOP ;中断定时器2服务程序入口
ORG 1080H
MAIN:
CONFIG 0x01,0x02,0x01 ;初始化计时器
LDWR R100,0 ;初始化寄存器
START:
CALL COUNTER ;开始计时,每隔1秒1000H加1
GOTO START
COUNTER:
;从计时器取数放到R20
LDWR R20,0
MOVDR 37,R20,2
;当R20>=1000时继续,否则什么也不做
LDWR R22,1000
JS R20,R22,COUNTER_RET
;清空寄存器37
LDWR R20,0
MOVRD R20,37,2
;DGUS的1000H寄存器数值加1
INC R100,1,1
LDWR R0,0x1100
MOVXR R100,0,2
CALL COUNTER_RET
COUNTER_RET:
RET
|
|