汇编语言的交通灯程序

发布者:幸福如意最新更新时间:2015-10-26 来源: eefocus关键字:汇编语言  交通灯程序 手机看文章 扫描二维码
随时随地手机看文章
    汇编语言的交通灯程序,单片机采用51单片机,基本完成控制两组交通指示灯交替亮,每个路口有左拐、直行及行人三种指示灯。直行灯设有红、黄、绿三种颜色。非机动车与汽车共用左拐和直行灯。首先东西向直行绿灯和行人灯亮1分钟,左转灯亮30秒,黄灯亮5秒(同时南北向红灯亮95秒),然后东西向红灯亮95秒钟(同时首先南北向直行绿灯和行人灯亮1分钟,左转灯亮30秒,黄灯亮5秒),然后东西向的绿灯亮,依次类推。

    每次绿灯亮的时候,对应的行人灯亮。60S/30S/5S/60S/30S/5S
    东西道:绿和行人/左转/黄/红/红/红
    南北道:红/红/红/绿和行人/左转/黄
    行人灯亮的时候有声音提示盲人能通过。突发交通事故的时候能够紧急全红灯。在有重要人物通过的时候能手动改为绿灯。

ORG 0000H ;主程序的入口地址
LJMP MAIN ;跳转到主程序的开始处
ORG 0003H ;外部中断0的中断程序入口地址
ORG 000BH ;定时器0的中断程序入口地址
LJMP T0_INT ;跳转到中断服务程序处
ORG 0013H ;外部中断1的中断程序入口地址
MAIN : MOV SP,#50H
MOV IE,#8EH ;CPU开中断,允许T0中断,T1中断和外部中断1中断
MOV TMOD,#51H ;设置T1为计数方式,T0为定时方式,且都工作于模式1
MOV TH1,#00H ;T1计数器清零http://www.5imcu.net/sylyuan.asp
MOV TL1,#00H
SETB TR1 ;启动T1计时器
SETB EX1 ;允许INT1中断
SETB IT1 ;选择边沿触发方式
MOV DPTR ,#0003H
MOV A, #80H ;给8255赋初值,8255工作于方式0
MOVX @DPTR, A
AGAIN: JB P3.1,N0 ;判断是否要设定东西方向红绿灯时间的初值,若P3.1为1 则跳转
MOV A,P1
JB P1.7,RED ;判断P1.7是否为1,若为1则设定红灯时间,否则设定绿灯时间
MOV R0,#00H ;R0清零
MOV R0,A ;存入东西方向绿灯初始时间http://www.5imcu.net/sylyuan.asp
MOV R3,A
LCALL DISP1
LCALL DELAY
AJMP AGAIN
RED: MOV A,P1
ANL A,#7FH ;P1.7置0
MOV R7,#00H ;R7清零
MOV R7,A ;存入东西方向红灯初始时间
MOV R3,A
LCALL DISP1
LCALL DELAY
AJMP AGAIN
;----------------------------------
N0: SETB TR0 ;启动T0计时器
MOV 76H,R7 ;红灯时间存入76H
N00: MOV A,76H ;东西方向禁止,南北方向通行
MOV R3,A
MOV DPTR,#0000H ;置8255A口,东西方向红灯亮,南北方向绿灯亮
MOV A,#0DDH
MOVX @DPTR, A
N01: JB P2.0,B0
N02: SETB P3.0
CJNE R3,#00H,N01 ;比较R3中的值是否为0,不为0转到当前指令处执行
;------黄灯闪烁5秒程序------
N1: SETB P3.0
MOV R3,#05H
MOV DPTR,#0000H ;置8255A口,东西,南北方向黄灯亮
MOV A,#0D4H
MOVX @DPTR,A
N11: MOV R4,#00H
N12: CJNE R4,#7DH,$ ;黄灯持续亮0.5秒
N13: MOV DPTR,#0000H ; 置8255A口,南北方向黄灯灭http://www.5imcu.net/sylyuan.asp
MOV A,#0DDH
MOVX @DPTR,A
N14: MOV R4,#00H
CJNE R4,#7DH,$ ;黄灯持续灭0.5秒
CJNE R3,#00H,N1 ;闪烁时间达5秒则退出
;-----------------------------------
N2: MOV R7,#00H
MOV A,R0 ;东西通行,南北禁止
MOV R3,A
MOV DPTR,#0000H ; 置8255A口,东西方向绿灯亮,南北方向红灯亮
MOV A,#0EBH
MOVX @DPTR,A
N21: JB P2.0,T03

N22: CJNE R3,#00H,N21
;------黄灯闪烁5秒程序------
N3: MOV R3,#05H
MOV DPTR,#0000H ;置8255A口,东西,南北方向黄灯亮
MOV A,#0E2H
MOVX @DPTR,A
N31: MOV R4,#00H
CJNE R4,#7DH,$ ;黄灯持续亮0.5秒
N32: MOV DPTR,#0000H ; 置8255A口,南北方向黄灯灭
MOV A,#0EBH
MOVX @DPTR,A
N33: MOV R4,#00H
CJNE R4,#7DH,$ ;黄灯持续灭0.5秒
CJNE R3,#00H,N3 ;闪烁时间达5秒则退出
SJMP N00
;------闯红灯报警程序------
B0: MOV R2,#03H ;报警持续时间3秒
B01: MOV A,R3
JZ N1 ;若倒计时完毕,不再报警
CLR P3.0 ;报警
CJNE R2,#00H,B01 ;判断3秒是否结束
SJMP N02
;------1秒延时子程序-------
N7: RETI
T0_INT:MOV TL0,#9AH ;给定时器T0送定时10ms的初值
MOV TH0,#0F1H
INC R4
INC R5
CJNE R5,#0FAH,T01 ;判断延时是否够一秒,不够则调用显示子程序
MOV R5,#00H ;R5清零
DEC R3 ;倒计时初值减一http://www.duankudp.com/
DEC R2 ;报警初值减一
T01: ACALL DISP ;调用显示子程序
RETI ;中断返回
;------显示子程序------
DISP: JNB P2.4,T02
DISP1: MOV B,#0AH
MOV A,R3 ;R3中值二转十显示转换
DIV AB
MOV 79H,A
MOV 7AH,B
DIS: MOV A,79H ;显示十位
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV DPTR,#0002H
MOVX @DPTR,A
MOV DPTR,#0001H
MOV A,#0F7H
MOVX @DPTR,A
LCALL DELAY
DS2: MOV A,7AH ;显示个位
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV DPTR,#0002H
MOVX @DPTR,A
MOV DPTR,#0001H
MOV A,#0FBH
MOVX @DPTR,A
RET
;------东西方向车流量检测程序------
T03: MOV A,R3
SUBB A,#00H ;若绿灯倒计时完毕,不再检测车流量http://www.duankudp.com/
JZ N3
JB P2.0,T03
INC R7
CJNE R7,#64H,E1
MOV R7,#00H ;中断到100次则清零
E1: SJMP N22
;------东西方向车流量显示程序------
T02: MOV B,#0AH
MOV A,R7 ;R7中值二转十显示转换
DIV AB
MOV 79H,A
MOV 7AH,B
DIS3: MOV A,79H ;显示十位http://www.duankudp.com/
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV DPTR,#0002H
MOVX @DPTR,A
MOV DPTR,#0001H
MOV A,#0F7H
MOVX @DPTR,A
LCALL DELAY
DS4: MOV A,7AH ;显示个位
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV DPTR,#0002H
MOVX @DPTR,A
MOV DPTR,#0001H
MOV A,#0FBH
MOVX @DPTR,A
LJMP N7
;------延时4MS子程序----------
DELAY: MOV R1,#0AH
LOOP: MOV R6,#64H
NOP
LOOP1: DJNZ R6,LOOP1
DJNZ R1,LOOP
RET
;------字符表------
TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
END

关键字:汇编语言  交通灯程序 引用地址:汇编语言的交通灯程序

上一篇:AT89C52单片机+AT24C02+1602构成的密码锁
下一篇:一款简洁的单片机交通灯程序

推荐阅读最新更新时间:2024-03-16 14:37

如何在C51文件和汇编语言文件中相互调用对方的函数?
如何在C51文件和汇编语言文件中相互调用对方文件中的函数? 答:汇编语言文件中对于函数的调用方法,与调用汇编语言中的函数一样,如: LCALL DISPLAY 在C语言文件中调用汇编语言中的函数,必须先声明再调用。声明格式如下: extern 返回值类型 函数名(参数表); 例如: extern unsigned char right_shift ( char, char );
[单片机]
利用C和汇编语言混合编程实现DSP软件设计
众所周知,汇编语言具有更高的性能优势,而用C语言编码则能更容易和快速地实现。DSP处理器功能的不断增强以及编译器优化技术的提高,使得传统的用汇编语言编写DSP应用程序的做法逐渐被淘汰。现在的DSP应用程序几乎都是由C代码和汇编代码混合组成的。在那些对性能起决定性作用的关键功能中,DSP工程师将继续使用高度优化的汇编代码,同时转用C语言编写那些不太关键的功能,这将有利于代码维护和移植。而C和汇编代码的这种结合要求DSP工程师具备专门的工具和方法。 正确混合C代码和汇编代码 问题是在哪里划分C代码和汇编代码的界限。这取决于跟踪器(profiler)所能提供的性能分析结果。然而在使用跟踪器之前,DSP工程师需要为应用程序定义清晰的目标,
[嵌入式]
利用C和<font color='red'>汇编语言</font>混合编程实现DSP软件设计
MCS-51单片机汇编语言学习笔记
ACC 与 A 的区别 通俗的解释为:ACC是地址为E0H的寄存器,A是标准的无地址的累加器 当其要进行位表示时,必须用ACC,比如要写成ACC.7,而不能写成A.7;但当其作为8位二进制数时,ACC和A都能用,但还是有区别:比如 INC ACC和INC A 都能用,还有PUSH ACC,POP ACC不可以写成PUSH A和POP A //a 0时 Y = a - b //a 0时 Y = a + b //把结果Y放到 累加器20H单元 ORG 1000H START: MOV A, # a //立即数a送到累加器中 MOV B, # b //立即数b送到寄存器B中
[单片机]
分享一些单片机汇编语言常见的语法和程序错误
一、汇编软件汇编失败原因分析 这里采用Keil C51软件包中的宏汇编器A51作为编绎器,单片机的汇编语言编写时要注意一定的语法,详细介绍可以参考相关参考书,语法错误会造成汇编失败,常见的汇编错误如下: 1. 标号重复:常见于复制、粘贴程序时忘记修改标号,造成出现多个相同的标号,标号是不允许重复的。 2.标点符号以全角方式输入:汇编程序要求标点符号为半角方式,否则汇编失败。可以在输入:,;时切换到半角方式,或者在大写状态输入标点符号,这也是很容易犯而且不容易发觉的错误。 3.数值#FFH 前遗漏0:根据要求应该在a~f前加0,写成#0FFH 4.字母O和数字0搞混:有时候这两个字看上去完全相同,要注意哦~~ 5.标号后边遗漏 :
[单片机]
分享一些单片机<font color='red'>汇编语言</font>常见的语法和<font color='red'>程序</font>错误
选择法排序单片机汇编语言编程举例
例:选择法排序(降序) N EQU 10 FIR EQU 40H SORT: MOV A,#N ; DEC A MOV R7,A ;外循环数 MOV A,#FIR MOV R0,A ;数组首址 NEXT0: PUSH ACC ;保存本轮第一个字节地址 MOV A,R7 MOV R6,A ;内循环数 MOV A,@R0 ;取第一个字节 NEXT1: INC R0 MOV B,@R0 CJNE A,B,L1 ;第一个字节与另一字节比较 SJMP L2 L1:JC L2 ;大于或等于,不交换 XCH A,@R0 ;小于,交换 DJNZ R6,NEXT1 ;较小的字节在A中,取下一字节与它比较。
[单片机]
汇编语言 在存储单元中显示字符串
第一种方式使用字符串存储 assume cs:code data segment db 'my name is vvcat!' ; 源串 data ends stack segment stack dw 0, 0, 0, 0, 0, 0, 0, 0 dw 0, 0, 0, 0, 0, 0, 0, 0 dw 0, 0, 0, 0, 0, 0, 0, 0 dw 0, 0, 0, 0, 0, 0, 0, 0 stack ends code segment start: mov ax, data mov ds, ax mov ax, 4C00H int 21H
[单片机]
<font color='red'>汇编语言</font> 在存储单元中显示字符串
51单片机汇编语言实例2
简介:上面的单片机系统和汇编语言控制指令,很容易被更改为多口、多位的单键控制系统。图5为多个LED灯-单个按键的运行结果与汇编语言。图6中对P2.0口改用双掷开关,实现P2.0口的两种电平状态。 a)单个按键与多个LED灯(位操作—输入与字节操作—输出)—判断与子程序 此处只是将输出指令由位指令换成了字节指令,而输入判断仍然是位判断指令。 ORG 0000H MAIN: ;CLR C MOV C,P2.0 ;获取P2.0位状态送位累加器;位与字节转换需要判断指令 JNC ZIJIE;JC位累加器—进位位为1转移到ZIJIE , JNC位累加器为0转移到ZIJIE
[单片机]
51单片机<font color='red'>汇编语言</font>实例2
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved