单片机交通灯的汇编程序

单片机交通灯的汇编程序,第1张

你把问题描述清楚一点,我没有电子版,要是差不多我就把我的程序抄到上面来~~

我的程序是实现以下工艺:

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秒/结束

以上就是关于单片机交通灯的汇编程序全部的内容,包括:单片机交通灯的汇编程序、单片机交通灯的汇编程序设计、交通灯软件程序用汇编怎么编写等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9273647.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存