P2作输出端口,8个LED灯轮流亮,间隔为1秒。分别采用查询和中断编写源程序。
悬赏分:0 - 解决时间:2010-5-4 17:56
;--------------------------------------------
最佳答案:
假设晶振频率是12MHz;P2口输出低电平时LED发光。
下列两个程序,经过了PROTEUS仿真,能够满足要求。
;===================================================
;下面是查询方式
ORG 0000H
LJMP MAIN
ORG 0050H
MAIN:
MOV TMOD, #01 ;令T0定时方式1
MOV TH0, #3CH
MOV TL0, #0B0H ;50ms@12MHz
SETB TR0 ;启动T0
;--------------------------------------------
MOV R7, #20
MOV A, #7FH
MOV P2, A
M_LOOP:
JNB TF0, M_LOOP ;T0没有溢出,就在此循环不止.
CLR TF0
MOV TL0, #0B0H
MOV TH0, #3CH
DJNZ R7, M_LOOP ;溢出20次?
MOV R7, #20 ;才到1s
RR A
MOV P2, A
SJMP M_LOOP
;--------------------------------------------
END
;===================================================
;下面是中断方式
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0_INT
ORG 0050H
MAIN:
MOV TMOD, #01 ;令T0定时方式1
MOV TH0, #3CH
MOV TL0, #0B0H ;50ms@12MHz
SETB TR0 ;启动T0
MOV IE, #82H ;允许中断.
;--------------------------------------------
MOV R7, #20
MOV A, #7FH
MOV P2, A
M_LOOP:
;主程序, 空循环
SJMP M_LOOP
;--------------------------------------------
T0_INT: ;50ms执行一次.
MOV TL0, #0B0H
MOV TH0, #3CH
DJNZ R7, T0_END ;中断20次?
MOV R7, #20 ;才到1s
RR A
MOV P2, A
T0_END:
RETI
;--------------------------------------------
END
;===================================================
回答者: 做而论道 - 十三级 2010-5-4 17:29
提问者对于答案的评价:非常感谢!!!
原题网址:http://z.baidu.com/question/151022680.html
;===================================================