看不懂,1s定时中断服务“汇编”子程序
;这个程序有好几处看不懂
;
ORG 0000H ;复位入口指定
SJMP START
ORG OOOBH ;T0中断入口指定
SJMP T0SVR
ORG 0030H
;主程序
START:MOV SP, #40H
MOV P1, #0FH ;初始状态,发光二极管熄灭
MOV A, #1FH
MOV TMOD, #01H ;设置T0工作方式1
MOV TH0, 0ECH ;置10ms计数初值
;---------------------------------------
;这里计满只有5000个数呀,应该5ms。难道晶振是6MHz?
MOV TLO, #78H
MOV R0, #64H ;计数100个10ms,即1s
SETB EA ;开放总中断
SETB ET0 ;开放T0中断
SETB TR0 ;启动T0
DISP:MOV P1, A
SJMP DISP ;循环显示
;---------------------------------
;这里循环显示是什么意思?好像是个死循环呀
;T0中断服务子程序
T0SVR:MOV TL0, #78H ;重置计数初值
MOV TH0, #0ECH
DJNZ R0, QUIT ;1s时间未到,退出
MOV R0, #64H ;1s时间到,重置R0计数初值(100)
ANL A, #0F0H ;L0~L3位于P1口的高4位
;-----------------------------------------------
;不是接在低四位吗?主程序第二行不是这样的意思吗?MOV P1, #0FH ;初始状态,发光二极管熄灭
CLR C
RLC A ;将点亮的LED循环左移
JNC QUIT
;---------------为什么没进位时跳出?
MOV A, #10H ;移到L3后,复位到L0
;--------------------------------------------不懂这个功能是怎么做到的
QUIT: ORL A, #OFH
RETI END
发表时间:2004年6月18日15:08:32