8086交通灯设计 按照已给的8086仿真电路图编程实现8086控制交通灯。

8086交通灯设计 按照已给的8086仿真电路图编程实现8086控制交通灯。,第1张

CODE SEGMENT

FLASHTIME EQU 01H

黄灯闪烁三次

OUT 00H,AL

MOV 03H,BL

START:

OUT 12h,AL点亮黄灯

MOV AX,02H

CALL Delay

OUT 00h,AL熄灭所有灯

MOV AX,02H

CALL Delay

OUT 12h,AL点亮黄灯

MOV AX,02H

CALL Delay

OUT 00h,AL熄灭滚猛掘所有灯

MOV AX,02H

CALL Delay

OUT 12h,AL点亮黄灯

MOV AX,02H

CALL Delay

OUT 00h,AL熄灭所有大核灯知神

MOV AX,02H

CALL Delay

MAIN:

OUT 21h,AL

MOV AX,0AH

CALL Delay

OUT 22H,AL

MOV AX,FLASHTIME

CALL Delay

OUT 20H,AL

MOV AX,FLASHTIME

CALL Delay

OUT 22H,AL

MOV AX,FLASHTIME

CALL Delay

OUT 20H,AL

MOV AX,FLASHTIME

CALL Delay

OUT 22H,AL

MOV AX,FLASHTIME

CALL Delay

OUT 20H,AL

MOV AX,FLASHTIME

CALL Delay

OUT 0CH,AL

MOV AX,10H

CALL Delay

OUT 14H,AL

MOV AX,FLASHTIME

CALL Delay

OUT 04H,AL

MOV AX,FLASHTIME

CALL Delay

OUT 14H,AL

MOV AX,FLASHTIME

CALL Delay

OUT 04H,AL

MOV AX,FLASHTIME

CALL Delay

OUT 14H,AL

MOV AX,FLASHTIME

CALL Delay

OUT 04H,AL

MOV AX,FLASHTIME

CALL Delay

JMP MAIN

CODE ENDS

Delay:

CALL Delay1S

DEC AX

CMP AX,0

JNZ Delay

RET

Delay1S:

MOV CX,04FFFH

Delayloop:

DEC CX

CMP CX,0

JNZ Delayloop

RET

END

由于我已灶举经将重点放java系列的研究上了,这里只是简单的看了你写的代码(还不能很肯定有无细节错误) 根据你所写: 我觉得串讲注意以下并以此贯穿

1.总述其功能,并在述完功能后,讲清整个逻辑关系,既然是自己写,讲这个逻辑应该不难吧 (强调这一步主要是讲清你这个设计思路 可以以主程序入口地址来分别引讲)

2.根据以上的逻辑分析,具体谈一些重要分步的实现关键.(选择性的讲你认为是比较有价值的)

3.强调一些细节,我想你在写这个的竖辩带时候,一定会有很多细节问题,在不断的编写过程中得以完善. (如果时间没完的话,讲完后,你还可以再简述功能)

附:至于语言余芦的组织,你写了这么多解释,相信还是有一个语言表达能力, 这里谈下,我的一个学习习惯: 就是在学习中,总结笔记,一方面可以锻炼表达总结能力, 也给以后的复习还来方便(毕竟自己写的笔记,看起更亲切,更易懂)

=================

看了你的留言,只好简单的给你说下,实在抱歉,目前,我暂时放下了汇编,等java上了台阶,才会再来win32相关. 8086 王爽那本书很好!!! 如果你学了汇编,没看过此书,强烈推荐给你!!!

代码修改如下,经keil编译,proteus仿真结果为 P1.0亮10秒,然后P1.1亮2秒,然后P1.2亮10秒,最后P1.0亮10秒,,,

#include <reg51.h>

sbit R=P1^0//HONG

sbit W=P1^1//HUANG

sbit L=P1^2//LV

unsigned int a,b=0

//unsigned char code c[]={0xfe,0xfc,0xfb}//1110,1100,1011

unsigned char code c[]={0xfe,0xfD,0xfb,0xfd}//1110,1101,1011,1101//红 黄 绿 黄//修正黄灯的值,增加一个状态

void timer10s () interrupt 1

{

 if (a<2000)

    {

        TH0=0xec//5ms

        TL0=0x78

        a++

  //      b=0//这里不能对b赋值

        TR0=1

        TR1=0//【增加】

    }

    if (a>=2000)

    {

        TH0=0xec

        TL0=0x78

        a=0

        b++//b=1

        if(b==4) b=0//【增加】

        TR1=1

        TR0=0//【增加】

    }

}

void timer2s ()interrupt 3

{

   

   if (a<400)

    {

        TH1=0xec

        TL1=0x78

        a++

        TR1=1

        TR0=0

    }

    if (a>=400)

    {

        TH1=0xec

        TL1=0x78

        a=0

        b++//b=2

        //

        if(b==4) b=0//【增加】

        TR0=1

        TR1=0//【增加】

    }

}

void main ()

{

    EA=1

    ET0=1

    ET1=1

    TMOD=0X11

    TH0=0xec//5MS

    TL0=0x78

    TH1=0xec

    TL1=0x78

    TR0=1

    TR1=0

    P1=c[0]

    b=0////【增加】

    while (1)

    {

        switch (b)

        {

            case 0x00:P1=c[0]break

            case 0x01:P1=c[1]break

            case 0x02:P1=c[2]break

 瞎旅           case 0x03:P1=c[3]break//增加一个状态

        }

    }

}

以上代码可以优化,如下:

#include <reg51.h>

sbit R=P1^0//HONG

sbit W=P1^1//HUANG

sbit L=P1^2//LV

unsigned int a,b=0

unsigned char code c[]={0xfe,0xfD,0xfb,0xfd}

void timer10s () interrupt 1

{

    TH0=0xec//5ms

    TL0=0x78

    a++

    if(TR1==1) TR1=0

    if (a>=2000)

    {

        a=0

        b++

        if(b==4) b=0

        TR1=1

        TR0=0

    }

}

void timer2s ()interrupt 3

{

    TH1=0xec

    TL1=0x78

    a++ 

    if(TR0==1) TR0=0

    if (a>=400)

    {

        a=0

        b++

        if(b==4) b=0

        TR0=1

        TR1=0

    }

}

void main ()

{

    EA=1

    ET0=1

    ET1=1

    TMOD=0X11

    TH0=0xec//5MS

    TL0=0x78

    TH1=0xec

    TL1=0x78

    TR0=1

    TR1=0

    a=0//

 磨漏凳   b=0//

    while (1)

    {

        switch (b)

        {

            case 0x00:P1=c[0]break

            case 0x01:P1=c[1]break

      搜渣      case 0x02:P1=c[2]break

            case 0x03:P1=c[3]break

        }

    }

}


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

原文地址:https://54852.com/yw/12502875.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-08-25
下一篇2025-08-25

发表评论

登录后才能评论

评论列表(0条)

    保存