以89C51的P1.0~P1.7控制8只LED指示灯闪烁(P1口相应端输出1则LED发光,输出0则LED不发光)。

基本要求是LED从左至右依次发光0.5s,不断重复(每时刻仅其中一只LED发光)。编写以定时器T0工作于工作方式1定时100ms来实现LED指示灯以0.5s为周期的完整应用程序(即包含主程序、中断程序和全部必要的伪指令等)。设晶振频率为12MHz。

89c51的晶振是12mhz的话,定时器T0工作在方式1,最长可以定时65.536ms,无法满足题意以100ms为循环,不可编程,只能用方式一定时50ms然后循环10次,而不是100ms循环五次!如果没猜错的话,题目要求的晶振应该是6mhz,好好看看吧!骚年,改好了我可以给你编。及其easy的程序。
算了,写一下定时50ms然后循环10次的吧,如下:
ORG 0000H
AJMP MAIN
ORG 000BH
AJMP SERVE
ORG 0030H
MAIN: MOV A , #01H
MOV P1 , A
START:ACALL DELEY
NEXT: RL A
MOV P1 , A
SJMP START
DELEY:MOV R0 , #0AH
MOV TMOD , #01H
MOV TL0 , #0B0H
MOV TH0 , #3CH
STEB TR0
STEB ET0
STEB EA
SJMP $
SERVE:MOV TL0 , #0B0H
MOV TH0 , #3CH
DJNZ R0 , LOOP
CLR TR0
AJMP NEXT
LOOP: RETI
END追问

嗯好的谢啦哈 我的提问里还有一个单片机程序题也帮我看看嘛

追答

???不就这一个led 的,还有哪个

追问

以AT89C51的P1.0控制一只LED指示灯闪烁(P1.0端输出0则LED发光,输出1则LED不发光)。

要求是LED指示灯发光5s,再熄灭5s,再闪烁5s,周而复始一直循环进行。这里所谓闪烁,即点亮0.5s,再熄灭0.5s,循环进行。编写以定时器T0工作于定时工作方式1定时50ms来实现LED指示灯的上述完整应用程序(即包含主程序、中断程序和全部必要的伪指令等)。设晶振频率为12MHz。

追答

挣你点分真不容易啊。。。
拿去
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN: MOV TMOD , #11H
START: STEB P1.0
ACALL D5S
CLR P1.0
MOV R0 , #0AH
LOOP1: ACALL D500MS
CPL P1.0
DJNZ R0 , LOOP1
AJMP START
D5S: MOV R1 , #64H
MOV TL0 , #0B0H
MOV TH0 , #3CH
STEB TR0
JUDGE1:JBC TF0 , $
MOV TL0 , #0B0H
MOV TH0 , #3CH
DJNZ R1 , JUDGE1
CLR TR0
RET
D500MS:MOV R2 , #0AH
MOV TL1 , #0B0H
MOV TH1 , #3CH
STEB TR1
JUDGE2:JBC TF1 , $
MOV TL1 , #0B0H
MOV TH1 , #3CH
DJNZ R2 , JUDGE2
CLR TR1
RET

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-06-24
貌似用C语言容易一些,太多年没玩这玩意了,呵呵