你把问题描述清楚一点,我没有电子版,要是差不多我就把我的程序抄到上面来~~
我的程序是实现以下工艺:
ST0:全为红灯
ST1:南北绿灯(5s),东西红灯(5s)
ST2:南北黄灯(3s),东西红灯(3s)
ST3:南北红灯(5s),东西绿灯(5s)
ST4:南北红灯(3s),东西黄灯(3s)
#include
<reg52h>
sbit
K0
=
P2^0;
sbit
K1
=
P2^1;
sbit
K2
=
P2^2;
sbit
K3
=
P2^3;
void
main(
void
)
{
TMOD
=
(TMOD
&
0x0f)
|
0x50;
TR1
=
1;
T1
=
1;
TL1
=
0;
TH1
=
0;
TMOD
=
(TMOD
&
0xf0
)
|
0x02;
TH0
=
-100;
TR0
=
1;
ET0
=
1;
EA
=
1;
while(
1
){
;
}
}
void
Timer0Int(
void
)
interrupt
1
{
static
unsigned
char
sts=0;
switch(
sts
)
{
case
0:
K0
=
0;
break
case
1:
K1
=
0;
break
case
2:
K2
=
0;
break
case
3:
K3
=
0;
break
}
if(
++sts
>=
4
)
sts=0;
}
第二题的c先献上,你自己反编译下吧,第一题我明天帮你搞定,简单得很
额。。你的要求我做不出来。。不过我这里有一个简单的交通灯。。你可以参考参考 CODE SEGMENT
ASSUME CS:CODE
DENG PROC FAR
CMP BL,0FH ;JUDGE BL
JC LIANG
SUB BL,0FH
LIANG: MOV AL,81H
CMP BL,04H
JC GO
MOV AL,41H
CMP BL,07H
JC GO
MOV AL,24H
CMP BL,0CH
JC GO
MOV AL ,22H
GO: MOV DX,292H ;XIANSHI
OUT DX,AL
RET
DENG ENDP
START: MOV DX,283H ;INIT 8253
MOV AL,00010100B
OUT DX,AL
MOV DX,280H
MOV AL,00H
OUT DX,AL
MOV DX,283H
MOV AL,01010100B
OUT DX,AL
MOV DX,281H
MOV AL,10H
OUT DX,AL ;OUTPUT 1 SIGNAL PER SECOND
MOV DX,293H ;INIT 8255A
MOV AL,10010000B
OUT DX,AL
MOV BL,00H ;SET ONE FIRST
LP: MOV AH,0BH ;SHUT OFF IF TYPE ANYKEY
INT 21H
CMP AL,0FFH
JZ EXT
MOV DX,290H
IN AL,DX
AND AL,01H
CMP AL,01H ;HERE IS 1 SECOND SIGNAL
JNZ LP
INC BL
CALL DENG
JMP LP
EXT: MOV AH,4CH
INT 21H
CODE ENDS
END START
您好,看到您的问题很久
没有人
回答,但是问题过期无人回答会被扣分并且你的悬赏分也会被没收!所以我给你提几条建议:
一,如果
你的问题
太难太专业,没人懂的话,你可以到相关专业
论坛
求助;
二,你的问题需要长篇论述,需要花费的时间长但你的悬赏分太少,很
少人
愿意
花时间
,建议你增加悬赏分或许能够吸引更多人来回答你的问题。
三,您提问时间不妥,问题被后面提问的人顶出去了也是一个原因!你可以错开提问高峰期来问问中提问题。
四,您可以注意选择正确的分类,以便得到相关专业人士的回答,如果分类正确没有人回答可以提高悬赏分。
以下程序实现陆位数码管,每一位依次循环显示0--9 ORG 0000H LJMP MAIN ORG 00三0H MAIN: MOV P贰,#0FEH MOV A,#00H MOV DPTR,#TAB LOOP: MOVC A,@A+DPTR MOV P0,A LCALL DELAY INC A CJNE A,#0AH,LOOP MOV A,P贰 RL A MOV P贰,A JB ACC陆,SS依 MOV P贰,#0FEH SS依: CLR A SJMP LOOP DELAY: MOV R依,#贰 L依: MOV R贰,#贰00 L贰: MOV R三,#贰00 L三: DJNZ R三,L依 DJNZ R贰,L贰 DJNZ R依,L三 RET SJMP $ ORG 00吧0H TAB: DB 0C0H,0F9H,0A四H,0B0H,99H,9贰H,吧贰H,0F吧H,吧0H,90H EN
延时子程序逻辑有错误
请照如下修改:
DELAY2: MOV R3,#100DEL4: MOV R4,#250 DEL5: NOP DJNZ R4,DEL5 DJNZ R3,DEL4 RET
延时子程序简单点考虑:让CPU空转几千次,估计差不多一秒左右的时间,再循环调用这个程序,调用多少次就是多少秒
我给一个大致的样子
;/以下延时时间程序,一次调用延时时间大约在1/4秒/开始
YanShi2:
mov dx,65535D ;CPU空转次数
YanShi1:
dec DX ;减1继续执行
jnz YanShi1 ;反复执行,直到DX小于0才开始向下执行
dec cx ;确定执行的总时间,从上面需要执行的时间赋值得到
jnz YanShi2 ;同上
ret
;/以下延时时间程序,一次调用延时时间大约在1/4秒/结束
以上就是关于单片机交通灯的汇编程序全部的内容,包括:单片机交通灯的汇编程序、单片机交通灯的汇编程序设计、交通灯软件程序用汇编怎么编写等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)