求一个用汇编语言编写单片机简易交通灯程序。求高手帮下忙谢谢了。

作者&投稿:仲孙很 (若有异议请与网页底部的电邮联系)
单片机高手帮下忙~

编写了一个,不知道合适否,可以看看:

http://hi.baidu.com/%D7%F6%B6%F8%C2%DB%B5%C0/blog/item/11c04d085cbbb52f6a60fba1.html

1,c2.b3,b4.a5v6a7a8a9b10a

;------------------------------------
;程序实现功能
;西南北路口直行与转弯交替通行,数码管显示直行通行倒计时,红绿黄灯显示包括人行道在内的道路交通状态。
;某一方向道路拥挤时,可以人工控制调节东西南北方向通行时间。
;紧急情况时,各路口交通灯显示红灯,数码管保持数据不变。

;工作寄存器及存储单元分配
;1.工作寄存器
;R2设置为定时器定时中断次数,R6、R7用于延时程序中的寄存器

;2.片内存储单元
;30H、31H作为两组数码管显示数据存储单元;32H、33H作为交通灯初始状态存储单元;40H、41H作为交通灯显示数据存储单元

;3.标志位
;00H:南北通行标志位 ; 01H:东西通行标志位;02H:紧急事件标志位
;-----------------------------------
SNF EQU 00H ;;;南北通行标志位
EWF EQU 01H ;;;东西通行标志位
URF EQU 02H ;;;紧急事件标志位
ORG 0000H
LJMP MAIN ;;;上电转主程序
ORG 000BH ;;;定时中断入口
LJMP DSZD
ORG 0003H ;;;紧急中断入口
LJMP URZD
ORG 0030H
MAIN: LCALL INIT ;;;调用初始化子程序
LOOP: LCALL DIS ;;;循环执行显示子程序
AJMP LOOP
;///////////初始化程序
INIT: SETB SNF
SETB EWF
SETB URF
MOV R2,#20 ;;;定时器中断20次为1s
MOV TMOD,#01H ;;;初始化定时器
MOV TL0,#0B0H
MOV TH0,#3CH
SETB EA ;;;开定时中断与紧急中断
SETB ET0
SETB TR0
SETB EX0
SETB IT0 ;;;设置中断程控方式
MOV DPTR,#TAB ;;;数值首地址放入DPTR中
MOV 40H,#40 ;;;东南西北通行时间设置
MOV 41H,#40
MOV 30H,#40 ;;;通行时间初始化
MOV 31H,#60
MOV P0,#4CH ;;;初始化时南北通行并把交通灯状态分别放在32H和33H中
MOV 32H,#4CH
MOV P2,#15H
MOV 33H,#15H
RET
;////////////显示子程序
DIS: MOV P3,#0DFH ;;;选中南北方向的十位数码管
MOV A,30H ;;;把显示数据送人数码管显示
MOV B,#10
DIV AB
MOVC A,@A+DPTR
MOV P1,A ;;;
LCALL D1MS
MOV P3,#0EFH ;;;选中南北方向的个位数码管
MOV A,B ;;;送入数码管显示
MOVC A,@A+DPTR
MOV P1,A
LCALL D1MS

MOV P3,#7FH ;;;选中第东西方向的十位数码管
MOV A,31H ;;;送入数码管显示
MOV B,#10
DIV AB
MOVC A,@A+DPTR
MOV P1,A
LCALL D1MS
MOV P3,#0BFH ;;;选中第东西方向的个位数码管
MOV A,B
MOVC A,@A+DPTR
MOV P1,A
LCALL D1MS
SETB P3.0
SETB P3.1
JNB P3.0,DIS_S ;;;查询是否第一个按键按下
JNB P3.1,DIS_E ;;;查询是否第二个按键按下
AJMP DIS_R ;;;没有键按下则返回
DIS_S:LCALL D5MS ;;;按键去抖
JNB P3.0,DIS_SN
AJMP DIS_R
DIS_SN:MOV 40H,#50 ;;;对通行时间从新分配,南北通行时间加长
MOV 41H,#30
AJMP DIS_R
DIS_E:LCALL D5MS ;;;按键去抖
JNB P3.1,DIS_EW
AJMP DIS_R
DIS_EW:MOV 40H,#30 ;;;东西通行时间加长
MOV 41H,#50
DIS_R:RET
;///////定时中断处理程序
DS_C: LJMP DS_R ;;;接力跳转
DSZD: PUSH ACC ;;;保护现场
PUSH PSW
CLR TR0 ;;;关定时器及中断标志位并重新赋值
CLR TF0
MOV TL0,#0B0H
MOV TH0,#3CH
DJNZ R2,DS_C ;;;判断1m时间是否到达
MOV R2,#20 ;;;到达重新赋值
DEC 30H ;;;南北方向通行时间减一
MOV A,30H ;;;把减一后的时间送入显示存储单元
;;;;;;;南北通行到达最后4秒时黄灯闪烁
DS_10:CJNE A,#4,DS_11 ;;;如果通行时间剩余4秒
JNB SNF,DS_11 ;;;判断是否是南北通行
MOV P0,#8AH
MOV 32H, #8AH ;;;把交通灯状态存入存储单元(后面类似)
DS_11:CJNE A,#3,DS_12 ;;;不是剩余3秒,返回
JNB SNF,DS_12 ;;;不是南北通行时间,返回
MOV P0,#88H
MOV 32H, #88H
DS_12:CJNE A,#2,DS_13
JNB SNF,DS_13
MOV P0,#8AH
MOV 32H, #8AH
DS_13:CJNE A,#1,DS_14
JNB SNF,DS_14
MOV P0,#88H
MOV 32H, #88H
;------------------------
DS_14:JNZ DS_NE ;;;通行时间没有结束转向改变东西方向的数码管
CPL SNF ;;;如果通行时间结束则对标志位取反
JNB SNF,DS_1 ;;;判断是否南北通行
MOV 30H,40H ;;;是,点亮相应的交通灯
MOV P0,#4CH
MOV 32H,#4CH ;;;存储交通灯状态
MOV P2,#15H
MOV 33H, #15H ;;;存储交通灯状态
DS_NE:DEC 31H ;;;东西方向通行时间减一
MOV A,31H ;;;把通行剩余时间送入显示存储单元
;;;;;;;;东西方向通行时间剩余4秒钟黄灯闪烁(程序注释与南北方向类似 略)
DS_20:CJNE A,#4,DS_21
JB EWF,DS_21
MOV P0,#51H
MOV 32H, #51H
DS_21:CJNE A,#3,DS_22
JB EWF,DS_22
MOV P0,#41H
MOV 32H, #41H
DS_22:CJNE A,#2,DS_23
JB EWF,DS_23
MOV P0,#51H
MOV 32H, #51H
DS_23:CJNE A,#1,DS_24
JB EWF,DS_24
MOV P0,#41H
MOV 32H, #41H
;-----------------------------
DS_24:JNZ DS_R ;;;东西方向时间没有结束,返回
CPL EWF ;;;对通行状态取反
JNB EWF,DS_2 ;;;东西方向通行时间到来,跳转
MOV 31H,#80 ;;;东西方向通行结束,重新显示时间
MOV P0,#89H ;;;点亮相应的交通灯
MOV 32H, #89H
MOV P2,#29H
MOV 33H, #29H
AJMP DS_R
DS_1: MOV 30H,#80 ;;;南北通行时间结束,重新对显示存储单元赋值
MOV P0,#89H ;;;执行转弯状态1
MOV 32H, #89H
MOV P2,#26H
MOV 33H, #26H
AJMP DS_NE
DS_2: MOV 31H,41H ;;;东西方向开始通行,赋值予显示存储单元
MOV P0,#61H ;;;点亮相应的交通灯
MOV 32H, #61H
MOV P2,#15H
MOV 33H, #15H
DS_R: SETB TR0
POP PSW ;;;恢复现场
POP ACC
RETI
;/////////////紧急中断处理程序
URZD: PUSH ACC ;;;保护现场
PUSH PSW
CLR IE0 ;;;清除中断标志位
CLR TR0 ;;;关定时器
CPL URF ;;;紧急事件标志位
JB URF,UR_CON ;;;紧急结束;跳转
MOV P0,#49H ;;;各路口灯全显示红灯亮
MOV P2,#15H
AJMP UR_R
UR_CON:SETB TR0 ;;;恢复正常交通
MOV A,32H
MOV P0,A
MOV A,33H
MOV P2,A
UR_R: POP PSW ;;;恢复现场
POP ACC
RETI
;////////////查表指令0,1,2,3,4,5,6,7,8,9
TAB: DB 3FH, 06H, 5BH, 4FH, 66H, 6DH
DB 7DH, 07H, 7FH, 6FH

;//////////延时5ms与1ms
D5MS: MOV R7,#5
D1MS: MOV R7,#10
MOV R6,#50
L1: DJNZ R6,$
DJNZ R7,L1
RET
END

最简单的单片机交通信号灯

单片机要求使用 AT89C51,信号灯连接电路如下:

东西:绿灯P0.0 黄灯P0.1 红灯P0.2
南北:绿灯P0.5 黄灯P0.6 红灯P0.7

运行步骤:
开始

东西 南北 都是红灯

步骤(1)
南北绿灯亮15s,东西红灯亮15s。
南北黄灯亮 3s,东西红灯亮 3s。
南北红灯亮15s,东西绿灯亮15s。
南北红灯亮 3s,东西黄灯亮 3s。
循环步骤(1)

;============================================
用汇编语言编写的程序如下,在12MHz的条件下,已经通过了仿真调试。
;--------------------------------------------
ORG 0000H
MOV P0, #01111011B ;P0.7=P0.2=0, 东西 南北 都是红灯.
CALL DL3S
LOOP:
MOV P0, #11011011B ;P0.5=P0.2=0, 南北绿 东西红.
CALL DL15S
MOV P0, #10111011B ;P0.6=P0.2=0, 南北黄 东西红.
CALL DL3S
MOV P0, #01111110B ;P0.7=P0.0=0, 南北红 东西绿.
CALL DL15S
MOV P0, #01111101B ;P0.7=P0.1=0, 南北红 东西黄.
CALL DL3S
SJMP LOOP
;--------------------------------------------
DL15S:
MOV R4, #5
DL2:
CALL DL3S
DJNZ R4, DL2
RET
;--------------------------------------------
DL3S: ;延时3s,实测3.03s
MOV R5, #23
DL3:
MOV R6, #0
DL4:
MOV R7, #0
DL5:
DJNZ R7, DL5
DJNZ R6, DL4
DJNZ R5, DL3
RET
END
;============================================
电路图,可以搜索:
做而论道 最简单的单片机交通信号灯
百度一下,即可找到。

;----------------------------
RED_EW BIT P1.0
YELLOW_EW BIT P1.1
GREEN_EW BIT P1.2
RED_NS BIT P1.3
YELLOW_NS BIT P1.4
GREEN_NS BIT P1.5
CNT EQU 30H
LP_CNT EQU 31H
;----------------------------
ORG 0000H
LJMP STA
ORG 0030H
STA:
CLR EA
MOV CNT,#5
CLR RED_EW
CLR RED_NS
MOV R7,#20
LCALL DELAY
MOV LP_CNT,#0
LOOP:
LCALL DISPLAY
SJMP LOOP
;----------------------------
DISPLAY:
MOV A,LP_CNT
DISPLAY0: ;状态1
JNZ DISPLAY1

SETB RED_NS
SETB YELLOW_NS
CLR GREEN_NS

CLR RED_EW
SETB YELLOW_EW
SETB GREEN_EW

MOV R7,#20
LCALL DELAY
MOV LP_CNT,#1
RET
;----------------------------
DISPLAY1: ;状态2
DEC A
JNZ DISPLAY2
SETB RED_NS
CLR YELLOW_NS
CPL GREEN_NS

CLR RED_EW
SETB YELLOW_EW
SETB GREEN_EW
MOV R7,#3
LCALL DELAY
DEC CNT
MOV A,CNT
JZ DISPLAY11
RET
DISPLAY11:
MOV LP_CNT,#2
MOV CNT,#5
RET
;----------------------------
DISPLAY2: ;状态3
DEC A
JNZ DISPLAY2

CLR RED_NS
SETB YELLOW_NS
SETB GREEN_NS

SETB RED_EW
SETB YELLOW_EW
CLR GREEN_EW
MOV R7,#20
LCALL DELAY
MOV LP_CNT,#3
RET
;----------------------------
DISPLAY3: ;状态4
DEC A
JNZ DISPLAY2

CLR RED_NS
SETB YELLOW_NS
SETB GREEN_NS

SETB RED_EW
SETB YELLOW_EW
CPL GREEN_EW
MOV R7,#3
LCALL DELAY
DEC CNT
MOV A,CNT
JZ DISPLAY31
RET
DISPLAY31:
MOV LP_CNT,#0
MOV CNT,#5
RET
;----------------------------
DELAY:
MOV R0,#200
DELAY1:
MOV R1,#250
DJNZ R1,$
DJNZ R0,DELAY1
DJNZ R7,DELAY
RET
;----------------------------
END

c的要不要

我有 采纳 米我


求一个用汇编语言编写单片机简易交通灯程序。求高手帮下忙谢谢了...
MOV P3,#0BFH ;;;选中第东西方向的个位数码管 MOV A,B MOVC A,@A+DPTR MOV P1,A LCALL D1MS SETB P3.0 SETB P3.1 JNB P3.0,DIS_S ;;;查询是否第一个按键按下 JNB P3.1,DIS_E ;;;查询是否第二个按键按下 AJMP DIS_R ;;;没有键按下则...

用汇编语言编写一个小程序(比如hello,word!)请懂的人帮忙提供源码_百度...
您正在看的汇编语言是:hello,world!win32汇编小程序。bsp; \/\/ style of message box );所以会有我们的程序段:push MB_OK lea eax,szCaption push eax lea eax,szText push eax push NULL call messageboxa 看看上面的程序,不难想到,假如在写程序时,少往堆栈里压入一个数据,那将是一个...

汇编语言编写一个扬声器发声程序,扬声器的端口号为61H,用循环结构使其...
很简单,在DEBUG下敲入以下指令即可:-u100 0AF5:0100 E461 IN AL,61 0AF5:0102 3402 XOR AL,02 0AF5:0104 E661 OUT 61,AL 0AF5:0106 B900FF MOV CX,FF00 0AF5:0109 90 NOP 0AF5:010A E2FD LOOP 0109 0AF5:010C B401 MOV AH,01 0...

汇编语言 编写一个程序,将AL寄存器中的一位十六进制数转化成ASCII码...
;将AL寄存器中的一位十六进制数转化成ASCII码,显示输出。;推荐答案,写的并非是一位。;程序如下:ASSUME CS:CODE CODE SEGMENT START:MOV AL, 0FH ;在这里可写 00H~0FH,这就是一位16进制数 AND AL, 0FH ;无用位清零,保留该数字 ;下面是变成ASCII码 CMP AL, 0AH JB NEXT ADD...

用汇编语言编写一个程序
print msg1 ;显示“请输入……”lea dx,buffer mov ah,0ah int 21h lea bx,buffer+2 ;下面几句是利用输入串的长度,来找到该串的尾部,以便填写一个'$'用做显示时的结束。mov al,[bx-1]xor ah,ah add bx,ax mov al,24h mov [bx],al print CRLF print msg...

用汇编语言用汇编语言编写从键盘上输入N个学生的成绩,然后按成绩降序输 ...
===; 键盘输入数值数组子程序(数组名为@array,元素个数存放在@num中); 可以是负数; 采用字符串缓冲方式输入 INPUTNUM PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DX PUSH SI PUSH DI PUSHF ...

试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来...
程序不是很难,建议你自己写,这题的关键就是一个大小写转换问题,大写字母从41h~5Ah,小写字母从61h~7Ah,规律就是小写字母比大写字母的ASCII码大20h,所以可以用减20h实现小写转换为大写,另外还有一个方法就是,如果注意观察可以发现小写字符ASCII码2进制表示时bit5为1,而大写字母bit5为0,所以...

汇编语言编写一个子程序,将键盘输入的十进制数字分别转换为大写的英文字...
;将(0~9)分别转化为大写的英文字符A~J。对应关系是0转换为A;1转换为B;2转换为C;...依次类推 ;。主程序的功能是接收键盘输入的字符。每接收一个阿拉伯数字后就调用数码转换子程序,从而在屏幕;上显示转换后的大写英文字符 ;用MASM5.0编译通过,回车结束程序 data segment CRLF DB 0dh,0ah,...

请教大神,汇编语言,编写一个统计AX中1的个数的程序,统计结果放在CL中...
ASSUME CS:CODE CODE SEGMENT START:MOV AX,1110011111110001B;假设现在AX有11个1 XOR CX,CX;将CX清零 MOV CH,16 NEXT:TEST AX,0001H; TEST和AND的功能差不多,只是TEST不改变AX的值 ;让0000 0000 0000 0001和AX相与 ;如果结果是0,说明AX的第0位是0 ;否则,说明第0位是1 JZ isZERO ...

51单片机汇编语言编写一个跑马灯的程序,初学者做实验用,具体要求如下...
程序1:ORG 0000H LJMP MAIN ORG 0030H MAIN:MOV SP,#5FH LOOP:MOV A,P2 MOV B,A MOV P0,A MOV P1,#0FFH LOOP1:LCALL DELAY MOV C,P1.7 MOV A,P0 RLC A MOV P0,A MOV A,P1 RLC A MOV P1,A MOV A,P2 CJNE A,B,LOOP SJMP LOOP1 DELAY:MOV R2,#60 DELAY1:MOV R3,#...

省直辖县级行政单位18249342133: 求高手帮忙写一个汇编语言的简易交通灯程序 -
代李骨力: 最简单的单片机交通信号灯 单片机要求使用 AT89C51,信号灯连接电路如下:东西:绿灯P0.0 黄灯P0.1 红灯P0.2 南北:绿灯P0.5 黄灯P0.6 红灯P0.7 运行步骤:开始 ↓ 东西 南北 都是红灯 ↓ 步骤(1) 南北绿灯亮15s,东西红灯亮15s.南北黄...

省直辖县级行政单位18249342133: 求交通灯控制汇编语言程序 -
代李骨力: 基于单片机的简易交通灯控制系统汇编语言程序 ORG 0000H LJMP MAIN ORG 000BH LJMP TT0 ORG 001BH LJMP TT1 ORG 0030H MAIN: MOV R6,#100 ;主程序 MOV DPTR,#BLOCK MOV SCON,#0H CLR F0 MOV TMOD,#12H ;初始化 ...

省直辖县级行政单位18249342133: 谁能帮忙编用单片机汇编语言写一个交通灯程序啊 -
代李骨力: 你用什么单片机的?不同的单片机汇编语法不同.不过你这个程序很简单,只需要几个置I/O的指令和2个延迟子程序.单片机上电初始化之后,按逻辑写就可以了,大循环完成之后再进行跳转,不断重复.以上,希望能帮到你.

省直辖县级行政单位18249342133: 交通灯 汇编语言 -
代李骨力: 在你的主程序一开始就把INT0设为0CLR INT0 ;设INT0=0 SETB EA ;开启中断致能 SETB EX0 ;允许外部中断 到了这里程序就中断了

省直辖县级行政单位18249342133: 用51单片机制作红绿灯,要求按键能控制整个电路的启动和停止,用汇编语言怎么编写程序?
代李骨力: 交通路口红绿灯自动控制器电路图 如图所示为交通路口红绿灯自动控制电路.该控制器主要由四块555(IC2~IC5)和一些阻容元件组成的四级单稳态延时电路首尾相连而成.输入的8V电压经78M05稳压后为555提供VDD=+5V的电源电压. 当刚接...

省直辖县级行政单位18249342133: 求单片机交通灯汇编语言 -
代李骨力:ORG 0000H LJMP MAIN ORG 001BH LJMP T1 MAIN: MOV 30H,#00H MOV 31H,#06H MOV 32H,#05H MOV 33H,#05H MOV R0,#100 SETB F0 CLR 20H CLR P1.3 CLR P1.1 MOV TMOD,#10H MOV TL1,#0F0H MOV TH1,#0D8H SETB ET1 ...

省直辖县级行政单位18249342133: 用汇编语言编程,交通信号灯,一定要用汇编语言 -
代李骨力: p1c=0; 全部设置输出; p1.0 EQU DXREDLED 东西红灯 P1.1 EQU DXYELLOWLED 东西黄灯 P1.2 EQU DXgreenLED 东西绿灯 p1.3 EQU nbREDLED 南北红灯 P1.4 EQU nbYELLOWLED 南北黄灯 P1.5 EQU nbgreenLED 南北绿灯 打开定...

省直辖县级行政单位18249342133: 单片机(汇编语言)设计交通灯 -
代李骨力: http://blog.163.com/asm_c/blog/static/24820311320135257560639/可参考一下.

省直辖县级行政单位18249342133: 求编写一段简单的单片机程序,要求如下 -
代李骨力: main() { unsigned char time=0; TMOD = 0x20; // 定时器1工作于8位自动重载模式, 用于产生波特率 TH1 = 0xFD; // 波特率9600 TL1 = 0xFD; SCON = 0x50; // 设定串行口工作方式PCON &= 0xef; // 波特率不倍增 TR1 = 1; // 启动定时器1 IE...

省直辖县级行政单位18249342133: 急急急!求单片机交通灯的控制程序 -
代李骨力: 你参考一下这段程序 希望对你有所帮助 org 0000h ajmp start org 0003h mov p1,#0f6h reti org 0030h start: setb ea setb ex0 clr it0 mov r0,#10 mov p1, #0f3H loop: acall del3 djnz r0 , loop mov r1, #03 lab: mov p1, #0f5h acall del3 mov P1, #0f7h acall ...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网