这是我们的考试题,单片机高手速进来,....谢谢!!!!!
题目:采用80c51单片机和四只发光二极管,要求使四只发光二极管每秒亮一只,依次发光。
然后在第五秒全亮,第六秒全灭。以此顺序循环。要求采用T1计时功能方式一。
要汇编语言的,其他我就不多说咯,要完整的程序,我压上咯我仅有的家当咯!!!~~~谢谢!
很急~~~~高手请来~~~
悬赏分:30 - 解决时间:2009-12-22 16:21
;==========================
最佳答案:
;--------------------------
;程序如下:
ORG 0000H
SJMP START
ORG 001BH
SJMP INT_T1
;--------------------------
START:
MOV TMOD, #10H ;T1定时
MOV TH1, #3CH
MOV TL1, #0B0H ; 50ms @ 12MHz
SETB TR1
SETB ET1
SETB EA
MOV R2, #0
MOV R3, #20
CLR PSW.5
;--------------------------
_0_: JNB PSW.5, $ ;不到1s,原地转移,等待
CLR PSW.5 ;清除标志
_1_: CJNE R2, #1, _2_ ;R2不等于1,转移
CLR P1.0 ;此处编写“第一秒”,应该执行的程序
SJMP _0_
_2_: CJNE R2, #2, _3_ ;R2不等于2,转移
CLR P1.1 ;此处编写“第二秒”,应该执行的程序
SJMP _0_
_3_: CJNE R2, #3, _4_
CLR P1.2
SJMP _0_
_4_: CJNE R2, #4, _5_
CLR P1.3
SJMP _0_
_5_: CJNE R2, #5, _6_
CLR P1.4
SJMP _0_
_6_: CJNE R2, #6, _7_
MOV P1, #0 ;到了第六秒,全亮
SJMP _0_
_7_: MOV P1, #255 ;到了第七秒,全灭
MOV R2, #0 ;秒计数器清零,下次从“第一秒”重新开始
SJMP _0_
;--------------------------
INT_T1: ; 50ms中断一次
MOV TH1, #3CH
MOV TL1, #0B0H ; 50ms @ 12MHz
DJNZ R3, _EXIT_ ;不够20次,退出
MOV R3, #20
SETB PSW.5 ;设置“到了1s”的标志位
INC R2 ;秒数加一
_EXIT_:
RETI
END
;==========================
回答者: 做而论道 - 十一级 2009-12-21 23:55
提问者对于答案的评价:他的回答,非常准确!!!很合题意!!!在程序上可以看出有很高的造诣~~~而且思路也很清晰!!!